LNMP架构

1. 什么是LNMP?

LNMP是一套技术的组合, L=Linux  N=nginx  M~=Mysql   P~=PHP

2. LNMP架构是如何工作的?

首先nginx服务是不能处理动态请求的,那么当用户发起动态请求时,nginx是如何处理的?
当用户发起http请求时,请求会被nginx处理,如果是静态资源请求nginx则直接返回html,如果是动态请求(*php)nginx则通过fastcgi协议转交给后端的php处理,具体如下图所示

image.png
image.png

3. Nginx与PHP、Mysql之间是如何工作的(请看下图)

image.png
1. Nginx会根据用户请求进行location规则匹配。

2. location匹配如果是静态请求,则由Nginx读取本地直接返回

3. 如果请求的是动态资源,则由nginx将请求交给fastcgi协议

4. fastcgi收到请求后交给php-fpm管理进程,php-fpm进程会调用工作进程

5. 工作进程调用php程序进行解析,如果只是解析代码,php直接返回

6. 如果是要查询数据库,则由php程序连接数据库(通过用户名密码 IP)发起查询的操作

7. 最终数据由mysql->php->php-fpm->fastcgi->nginx->http->user

动态资源与静态资源

静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。(视频、图片)
动态资源: 当用户多次访问这个资源,资源的源代码可能会发送改变。(文章、帖子、评论)

安装操作

1.安装 php

  • 有很多版本,我们选择安装7.1、Mysql | mariadb(同一个作者)

1.1 清理环境

yum remove php-mysql-5.4 php php-fpm php-common

1.2 配置yum源 并安装

[root@nginx ~]# cat /etc/yum.repos.d/php.repo 
[webtatic-php] 
name = php 
Repository baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/ 
gpgcheck = 0
#安装PHP(注意官方的名字是没有71w封装版本的时候写上的)
yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
#安装mariadb(与Mysql是同一个作者)
yum install mariadb mariadb-server -y

2. 启动(先启动遇到问题解决问题)

# 启动PHP          
systemctl enable php-fpm 
systemctl start  php-fpm
# 启动mariadb          
systemctl start mariadb 
systemctl enable mariadb         

3.nginx与php如何集成的

  • 1.在nginx配置
[root@web01 php]# cat /etc/nginx/conf.d/php.zy.com.conf
server {
    listen 80;
    server_name php.zy.com;
    root /code;
    #当用户请求php.zy.com --> php.zy.com/index.php
    location / {
        index index.php;
    }
    #将请求转给php-fpm程序,同时携带我们需要被解析的文件路径 SCRIPT_FILENAME = /code/index.php
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
    1. 重启服务
[root@web01 php]# nginx -t
[root@web01 php]# systemctl restart nginx
    1. 编写php代码(创建/code/page.php文件并在里边加一个函数,显示php信息的一个函数)
[root@web01 php]# mkdir /code && vim /code/page.php
<?php
     phpinfo();
?>
  • 4.访问测试(浏览器访问php.zy.com.com)
image.png

4.php与mariadb如何集成的

  • 1.启动mariadb
systemctl start mariadb 
systemctl enable mariadb
  • 2.配置用户名密码
[root@web01 php]# mysqladmin -uroot password zy.com
# 验证密码(是否能按照设置的用户名密码进入数据库)
[root@web01 php]# mysql -uroot -pzy.com
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |                      
+--------------------+
  • 3.编写php代码连接mysql的代码,访问测试(就是为了验证php与mariadb连接成功)
[root@web01 php]# cat /code/mysql.php
<?php
    //设定变量
        $servername = "localhost";
        $username = "root";
        $password = "zy.com";
        // 创建连接
        $conn = mysqli_connect($servername, $username, $password);
        // 检测连接
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
        }
        echo "php连接MySQL数据库成功";
?>

5. 使用架构

部署wordpress
1.准备wordpress的代码 放到某个指定的位置

[root@web01 ~]# mkdir /code 
[root@web01 ~]# tar xf wordpress-5.2.3-zh_CN.tar.gz  -C /code/             
[root@web01 ~]# ll /code/ 
drwxr-xr-x 5 oldman oldman 4096 9月   5 2019 wordpress
  1. 授权代码的权限为www
[root@web01 ~]# chown -R www.www /code/wordpress/

3.配置mariadb,创建一个库

[root@web01 ~]# mysql -uroot -pzy.com
MariaDB [(none)]>
MariaDB [(none)]> create database wordpress; 
MariaDB [(none)]> show databases;            
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpress          |      <----
+--------------------+
5 rows in set (0.00 sec)
  1. 配置nginx,添加一个wordpress的网站
[root@web01 ~]# cat /etc/nginx/conf.d/blog.zy.com.conf
server  {
    listen 80;
    server_name blog.zy.com;
    root /code/wordpress;
    client_max_body_size 100m;
    location / {
        index index.php;
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
  1. 重启服务
[root@web01 ~]# nginx -t 
[root@web01 ~]# systemctl restart nginx   
  1. 使用浏览器访问,有问题解决问题
hosts劫持

部署wecenter项目

1.下载并解压代码,并授权代码权限

[root@web01 ~]# mkdir -p /code/zh 
[root@web01 ~]# unzip WeCenter_3-5-0.zip  -d /code/zh/ 
[root@web01 ~]# chown -R www.www /code/zh/
  1. 创建对应的数据库
[root@web01 ~]# mysql -uroot -pzy.com    #登录本地数据库 
MariaDB [(none)]> create database zh;       #创建一个zh的库
  1. 编写Nginx配置文件,创建wecenter网站
[root@web01 ~]# cat /etc/nginx/conf.d/zh.zy.com.conf
server {
    listen 80;
    server_name zh.zy.com;
    root /code/zh;
    location / {
        index index.php;
    }
    #解析php
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4.重启服务

[root@web01 ~]# systemctl restart nginx

5.hosts劫持
6.浏览器测试访问

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。