一. 什么是LNMP
   首先LNMP是目前主流的网站平台之一
    * L:Linux操作系统
    * N:Nginx网站服务软件
    * M:MySQL、MariaDB数据库
    * P:网站开发语言(PHP、Perl、Python)


二.FastCGI工作原理

  

fastcgi.PNG

  工作流程:

  • 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/nginx


   2).启动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的平台:

  1. 配置Fast-CGI支持PHP网页

  2. 创建PHP测试页面,测试使用PHP连接数据库的效果 

  2.2 实验使用方案
      使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.2.5)、另外一台作为测试用的Linux客户机(192.168.2.100)。

    

nginx新.jpg

 

  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
<?php
$i="hello world";
echo $i;
?>

当此页面可以访问时,则可继续下面操作


2)创建PHP测试页面2(该页面可测试是否连接数据库成功)

[root@proxy ~]# vim /usr/local/nginx/html/mysqltest2.php
<?php
$mysqli = new mysqli('localhost','root','','mysql');  //此处密码设置为空
if (mysqli_connect_errno()){
    die('Unable to connect!'). mysqli_connect_error();
}
$sql = "select * from user";
$result = $mysqli->query($sql);
while($row = $result->fetch_array()){
    printf("Host:%s",$row[0]);
    printf("</br>");
    printf("Name:%s",$row[1]);
    printf("</br>");
}
?>

3)测试访问页面

[root@client ~]# firefox http://192.168.2.5/mysqltest2.php

lnmp.PNG

当web出现该页面时则表示已经成功连接数据库!!



LNMP常见问题(可用于排错)

     Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log

     Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log

     PHP默认错误日志文件为/var/log/php-fpm/www-error.log