一. 什么是LNMP
首先LNMP是目前主流的网站平台之一 * L:Linux操作系统 * N:Nginx网站服务软件 * M:MySQL、MariaDB数据库 * P:网站开发语言(PHP、Perl、Python)二.FastCGI工作原理
工作流程:
web 服务端启动时将加载FastCGI进程管理器
FastCGI进程管理器初始化,启动多个解释器进程
客户端请求到达服务端时,FastCGI进程管理器选择并连接一个解释器
FastCGI子进程完成处理后返回结果,将标准输出和错误信息同时连接返回服务端
FastCGI简介:
FastCGI技术目前支持许多语言:PHP、C/C++、Java、Ruby、Python等。
FastCGI缺点是因为并发大而导致的内存消耗大。
-----
二. 部署LNMP环境 2.1 环境需求 安装部署Nginx、MariaDB、PHP环境 * 安装部署Nginx、MariaDB、PHP、PHP-FPM; * 启动Nginx、MariaDB、FPM服务; * 并测试LNMP是否工作正常。 2.2 实验使用方案 在RHEL7系统中,源码安装Nginx,使用RPM包安装MariaDB、 PHP、PHP-FPM软件。 操作过程中需要安装的软件列表如下: * nginx * mariadb、mariadb-server、mariadb-devel * php、php-fpm、php-mysql 2.3 实验步骤 步骤一:软件包安装 1).使用yum安装基础依赖包[root@proxy ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel
2).使用源码安装nginx
[root@proxy ~]# useradd -s /sbin/nologin nginx [root@proxy ~]# tar -xvf nginx-1.12.2.tar.gz [root@proxy ~]# cd nginx-1.12.2 [root@proxy nginx-1.12.2]# ./configure --user=nginx --group=nginx --with-http_ssl_module [root@proxy ~]# make && make install
3).yum安装MariaDB、php、php-fpm
[root@proxy ~]# yum -y install mariadb mariadb-server mariadb-devel [root@proxy ~]# yum -y install php php-mysql [root@proxy ~]# yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm
步骤二:启动服务
1).启动nginx服务 需要注意的是Nginx使用的端口与httpd服务端口相同,所以先要停止httpd服务。[root@proxy ~]# systemctl stop httpd //如果未开httpd服务则可不用此命令 [root@proxy ~]# /usr/local/nginx/sbin/nginx [root@proxy ~]# netstat -utnlp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 24679/nginx2).启动MySQL服务、PHP-FPM服务
[root@proxy ~]# systemctl start mariadb //启动服务器 [root@proxy ~]# systemctl status mariadb //查看服务状态 [root@proxy ~]# systemctl enable mariadb //设置开机启动 [root@proxy ~]# systemctl start php-fpm [root@proxy ~]# systemctl status php-fpm [root@proxy ~]# systemctl enable php-fpm
3).设置防火墙与SELinux
[root@proxy ~]# firewall-cmd --set-default-zone=trusted [root@proxy ~]# setenforce 0
至此LNMP所有的安装与基本环境部署均已完成~
三.构建LNMP平台实验
2.1 环境需求
使用上述实验环境,通过配置Nginx服务端配置,达成LNMP的平台:
配置Fast-CGI支持PHP网页
创建PHP测试页面,测试使用PHP连接数据库的效果
2.2 实验使用方案
使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.2.5)、另外一台作为测试用的Linux客户机(192.168.2.100)。
2.3 实验步骤
步骤一:启动php-fpm配置文件
[root@proxy ~]# systemctl start php-fpm //启动服务 [root@proxy ~]# systemctl status php-fpm
步骤二:修改Nginx配置文件并启动服务
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf location / { root html; index index.php index.html index.htm; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi.conf; } [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
步骤三:创建PHP页面,测试LNMP架构能否解析PHP页面
1)创建PHP测试页面1,测试PHP页面能否访问
[root@proxy ~]# vim /usr/local/nginx/html/phptest1.php
当此页面可以访问时,则可继续下面操作
2)创建PHP测试页面2(该页面可测试是否连接数据库成功)
[root@proxy ~]# vim /usr/local/nginx/html/mysqltest2.php query($sql);while($row = $result->fetch_array()){ printf("Host:%s",$row[0]); printf(""); printf("Name:%s",$row[1]); printf("");}?>
3)测试访问页面
[root@client ~]# firefox http://192.168.2.5/mysqltest2.php
当web出现该页面时则表示已经成功连接数据库!!
LNMP常见问题(可用于排错)
Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log
Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log
PHP默认错误日志文件为/var/log/php-fpm/www-error.log