CentOS 7 搭建 LNMP 环境
安装 Nginx
更新系统
安装任何组件之前,养成更新系统的好习惯。
1 | yum -y update |
安装 Nginx
安装 Nginx 源
CentOS 默认源没有集成 Nginx,我们需要先安装 Nginx 源。
1 | yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm -y |
安装 nginx
1 | yum install -y nginx |
启动 nginx
1 | systemctl start nginx |
配置系统防火墙
修改接口区域并查看已开放的端口
block
区域不开放任何端口,设置好需要重载一下配置。后续操作,请注意区域设置。
1 | # 将接口添加到区域,默认接口都在public。 |
查看端口:
1 | firewall-cmd --list-ports |
开启 80 端口
命令:firewall-cmd –zone=作用域 –add-port=端口和访问类型 –permanent(永久生效,缺省该参数为临时生效。)
1 | firewall-cmd --zone=public --add-port=80/tcp --permanent |
重启防火墙
1 | firewall-cmd --reload |
重启防火墙后,使用前面查看已开放的端口可以看见 80 端口已经开启。
附:防火墙常用操作指令
1)、停止防火墙。
1 | systemctl stop firewalld.service |
2)、禁止防火墙开机启动。
1 | systemctl disable firewalld.service |
3)、删除开启的端口。
命令:firewall-cmd –zone=作用域 –remove-port=端口和访问类型 –permanent(永久生效,缺省该参数为临时生效。)
1 | firewall-cmd --zone=public --remove-port=80/tcp --permanent |
4)、指定 IP 与端口。
1 | firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.8.2" port protocol="tcp" port="22" accept" |
5)、指定 ip 段可以访问
1 | firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.8.0/24" port protocol="tcp" port="22" accept" |
6)、指定 ip 地址开放所有端口
1 | firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.8.8" port protocol="tcp" port="0-65535" accept" |
7)、查看配置结果
1 | firewall-cmd --list-all |
8)、删除规则
1 | firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.8.2" port protocol="tcp" port="22" accept" |
测试 Nginx
本机输入:http://127.0.0.1/
或者远程访问服务器 IP 地址 http://服务器 IP 地址/
,可以看见以下界面:
安装 MariaDB 数据库
参见:
安装 PHP
安装 PHP
安装 PHP
参见:
上文安装的 PHP 是 5.6 版本。本次环境搭建采用 7.2 版本,在安装的时候指定安装 72 版本(将 56
换成 72
即可)。
1 | yum install -y php72w php72w-opcache php72w-xml php72w-mcrypt php72w-gd php72w-devel php72w-mysql php72w-intl php72w-mbstring |
设置 Session 文件夹权限
1 | vim /etc/php.ini |
1 | ;该行是否注释掉。如果已注释把前面的 ; 去掉。 |
PHP 7.2 session.save_path
默认设置为 /var/lib/php/session
,如不修改该文件夹可以忽略以上两步,直接设置文件夹权限即可。
1 | # 设置 session 目录权限 |
安装 php-fpm
安装 php-fpm
Nginx 支持 php 解析需要安装 php-fpm。
1 | yum install php72w-fpm |
配置 php-fpm
1 | nano /etc/php-fpm.d/www.conf |
将
1 | user = apache |
修改为
1 | user = nginx |
启动 php-fpm 和设置开机自启动
1 | systemctl start php-fpm |
配置 Nginx 支持 PHP
编辑 Nginx 的配置文件:
1 | nano /etc/nginx/conf.d/default.conf |
修改以下代码,加入 index.php
默认页配置:
1 | location / { |
将以下代码前面的注释去掉:
1 | #location ~ \.php$ { |
并修改为:
1 | location ~ \.php$ { |
Nginx 和 PHP-FPM 的进程间通信有两种方式,一种是 TCP,一种是 UNIX Domain Socket。
其中 TCP 是 IP 加端口,可以跨服务器。而 UNIX Domain Socket 不经过网络,只能用于 Nginx 跟 PHP-FPM 都在同一服务器的场景。
用哪种取决于你的 PHP-FPM 配置:
方式 1:
1 | # 打开 php-fpm 配置文件 |
1 | # 打开 nginx 配置文件 |
方式 2:
1 | # 打开 php-fpm 配置文件 |
1 | # 打开 nginx 配置文件 |
其中 php-fpm.sock 是一个文件,由 php-fpm 生成,默认类型是 srw-rw—-,修改 listen.mode = 0666 之后,类型是 srw-rw-rw-。
测试 PHP
在 /usr/share/nginx/html
文件夹创建测试文件 info.php:
1 | nano /usr/share/nginx/html/info.php |
输入测试代码:
1 | phpinfo(); |
本机输入:http://127.0.0.1/info.php
或者远程访问服务器 IP 地址 http://服务器 IP 地址/info.php
,可以看见以下界面:
安装 phpMyAdmin
CentOS 默认源自带的 phpMyAdmin 不支持 php7.2, 如果直接安装,会提示以下安装错误。我们需要手动安装 phpMyAdmin。
1 | 错误:php72w-common conflicts with php-common-5.4.16-46.el7.x86_64 |
下载和安装 phpMyAdmin
1 | # 进入 nginx 根目录 |
访问 phpMyAdmin
在浏览器输入 http://127.0.0.1/phpMyAdmin 登录 phpMyAdmin:
配置 $cfg[‘TempDir’] 权限
phpMyAdmin 为了提高性能需要写入临时文件,否则系统会出现提示 变量 $cfg['TempDir'] (./tmp/)无法访问。phpMyAdmin无法缓存模板文件,所以会运行缓慢。
,可以进行以下配置去掉该提示信息。
1 | # 进入 phpMyAdmin 安装目录 |
设置 Cookie 身份验证加密密码
phpMyAdmin 加强了密码认证,需要设置一个身份验证加密密码。否则系统首页会提示 配置文件现在需要一个短语密码。
,如果不想看见该提示可以进行以下设置。
1 | # 创建 phpMyAdmin 配置文件: |
查找以下代码,设置 32 位长度的加密密码。
1 | cfg['blowfish_secret'] = 'abcdefghijklmnopqrstuvwxyz123456'; |
点击 这里 生成 32 位长度密码。
开启 phpMyAdmin 高级功能
phpMyAdmin 首页会提示 phpMyAdmin 高级功能尚未完全设置,部分功能未激活。
,点击后面的 查找原因 进入下一个页面。
系统提示创建一个名为'phpmyadmin'的数据库,并在那里设置phpMyAdmin配置存储。
,点击前面的创建来新建 phpmyadmin 数据库。
此时,phpMyAdmin 首页不再提示高级功能尚未完全设置。但高级功能还是未开启,还需要配置 config.inc.php
启用设置。
1 | vim /usr/share/nginx/html/phpMyAdmin/config.inc.php |
将以下代码前面的注释 //
取消即可。
1 | /* Storage database and tables */ |
Nginx 和 php-fpm 的用户和用户组
修改用户和用户组
nginx 用户和用户组配置文件
1 | vim /etc/nginx/nginx.conf |
1 | # 默认用户名是 nginx,如需指定用户组格式为:user username usergroup |
php-fpm 用户和用户组配置文件
1 | vim /etc/php-fpm.d/www.conf |
1 | // 默认用户和用户组是 apache |
修改目录权限
如果变更了用户或用户组,还需要修改以下目录权限。
1 | # nginx的日志目录 /var/log/nginx |
生产环境建议设置为 nobody,需要写入的权限通过指令
chmod -R 777 目录名
修改。