LNMP工作原理

首先,浏览器发送http request 请求到服务器(nginx),服务器响应并处理请求,将一些静态的资源(css 图片, 视频)保存服务器上,然后将php脚本通过接口传输协议php-fcg传输给php-fpm(进程管理器),php-fpm不做处理,php-fpm调用php解析器进程,php解析器解析php脚本信息,php解析器可以启动多个进程,然后将解析后的脚本返回到php-fpm,php-fpm在通过fastcgi的形式将脚本信息传给nginx,服务器在通过http reponse 的形式传给浏览器,浏览器在进行解析与渲染后进行呈现。


1,LINUX准备

关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=diable


2,Nginx部署

yum install -y nginx


3,php-fpm部署1

yum install -y php-fpm php-mysql php-gd
systemctl restart php-fpm
systemctl enable php-fpm
  • php-fpm:php接收动态请求的程序
  • php-mysql:php链接mysql的程序
  • php-gd:图形库程序(GD库可以处理图片,或者生成图片)
netstat -anpt | grep 9000

Nginx架构篇(2)LNMP动态网站环境部署_nginx


测试php页面(php基本信息)

vim /usr/share/nginx/html/index.php
<?php
phpinfo();
?>

vim /etc/nginx/conf.d/default.conf
location / {
index index.php index.html;
}

启动nginx_fastcgi功能,解除#注释修改路径即可

vim /etc/nginx/conf.d/default.conf 
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

解释:
fastcgi_param:这个配置的意思是 在浏览器中访问的.php文件,实际读取的是 $document_root(网站根目录)下的.php文件 -- 也就是说当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如果没有配置这一配置项时,nginx不回去网站根目录下访问.php文件,所以返回空白

通过location指令,将所有以php为后缀的文件都交给127.0.0.1:9000来处理,而这里的IP地址和端口就是FastCGI进程监听的IP地址和端口。

fastcgi_param指令指定放置PHP动态程序的主目录,也就是$fastcgi_script_name前面指定的路径,这里是/usr/local/nginx/html目录,建议将这个目录与Nginx虚拟主机指定的根目录保持一致,当然也可以不一致。

fastcgi_params文件是FastCGI进程的一个参数配置文件,在安装Nginx后,会默认生成一个这样的文件,这里通过include指令将FastCGI参数配置文件包含了进来。


重启并访问

systemctl restart nginx

​http://192.168.19.100/index.php​

Nginx架构篇(2)LNMP动态网站环境部署_linux_02


4,php-fpm部署2

方法二:使用socket连接
vim /usr/local/php/etc/php-fpm.conf
listen = 127.0.0.1:9000
listen = /run/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
ll /dev/shm/php-fpm.sock
srw-rw-rw-. 1 root root 0 Sep 18 04:55 /run/php-fpm.sock

vim /usr/local/nginx/conf/nginx.conf
去掉以下行的注释:
location ~ \.php$ {
root html;
fastcgi_pass unix:/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}


5,mysql 部署

编译安装:​​https://blog.51cto.com/u_15630500/5288573​

yum -y install mariadb-server mariadb
安装mysql服务器程序和客户机程序

systemctl start mariadb
启动mysql服务器

systemctl enable mariadb
开机启动mysql服务器

mysqladmin password '123456'
修改mysql的root密码为‘123456’

create database bbs;
准备数据库,存放app

grant all on bbs.* to phptest@'192.168.19.100' identified by '123456';
授权phptest用户管理bbs库,请注意用户名密码主机参数需要更换。

flush privileges;
刷新权限

修改主页,测试MYSQL的链接状态

vim /usr/share/nginx/html/index.php

<?php
$link=mysql_connect('192.168.19.100','phptest','123456');
if ($link)
echo "Successfuly";
else
echo "Faile";
mysql_close();
?>

Nginx架构篇(2)LNMP动态网站环境部署_nginx_03

如果测试为faile,请检查数据库授权结果。