LNMP就是
Linux作为服务器的操作系统
Nginx作为Web服务器
PHP作为解析动态脚本语言
MySQL即为数据库
Nginx服务本身不能处理PHP的请求,那么当用户发起PHP动态请求, Nginx又是如何进行处理的。
有两种方法:
1.将PHP页面的解析请求转发给Apache处理
2.将PHP页面的解析请求转发给php-fpm模块
用户–>http协议–>Nginx–>fastcgi–>php-fpm
1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx
2.Nginx会根据用户的请求进行判断,这个判断是有Location进行完成
3.判断用户请求的是静态页面,Nginx直接进行处理
4.判断用户请求的是动态页面,Nginx会将该请求交给fastcgi下发
5.fastgi会将请求交给php-fpm管理进程, php-fpm管理进程接收到后会调用具体的工作线程wrapper
6.wrapper线程会调用php进行解析,如果只是解析代码php直接返回
7.如果有查询数据库操作,则由php连接数据库(用户 密码 IP)然后发起查询的操作
8.最终数据由mysql->php->php-fpm->fastcgi->nginx->http->user
下面开始实践:
这里使用的软件版本为:Nginx 1.16 MySQL 5.6 PHP 7.1
一.N
首先安装nginx服务
yum install nginx -y
第二步:设置开机自启
systemctl start nginx
systemctl enable nginx
二.M
1.下载MySQL官方扩展源
[root@nginx ~]# rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/mysql-community-release-el7-5.noarch.rpm
2.安装
yum install mysql-community-server -y
3.启动数据库, 并加入开机自启动
[root@nginx ~]# systemctl start mysqld
[root@nginx ~]# systemctl enable mysqld
4.登录数据库和重置数据库密码
[root@web01 ~]# mysql -u root
……
mysql>
mysql> exit
###5.6默认无密码
###为了安全,必须给root设置密码
[root@nginx ~]# mysqladmin -u root password 123456
如果已经有密码,再次修改
[root@web01 ~]# mysqladmin -u root -p123456 password 123321
6.使用密码登陆mysql
[root@web01 ~]# mysql -u root -p123321
…
mysql>
###此步为检查密码
三.P
1.移除旧版php(之前有通过Base或epel库安装过php的,必须执行这个操作)
yum remove php-mysql-5.4 php php-fpm php-common
2.安装扩展源
[root@nginx ~]# yum localinstall -y http://mirror.webtatic.com/yum/el7/webtatic-release.rpm
<=====自己做了rpm包,所以yum localinstall安装
3.安装php7.1版本
[root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel \
php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm \
php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
yum localinstall -y *.rpm
进入/etc/yum.repos.d/
vim webtatic.repo
4.启动php-fpm管理进程, 并加入开机自启
[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm
四:组合
验证Nginx是否能正常解析php动态请求,以及php程序能否正常连接数据库
1.创建一个测试站点
[root@nginx /application/nginx/conf/extra]# cat /application/nginx/conf/extraphp.conf
server {
server_name www.oldboy.com;
listen 80;
root html/php;
index index.php index.html;
location ~ \.php$ {
root html/php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
###这里目录都为yum安装后的目录(仅供参考)
2.新增info.php, 测试php解析是否工作正常
[root@web01 ~]# cat /application/nginx/html/php/index.php
<?php
phpinfo();
?>
3.测试php是否能连接mysql数据库服务[无论是本地数据库还是远程数据库,测试方式一致
[root@web01 ~]# cat /code/mysqli.php
<?php
$servername = "localhost";
$username = "*********"; #####用户名
$password = "*********"; #####用户密码
// 创建连接
$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功";
?>
五:部署博客(wordpress)
1.配置Nginx虚拟主机站点,域名为blog.zyl666.com
[root@web01 conf]# cat blog.conf
server {
listen 80;
server_name blog.zyl666.com;
root conf/wordpress;
index index.php index.html;
location ~ \.php$ {
root conf/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2.获得wordpress源码
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
3.解压网站源码文件,拷贝至对应站点目录,并授权站点目录
[root@nginx tools]# tar xf wordpress-4.9.4-zh_CN.tar.gz
[root@nginx tools]# mv wordpress /application/nginx/conf/
4.重载nginx和php-fpm
systemctl reload nginx php-fpm
5.由于wordpress产品需要依赖数据库, 所以需要手动建立数据库
[root@web01 conf]# mysql -u root -p******* <====这里的密码为自己那会设置的密码
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
wordpress进去后会提示让你创一个文件里面键入内容,直接把提示的内容放进去就可以,如果想上传图片,需要给wordpress底下的目录wp-content提权
附赠本人结果图片: