LNMP环境搭建与配置
lnmp就是 Linux+nginx + mysql + PHP,把Apache替换为Nginx;
这里我用到的Linux环境为为centos,接下来就分步骤来一步步安装及测试。
一、安装php
参考链接:https://zhuanlan.zhihu.com/p/34422328
在安装PHP之前需要安装一些依赖包,执行下面的命令就可以了,如果安装过请忽略
yum install vim gcc gcc++ wget libxml2-devel wget -y
1.下载php
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.36.tar.gz
解压源码包,创建账号
tar zxf php-5.6.36.tar.gz
useradd -s /sbin/nologin php-fpm
其中php-5.6.36就是我们需要用到的压缩包,让我们进入目录进行安装
cd php-5.6.34
然后我们编译PHP文件生成makefile 文件,这里需要普及一个小的知识点,那就是fastcgi;
php本来的请求是,当一个请求出现,PHP会启动一个进程来完成请求,然后关闭,但是这很耗费系统的资源,不符合我们的要求,我们需要php-fpm,然后可以监听php请求 ,如果有请求出现,那么开始提供进程来执行,如果业务多的话会创建一个新的,如果没有多余的请求的时候,php-fpm会释放掉多余的资源,而fastcgi就是php-fpm使用的前提,编译安装的时候必须加上这个参数。所以编译的时候需要加上--enable-fpm 选项
./configure --prefix=/usr/local/php --enable-fpm
./configure 就是就是编译makefile文件的工具 --prefix 就是指定安装PHP到哪个目录,执行完成之后下面的命令
make && make install
我们执行完成./configure 只是把我们的配置写入makefile文件,还没有安装,make 命令就是安装,到此我们就安装完成PHP了;
这时我们可以随意一个目录,建个文件index.php执行测试下
touch index.php
写入内容:
<?php
echo "hello world";
然后保存退出,执行
/usr/local/php/bin/php index.php
这个时候输出hello world就代表文件执行成功,/usr/local/php/bin/php 是PHP文件执行的入口,如果我们要将PHP写如Linux环境变量,需要加入的目录为/usr/local/php/bin
(补充)
添加环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/php/bin
关闭shell窗口后都需要再执行一次source /etc/profile
才能生效,这个问题需要在~/.bashrc
文件最后添加source /etc/profile
,这样问题便得到解决;
二、安装mysql
参考链接:https://www.jianshu.com/p/276d59cbc529
(安装过程务必保持文件路径的前后统一,否则可能会导致不可预期的结果)
1、检查是否已经安装过mysql,执行命令
rpm -qa | grep mysql
如果有安装,则会显示该目录,删除即可:
rpm -e –nodeps 该目录
2、查询所有Mysql对应的文件夹
whereis mysql
存在就删除相关目录文件
rm -rf /usr/lib64/mysql /usr/local/mysql /usr/share/mysql
验证是否检查完毕
whereis mysql
find / -name mysql
3.下载mysql安装包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
也可以直接到mysql官网: https://downloads.mysql.com/archives/community/ 选择对应版本进行下载
在执行wget命令的目录下或你的上传目录下找到Mysql安装包:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
4.执行解压命令
tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
ls
解压完成后,可以看到当前目录下多了一个解压文件,移动该文件到/usr/local/下,并将文件夹名称修改为mysql
mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
(
如果/usr/local/下不存在mysql文件夹,直接执行如下命令,也可达到上述效果:
mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
)
在/usr/local/mysql目录下创建data目录
mkdir /usr/local/mysql/data
更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
5.编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
这里可能会出现这种错误
出现该问题首先检查该链接库文件有没有安装使用,命令进行核查
rpm -qa|grep libaio
运行命令后发现系统中无该链接库文件:
yum install libaio-devel.x86_64
安装成功后,继续运行数据库的初始化命令,此时可能会出现如下错误:
执行如下命令后:
yum -y install numactl
执行无误之后,再重新执行第5步初始化命令,无误之后再进行下一步操作;
运行初始化命令成功后,输出日志如下:
记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码;
6、编辑配置文件my.cnf,添加配置如下:
vi /etc/my.cnf [mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8
lower_case_table_names:是否区分大小写,1表示存储时表名为小写,操作时不区分大小写;0表示区分大小写;不能动态设置,修改后,必须重启才能生效:
character_set_server:设置数据库默认字符集,如果不设置默认为latin1
innodb_file_per_table:是否将每个表的数据单独存储,1表示单独存储;0表示关闭独立表空间,可以通过查看数据目录,查看文件结构的区别;
7、测试启动mysql服务器
/usr/local/mysql/support-files/mysql.server start
这里报错,说明没启动成功,报错原因有多种,要根据其原因去解决
因为没有路径也没有权限,所以创建此路径并授权给mysql用户:
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
再执行启动命令:
说明启动成功;
查看是否存在mysql和mysqld的服务:
ps -ef|grep mysql | grep -v grep
ps -ef|grep mysqld | grep -v grep
8、添加软连接,并重启mysql服务:
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart
登录mysql,修改密码(密码为步骤5生成的临时密码):
mysql -u root -p
setpassword
forroot@localhost
=password('想改的密码');
开放远程连接:
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
9.设置开机自动启动
将服务文件拷贝到init
.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
赋予可执行权限
chmod +x /etc/init.d/mysqld
添加服务
chkconfig --add mysqld
显示服务列表
chkconfig –list
到这mysql安装完成;
三、安装nginx
1.安装nginx之前先安装一个扩展pcre,这个是正则匹配用到的扩展,官方网址:
http://www.pcre.org/,选择自己下载的版本
cd ~
wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
tar zxvf pcre-8.00.tar.gz
cd pcre-8.00
./configure
make & make install
2. 下载nginx
nginx的官方网址:http://nginx.org/,选择下载自己的版本,这里以最新版为例:
cd ~
wget http://nginx.org/download/nginx-1.19.10.tar.gz
tar zxvf nginx-1.19.10.tar.gz
cd nginx-1.19.10
./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00
make & make install
如果出现该错误,重新执行下编译安装
./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00
make & make install
3.然后启动nginx
/usr/local/nginx/sbin/nginx
4. 查看是否已经启动
ps aux | grep nginx
5. 然后访问
127.0.0.1 //如果打印输出Welcome to nginx! 说明安装成功
(个人服务器就访问对应服务器IP)
6. 增加nginx对PHP的支持
假设我设定PHP的目录为
/home/www
打开nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
然后将这段代码改成下面这样(被#号所注释)
location ~ \.php$ {
root /home/www; //网站目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
然后wq保存退出
然后重启php和nginx
/usr/local/nginx/sbin/nginx
(出现这错误,端口被绑定,杀死进程继续启动
fuser -k 80/tcp
)
/usr/local/php/sbin/php-fpm
(如果出现该错误,执行后再执行下重启php
cd /usr/local/php/etc cp php-fpm.conf.default php-fpm.conf
)
打开浏览器,输入
127.0.0.1/index.php
(个人服务器IP)
(
如果出现
首先可以查看nginx错误日志,这里说下配置错误日志:
重启nginx,再访问,可以去查看该日志
cat logs/error_nginx_php.log
这里可以查看下nginx.conf、php-fpm.conf
中的user
和 group
配置项和nginx.conf
文件中的 user
配置项是否一致
这里有各种错误,具体查看错误日志提示去解决即可;文件权限不足等,依个排查
如出现这个错误
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,..
检查nginx.conf下
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
修改为
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
然后重启即可
)
如果输出hello world 代表着成功,lnmp环境已经搭建完毕,具体还是需要自己搭建一遍遇到问题依次排查解决,会比较清晰。
LNMP环境搭建与配置的更多相关文章
- Linux下-LNMP环境搭建博客网站(全过程)
通常我们所说的LNMP是指一个网站基本的组织框架,即Linux系统支持,Nginx静态服务,Mysql数据库支持以及PHP动态编程语言支持.目前Mysql数据库被Oracle数据库分析公司收购,其创始 ...
- LNMP环境搭建:Nginx安装、测试与域名配置
Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件 2.编译安装Nginx (1)安装Nginx依赖函数库pcre pcre为“perl兼容正则表达 ...
- LNMP环境搭建
LNMP环境搭建 Linux + Nginx + MySQL + PHP PHP是一种脚本语言,当前中国乃至世界上使用PHP语言开发的网站非常普遍 Nginx是一个web服务软件,和apache是一类 ...
- 阿里云(ECS)Centos服务器LNMP环境搭建
阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...
- LNMP环境搭建——MySQL篇
The world's most popular open source database 1.Install MySQL root@kallen:~# apt-get install mysql-s ...
- LNMP环境搭建之php安装,wordpress博客搭建
LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...
- LNMP环境搭建之编译安装指南(php-5.3.27.tar.gz)
测试环境:CentOS release 6.5 (Final) 软件安装:nginx mysql-5.5.32-linux2.6-x86_64.tar.gz php-5.3.27.tar.gz ...
- LNMP环境搭建哈哈
经过一番折腾,终于将LNMP环境搭建完成了.本文介绍的LNMP环境是在windows的Oracle VM VirtualBox中的Centos虚拟机上搭建的,各个软件的版本为:Centos7 + Ng ...
- LNMP环境搭建--Centos7
LNMP环境搭建--Centos7 | 刘鹏--博客 盒子 盒子 博客 分类 搜索 文章目录 在Centos7环境安装LAMP环境,备忘哈哈. 准备 首先去官网下载php,nginx 编译安装php ...
随机推荐
- 介绍一款能取代 Scrapy 的 Python 爬虫框架 - feapder
1. 前言 大家好,我是安果! 众所周知,Python 最流行的爬虫框架是 Scrapy,它主要用于爬取网站结构性数据 今天推荐一款更加简单.轻量级,且功能强大的爬虫框架:feapder 项目地址: ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流
在一般的互联网应用中限流是一个比较常见的场景,也有很多常见的方式可以实现对应用的限流比如通过令牌桶通过滑动窗口等等方式都可以实现,也可以在整个请求流程中进行限流比如客户端限流就是在客户端通过随机数直接 ...
- 简析JAVA8函数式接口
一,定义 "有且只有一个抽象方法的接口"----函数式接口的定义. @FunctionalInterface public interface Ifun{ void test(); ...
- 【github】 加速国内 Github 访问,下载,的9种方案!
原文参考 https://mp.weixin.qq.com/s/ptFBjWXj88fsI3Oh6PghRA 1. GitHub 镜像访问 这里提供两个最常用的镜像地址: https://github ...
- ltrim的思考
ltrim的思考 说明 string ltrim( string $str[, string $character_mask] ) 删除字符串开头的空白字符(或其他字符) 案例1 $test = &q ...
- 技术面试问题汇总第002篇:猎豹移动反病毒工程师part2
这次拿三个问题来讨论,是关于调试器的.因为对于反病毒工程师而言,类似于OllyDbg和IDA的使用方法是必须掌握的,但是在面试中又不太方便考察,所以只能对其快捷键或者调试器实现原理之类的问题进行提问. ...
- ACM JAVA大数
有的水题自己模拟下大数就过了,有的各种坑,天知道曾经因为大数wa了多少次....自己最近学者用JAVA,下面是自己总结的JAVA常用知识.. 框架 import java.util.Scanner; ...
- Redhat中网络启动错误解决办法( Failed to start LSB: Bring up/down networking RTNETLINK answers: File exists)
关于Redhat系列中网络启动失败的解决办法 报错: Failed to start LSB: Bring up/down networking. RTNETLINK answ ...
- POJ1328贪心放雷达
题意: 有一个二维坐标,y>0是海,y<=0是陆地,然后只能在y=0的岸边上放雷达,有n个城市需要被监控,问最少放多少个雷达. 思路: 贪心去做就行了,其实题目不 ...
- android 文件存储&SharedPreferences
一.文件存储 文件存储主要是I/O流的操作,没什么好说的,需要注意的是保存文件的各个目录. 下面为常用的目录: public static File getInFileDir(Context cont ...