快速搭建一个属于自己的博客、LNMP架构概述、LNMP工作原理

1.LNMP架构概述

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

1.LNMP架构的工作原理

  • 1)当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回
  • 2)如果是动态请求Nginx则通过fstcgi协议转交给后端PHP程序,nginx是不能处理动态数据的,只能是那磁盘上的一些文件,视频,图片,文本等返回给用户.
  • 3)动态请求是指用户的数据,用户的信息(订单,电话号码,个人信息等等)时刻发生变化的,称为动态请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2iBznQlR-1616923640288)(5C478F3393E44896A296A364456EC900)]
解析上图:

  • 客户端访问Nginx,是基于TCP的基础上发起的http请求,如果响应的是静态的数据直接返回,如果访问的是动态的数据,会交给fastcgi协议,fastcgi会请求PHP去处理动态的数据(PHP有动态的页面也有静态的页面,PHP的静态页面它能够直接解析,如果是动态的回去查找MySQL)

2.Nginx与Fast-CGO详细工作流程

  • 用户通过http协议发起请求,请求先抵达LNMP架构中的Nginx
  • Nginx会根据用户的请求进行判断,这个判断是有Location进行完成
  • 判断用户请求的是静态页面,Nginx直接进行处理
  • 判断用户请求的是动态页面.Nginx会将该请求交给fastcgi协议下发
  • fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作进程warrap
  • warrap进程回调用php进程进行解析,如果只是解析代码php直接返回
  • 如果有查询数据库操作,则php连接数据库(用户 密码 ip)发起查询的操作
  • 最终数据由:MySQL–>php–>php-fpm–>fastcgi–>nginx–>http==>user

2.LNMP架构环境部署

1.使用官方仓库安装Nginx

  1. Nginx依赖
[root@web01 ~]#  yum install -y gcc gcc-c++ autoconf pcre pcre-devel make
  1. 使用官方仓库安装Nginx
[root@web01 ~]#vim /etc/yum.repos.d/nginx.reop
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
  1. 安装Nginx
[root@web01 ~]#yum -y install nginx
  1. 修改nginx用户
[root@web01 ~]#groupadd -g666 www
[root@web01 ~]#useradd -u666 -g666 -M -s /sbin/nologin www
[root@web01 ~]#sed -i '/^user/c user www;' /etc/nginx/nginx.conf  #修改nginx配置文件
  1. 启动Nginx服务
[root@web01 ~]#systemctl start nginx
[root@web01 ~]#systemctl enable nginx
  1. 查看进程
[root@web01 ~]# ps axu|grep nginx
  1. 使用第三方扩展源安装PHP
[root@web01 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@web01 ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

  1. 移除php,清空之前安装的PHP
[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common
  1. 安装php
[root@web01 ~]#vim /etc/yum.repos.d/php.repo
[root@web01 ~]#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 --nogpgcheck
  1. 配置php-fpm用户与Nginx的运行用户保持一致
[root@web01 ~]#sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
[root@web01 ~]#sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf
  1. 启动php-rpm加入开机自启
[root@web01 ~]#systemctl start php-fpm
[root@web01 ~]#systemctl enable php-fpm
  1. 查看php-fpm是否开启,默认9000端口
[root@web01 ~]# netstat -lntup
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1879/php-fpm: maste 

  1. 查看php-fpm用户是否正确
[root@web01 ~]# ps aux|grep php-fpm
root       1879  0.0  3.2 490176 32640 ?        Ss   22:22   0:00 php-fp: master process (/etc/php-fpm.conf)
www        1880  0.0  0.7 490176  7592 ?        S    22:22   0:00 php-fp
  1. 安装Mariadb数据库
[root@web01 ~]# yum -y install mariadb-server
  1. 开启mariadb
[root@web01 ~]# systemctl start mariadb
[root@web01 ~]# systemctl enable mariadb
  1. 给Mariadb配置密码文件
[root@web01 ~]# mysqladmin password 'aaa123.com'
  1. 检查配置的密码是否正确
[root@web01 ~]# mysql -uroot -paaa123.com
MariaDB [(none)]>          #出现则正确
  1. 创建目录/code
[root@web01 ~]# mkdir /code
[root@web01 ~]# cd /code/
  1. 安装WordPress
[root@web01 code]# wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz
  1. 先解压WordPress,然后删除WordPress压缩包
[root@web01 code]# tar xf wordpress-5.0.3-zh_CN.tar.gz
[root@web01 code]# rm -rf wordpress-5.0.3-zh_CN.tar.gz 
  1. 授权WordPress属组属主为www用户
[root@web01 code]# chown -R www.www /code/wordpress
  1. 创建数据库
[root@web01 code]# mysql -uroot -paaa123.com -e "create database wordpress;"
  1. 检查是否创建成功
[root@web01 code]# mysql -uroot -paaa123.com -e "show databases;"
  1. 修改nginx下conf.d下的配置文件
[root@web01 ~]# cd /etc/nginx/conf.d/
[root@web01 conf.d]# vim wordpress.conf
server {
    listen 80;
    server_name wordpress.sheng.com;
    root /code/wordpress;
    index index.php index.html;

    location ~ \.php$ {
        root /code/wordpress;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
  1. 检查配置文件是否正确
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 重启Nginx
[root@web01 conf.d]# systemctl reload nginx
  1. 部署知乎产品Wecenter,首先配置Nginx虚拟主机站点,域名为zh.oldboy.com
[root@web01 conf.d]# vim zh.conf
server {
    listen 80;
    server_name zh.sheng.com;
    root /code/zh;
    index index.php index.html;

        location ~ \.php$ {
        root /code/zh;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
}
  1. 创建/code/zh目录
[root@web01 ~]# cd /code
[root@web01 code]# mkdir zh
  1. 官方下载知乎
https://www.wecenter.com/downloads/
  1. 解压并授权属组属主为www用户
[root@web01 zh]# unzip WeCenter_3-6-0.zip
[root@web01 zh]# chown -R www.www /code/zh/
  1. 创建zh数据库,并检查是否创建成功
[root@web01 zh]# mysql -uroot -paaa123.com -e "create database zh;"
[root@web01 zh]# mysql -uroot -paaa123.com -e "show databases;"
  1. 检查nginx配置是否正确
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 重新加载Nginx服务
[root@web01 zh]# systemctl reload nginx
  1. 部署商城服务产品,编制配置文件
[root@web01 conf.d]# vim phpshe.conf 
server {
    listen 80;
    server_name phpshe.sheng.com;
    root /code/phpshe;
    index index.php index.html;

        location ~ \.php$ {
        root /code/phpshe;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
}
  1. 检查Nginx配置是否正确
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 创建phpshe目录
[root@web01 code]# mkdir phpshe
  1. 授权phpshe目录
[root@web01 phpshe]# chown -R www.www /code/phpshe/
  1. 创建phpshe数据库,并检查是否创建成功.
[root@web01 ~]# mysql -uroot -paaa123.com -e "create database phpshe;"
[root@web01 ~]# mysql -uroot -paaa123.com -e "show databases;"

你可能感兴趣的:(nginx,linux,mysql)