[toc]
lnmp平台
1.lnmp简介
LNMP就是Linux+Nginx+MySQL+PHP,Linux作为服务器的操作系统,Nginx作为Web服务器、PHP作为解析动态脚本语言、MySQL即为数据库。
-
Linux作为服务器的操作系统。
-
Nginx作为WebServer服务器。
-
PHP 作为动态解析服务(php)。
-
MySQL作为后端存储数据库服务。
2.fastcgi协议
Nginx服务本身不能处理PHP的请求,用户发起PHP动态请求, Nginx处理过程如下
用户-->http协议-->Nginx-->fastcgi协议-->php-fpm
fastcgi是nginx连接php-fpm之间的协议
nginx结合PHP FastCGI运行原理图
1.用户发起的所有请求会先抵达LNMP架构中的Nginx
2.如果用户请求的是静态内容,则Nginx直接响应并处理
3.如果用户请求的是动态内容,则通过fastcgi协议发送至php-fpm管理进程
4.php-fpm接收到请求后,会派生对应的wrapper线程,来解析用户请求的动态内容
5.如果涉及到查询数据库操作,则需要php先连接数据库,然后进行查询操作(php-mysql)
6.最终由mysql-->php-fpm->fastcgi->nginx->client
3.搭建lnmp平台
3.1 安装nginx
3.1.1 下载安装包并安装
wget https://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm
yum -y localinstall nginx-1.18.0-1.el7.ngx.x86_64.rpm
3.1.2 创建www用户并把nginx运行用户修改为www
useradd -u www -M -s /sbin/nologin
sed -i.bak '/user nginx;/cuser www;' /etc/nginx/nginx.conf
3.1.3 启动nginx并设置开机自启
systemctl enable nginx && systemctl start nginx
3.2 安装mysql
3.2.1 下载安装包并安装
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar
yum -y localinstall *.rpm
3.2.2 启动mysql并设置开机自启
systemctl enable mysqld && systemctl start mysqld
3.2.3 从/var/log/mysqld.log
中找到mysql8的默认roo密码
$ grep 'root@localhost' /var/log/mysqld.log
2020-06-21T00:46:49.942011Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: jB6wzV<ZJIG9
3.2.4 修改root密码
mysql8中密码要求为要包含大写字母,小写字母,数字,特殊符号
在MySQL 8.04前,执行:SET PASSWORD=PASSWORD('[新密码]');
修改密码
但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是mysql_native_password
,而现在 使用的是caching_sha2_password
。
mysql8.0.20初次修改root密码需要用如下命令
mysql> alter user user() identified by 'Bxb123.com';
Query OK, 0 rows affected (0.00 sec)
查看mysql8.0.20密码策略
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
validate_password.length 固定密码的总长度;
validate_password.dictionary_file 指定密码验证的文件路径;
validate_password.mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
validate_password.number_count 整个密码中至少要包含阿拉伯数字的个数;
validate_password.policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password.policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
如果需要设置空密码或者简单密码
设置空密码
mysql> UNINSTALL COMPONENT "file://component_validate_password";
Query OK, 0 rows affected (0.00 sec)
mysql> set password='';
Query OK, 0 rows affected (0.00 sec)
设置简单密码
#设置密码的验证强度等级,LOW表示只验证密码长
set global validate_password.policy=LOW;
#设置密码固定密码总长度
set global validate_password.length=4;
3.3 安装php
3.3.1 添加第三方yum源
安装epel源并添加第三方yum源
yum -y install epel-release && \
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
选择要安装的php版本
export phpversion=php73
yum -y install $phpversion-php-fpm $phpversion-php-cli $phpversion-php-bcmath $phpversion-php-gd $phpversion-php-json $phpversion-php-mbstring $phpversion-php-mcrypt $phpversion-php-mysqlnd $phpversion-php-opcache $phpversion-php-pdo $phpversion-php-pecl-crypto $phpversion-php-pecl-mcrypt $phpversion-php-pecl-geoip $phpversion-php-recode $phpversion-php-snmp $phpversion-php-soap $phpversion-php-xml
通过以下命令来获取更多安装信息
yum search php73
安装后的php配置文件路径
/etc/opt/remi/php73
3.3.2 修改php配置文件
编辑文件/etc/opt/remi/php73/php-fpm.d/www.conf
修改php运行用户和组为www
sed -i.bak '/^user/c user = www' /etc/opt/remi/php73/php-fpm.d/www.conf && \
sed -i '/^group/c group = www' /etc/opt/remi/php73/php-fpm.d/www.conf
3.3.3 启动php并设置开机自启
systemctl enable php73-php-fpm && systemctl start php73-php-fpm