1. LNMP架构概述
1. 什么是LNMP
LNMP是一套技术的组合,L=LINUX,N=nginx,M~=Mysql,P~=PHP
2. LNMP架构是如何工作的 首先nginx服务是不能处理动态请求,那么当用户发起动态请求时,nginx又是如何进行处理的? 当用户发起http请求,请求会被nginx处理,如果是静态资源请求nginx则直接返回,如果是动态请求nginx则通过fastcgi协议转交给后端的PHP程序处理,具体如下:
3. nginx与fastcgi详细工作流程如下图所示:
- 用户通过http协议发起请求,请求会先抵达LNMP架构中的nginx
- nginx会根据用户的请求进行Location规则匹配
- location如果匹配到请求是静态,则由nginx读取本地直接返回
- location如果匹配到请求的动态,则由nginx将请求转发给fastcgi协议
- fastcgi收到后会将请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作进程warrap
- warrap进程会调用php程序进行解析,如果只是解析代码,php直接返回
- 如果有查询数据库操作,则由php连接数据库(用户、密码、ip)发起查询操作
- 最终数据有mysql->php->php-fpm->fastcgi->nginx->http->user
2. LNMP架构环境部署
2.1 使用官方仓库安装nginx
[root@study ~]
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.
yum-config-manager --enable nginx-mainline
[root@study ~]
2.2 启动nginx,并加入开启自启
[root@study ~]
[root@study ~]
2.3 使用第三方扩展源安装php7.1
[root@study ~]
[root@study ~]
[php]
name = php Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@study ~]
2.4 安装Mariadb数据库
[root@study ~]
[root@study ~]
[root@study ~]
[root@study ~]
[root@study ~]
3. LNMP架构环境配置
在将nginx与php集成过程中,需要先了解Fastcgi代理配置语法
3.1 设置fastcgi服务器的地址,改地址可以指定为域名或ip地址,以及端口
Syntax: fastcgi_pass address;
Default: -
Context: location, if in location
fastcgi_pass localhost:9000;
fastcgi_pass unix:/tmp/fastcgi.socket;
3.2 设置fastcgi默认的首页文件,需要结合fastcgi_param 一起设置
Syntax: fastcgi_index name;
Default: -
Context: http,server, location
3.3 通过fastcgi_param设置变量,并将设置的变量传递到后端的fastcgi服务器
Syntax: fastcgi_param parameter value [if_not_empty];
Default: -
Context: http,server, location
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name;
3.4 通过图形方式展示fastcgi_index与fastcgi_param作用
4. 配置nginx与php集成
1. 编写配置文件
[root@mage conf.d]
/etc/nginx/conf.d
[root@study conf.d]
server {
listen 80;
server_name php.study.com;
root /code;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2. 重载nginx
[root@study conf.d]
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@study conf.d]
[root@study conf.d]
[root@study conf.d]
3. 准备一个php文件,测试
[root@study conf.d]
<?php
phpinfo();
?>
4. 在windows中,配置hosts解析文件
192.168.10.132 game.boyma.com
192.168.10.132 test1.study.com
192.168.10.132 ma.study.com
192.168.10.132 php.study.com
5. 启动数据库
[root@study conf.d]
[root@study conf.d]
[root@study conf.d]
[root@study conf.d]
6. 准备一个php文件,测试能否正常连接数据库 在/code目录下创建一个以mysql.php结尾的文件
<?php
$servername = 'localhost';
$usernaem = "root";
$password = "Bgm123.com";
//创建连接
$conn = mysqli_connect($servername,$username,$password);
//检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "php连接MySQL数据库成功!";
?>
5. lnmp架构部署WordPress
1. 定义nginx内容
[root@centos8 /]
server {
listen 80;
server_name blog.study.com;
root /code/wordpress;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2. 创建站点目录,并下载WordPress安装包
[root@centos8 /]
[root@centos8 /]
[root@centos8 code]
[root@centos8 code]
[root@centos8 code]
latest.tar.gz wordpress
3. 修改nginx与php-fpm的运行用户为www,并授权代码属主和属主都为www
[root@centos8 code]
[root@centos8 code]
[root@centos8 code]
[root@centos8 code]
[root@centos8 code]
[root@centos8 code]
[root@centos8 code]
[root@centos8 code]
4. 创建数据库
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.002 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| wordpress |
+--------------------+
4 rows in set (0.002 sec)
5. 配置WordPress 这里安装WordPress图形化指引就可以配置了
|