1 LNMP
- 主流的企业网站平台之一
- L : Linux操作系统
- N : Nginx网站服务软件
- M : MySQL、Mariadb数据库
- P : 网站开发语言(PHP、Perl、Python)
2 LNMP环境部署
- 安装nginx
[root@proxy nginx-1.12.2]# yum -y install gcc pcre-devel openssl-devel
[root@proxy nginx-1.12.2]# ./configure --with-http_ssl_module
[root@proxy nginx-1.12.2]# make
[root@proxy nginx-1.12.2]# make install
[root@proxy nginx-1.12.2]# ls /usr/local/nginx/
conf html logs sbin
- 安装数据库Mariadb
[root@proxy nginx-1.12.2]# yum -y install mariadb mariadb-server mariadb-devel
//mariadb(数据库客户端软件)
//mariadb-server(数据库服务器软件)
//mariadb-devel(其他客户端软件的依赖包)
- 安装php
[root@proxy nginx-1.12.2]# yum -y install php php-mysql php-fpm
//php 解释器
//php-fpm(进程管理器服务FastCGI,动态页面后台解析服务)
//php-mysql(PHP的数据库扩展包)
- 启动各项服务
[root@proxy ~]# /usr/local/nginx/sbin/nginx
[root@proxy ~]# systemctl restart mariadb.service
[root@proxy ~]# systemctl enable mariadb.service
[root@proxy ~]# systemctl restart php-fpm
[root@proxy ~]# systemctl enable php-fpm
[root@proxy ~]# netstat -ntulp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4133/nginx: master
[root@proxy ~]# netstat -ntulp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4411/mysqld
[root@proxy ~]# netstat -ntulp | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4471/php-fpm: maste
3 实现Nginx动静分离
-
nginx默认只支持静态页面
-
用户—nginx—动态页面—php-fpm—fastCGI—翻译好的页面—nginx—用户
-
FastCGI:公共网关接口,可以关联web服务于动态网站解释器
-
每次nginx需要翻译动态页面,就找fastCGI,一个服务器可以开启多个fastCGI进程,提高翻译效率
- FastCGI:工作流程
- web服务启动时载入FastCGI进程管理器
- FastCGI进程管理器初始化,启动多个解释器进程
- 当客户端请求达到web服务时,FastCGI进程管理器选择并连接一个解释器
- FastCGI子进程完成处理后返回结果,将标准输出和错误信息从同一连接返回web服务
- FastCGI缺点:
- 内存消耗大
- 每个进程消耗7到25M内存
- FastCGI相关配置
[root@proxy ~]# vim /etc/php-fpm.d/www.conf
12 listen = 127.0.0.1:9000 //监听端口等信息
70 pm.max_children = 50 //定义最多开启的fastCGI进程数量
75 pm.start_servers = 5 //定义无论是否需要,直接开启的fastCGI进程数量
3.1 简单测试
- 准备测试用的动态页面
[root@proxy ~]# ls /usr/local/nginx/html/
test.php
- 修改nginx主配置文件
- 如果访问的是以.php结尾的页面,就转交给后台的9000端口(php-fpm)进行动态页面解析
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
[root@proxy ~]# sed -n '65,71p' /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
3.2 数据库的动态测试页面
准备与数据库有关的动态测试页面到nginx
[root@proxy ~]# ls /usr/local/nginx/html/
mysql.php
- 数据库新建用户
[root@proxy ~]# mysql
MariaDB [(none)]> create user dc@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye