1、LNMP架构概述

  lnmp就是Linux+Nginx+Mysql+PHP,Linux作为服务器的操作系统,Nginx作为web服务器、PHP作为解析动态脚本语言、Mysql即为数据库

  Nginx服务本身不能处理PHP的请求,那么当用户发起php动态请求,Nginx又是如何处理的。

  有两种方法:

    1、将PHP页面解析请求发给Apache处理

    2、将PHP页面解析请求发给php-fpm模块    ******

  用户--->http协议--->Nginx--->fastcgi协议--->php-fpm

    注意:fastcgi是nginx连接php-fpm之间协议

Nginx与Fast-CGI详细工作流程图:

 

 

   1、用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx

  2、Nginx会根据用户的请求进行判断,这个判断是有Location进行完成

  3、判断用户请求的是静态页面,Nginx直接处理

  4、判断用户请求是动态页面,Nginx会将该请求交给fastcgi协议下发

  5、fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作线程wrapper

  6、wrapper线程会调用php进行解析,如果只是解析代码php直接返回

  7、如果有查询数据库操作,则有php连接数据库(用户,密码,IP)然后发起查询操作

  8、最终数据由 mysql--->php---->php-fpm---->fastcgi---->nginx---->http--->user

2、安装LNMP

  yum 安装nginx1.18 php7.3 mysql5.6

1、安装最新nginx

  vim /etc/yum.repos.d/nginx.repo

 

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

 

  2、执行yum安装

    yum install nginx -y

  3、启动并加入开机自启

    systemctl start nginx    #启动nginx服务

    systemctl enable nginx     #设置开机自启

2、安装mysql5.6

    1、下载MySQL官方扩展源

[root@localhost yum.repos.d]# rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/mysql-community-release-el7-5.noarch.rpm

  

 

  2、安装mysql5.6, 

[root@localhost yum.repos.d]# yum install mysql-community-server -y

  3、启动数据库,并加入开机自启动

[root@localhost yum.repos.d]# systemctl start mysqld
[root@localhost yum.repos.d]# systemctl enable mysqld

  注意:mysql是绝对不需要源码安装,所有功能都是通过修改配置文件实现的。

  4、mysql5.7以前的版本,登录都不需要密码

[root@localhost ~]# mysql -uroot

  5、为了安全,我们必须给root设置密码,使用密码登录

[root@localhost ~]# mysqladmin -u root password 123456
[root@localhost ~]# mysql -uroot -p123456

  

3、使用第三方扩展EPEL 源安装php7.3

  1、查看之前是否安装了php,先删除php

     [root@localhost ~]# php -v

    如果有使用yum remove php*

  2、安装扩展EPEL 源

  [root@localhost yum.repos.d]# yum install epel-release

  安装REMI源:

  [root@localhost yum.repos.d]# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

  3、安装yum源管理工具

[root@localhost yum.repos.d]# yum install yum-utils

  4、安装php7.3版本

[root@localhost yum.repos.d]# yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-xmll

  5、设置开机启动、运行服务:

[root@localhost yum.repos.d]# systemctl start php73-php-fpm
[root@localhost yum.repos.d]# systemctl enable php73-php-fpm

  6、设置php

[root@localhost yum.repos.d]# rpm -qa | grep php

  

 

   找到  php73-php-fpm-7.3.26-1.el7.remi.x86_64

[root@localhost yum.repos.d]# rpm -ql php73-php-fpm-7.3.26-1.el7.remi.x86_64

  

 

   查找php.ini位置

[root@localhost yum.repos.d]# find /etc/opt/remi/php73 -name php.ini
/etc/opt/remi/php73/php.ini

  编辑/etc/opt/remi/php73/php.ini替换换 ;cgi.fix_pathinfo=1 为 cgi.fix_pathinfo=0 :

[root@localhost yum.repos.d]# sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/opt/remi/php73/php.ini

  重启php73-php-fpm

  systemctl restart php73-php-fpm

7、查看PHP

[root@localhost yum.repos.d]# php73 -v
PHP 7.3.26 (cli) (built: Jan  5 2021 10:36:07) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.26, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.26, Copyright (c) 1999-2018, by Zend Technologies

4、验证nginx是否可以正常解析php动态请求,以及php程序能否正常连接数据库

  1、nginx是否可以正常解析php动态请求

       /etc/nginx/conf.d 下,

[root@localhost conf.d]# mv default.conf test.conf

 [root@localhost conf.d]# vim test.conf

  

server {
    listen       80;
    server_name  localhost;

    charset utf-8;
    access_log /home/wwwroot/log/access_test.log  main;

    location / {
        root   /home/wwwroot/gms;
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
        root           /home/wwwroot/gms;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

 2、检查语句语法

  nginx -t

[root@localhost wwwroot]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful 
[root@localhost wwwroot]# systemctl reload nginx    #重载nginx
        

  3、web 端访问

 

 

  nginx 可以正常解析php

2、php能否正常连接数据库

  1、测试

  在/home/wwwroot/gms 下

 

   vim mysqli.php 

<?php
        $servername = "localhost";
        $username = "root";
        $password = "123456";

        //创建连接
        $conn = mysqli_connect($servername,$username,$password);

        //检测连接
        if (!$conn){
                die("Connection failed:".mysqli_connect_error());
        }
        echo "连接成功";


?>

  外王访问

 

 证实连接成功

 

至此LNMP架构就以搭建完成

配置:

添加用户www,组www

 

[root@localhost wwwroot]# groupadd   www
[root@localhost wwwroot]# useradd  -g www  -s /sbin/nologin www

 

 更改gms项目的属组

[root@localhost wwwroot]# chown -R www:www gms/
[root@localhost wwwroot]# chmod -R 751 gms/ 

  更改nginx用户为www

[root@localhost wwwroot]# cd /etc/nginx
[root@localhost nginx]#vim nginx.comf

  

 

 修改php-fpm的用户

[root@localhost ]# cd /etc/opt/remi/php73/php-fpm.d
[root@localhost php-fpm.d]# ll
total 20
-rw-r--r--. 1 www www 19554 Jan  5 20:19 www.conf

[root@localhost php-fpm.d]# vim www.conf 

  

 

重载nginx,php-fpm

[root@localhost php-fpm.d]# systemctl reload php73-php-fpm
[root@localhost php-fpm.d]# systemctl reload nginx

  

 

posted on 2021-02-02 10:57  草根920  阅读(134)  评论(0编辑  收藏  举报