Web进阶LNMP网站部署

Web进阶LNMP网站部署

LNMP架构工作流程

什么是LNMP

LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL、P=PHP

工作流程

首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。 当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过 fastcgi协议转交给后端的PHP程序处理,具体如下图所示

微信图片_20210720191018

Nginx与Fastcgi详细工作流程

微信图片_20210720191055

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

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

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

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

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

6.warrap 进程会调用 php 程序进行解析,如果只是解析代码 php 直接返回

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

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

部署LNMP架构

1.安装nginx

[root@web01 ~]$ yum install -y nginx

2.安装php

# 1.更改yum源,系统自带epel源php版本过低
[root@web01 ~]$ wget http://us-east.repo.webtatic.com/yum/el7/webtatic-release.rpm 
[root@web01 ~]$ yum localinstall webtatic-release.rpm -y
[root@web01 ~]$ ll /etc/yum.repos.d/
total 28
-rw-r--r--. 1 root root 1759 Jul  5 19:29 CentOS-Base.repo
-rw-r--r--. 1 root root  664 Jul  5 19:24 epel.repo
#下面两个源是依赖
-rw-r--r--  1 root root 1050 Nov  1  2020 epel.repo.rpmnew
-rw-r--r--  1 root root 1149 Nov  1  2020 epel-testing.repo
#下面三个源是php的源
-rw-r--r--  1 root root  963 Oct  9  2014 webtatic-archive.repo
-rw-r--r--  1 root root  865 Oct  9  2014 webtatic.repo
-rw-r--r--  1 root root  963 Oct  9  2014 webtatic-testing.repo

# 2.生成缓存 
[root@web01 ~]$ yum makecache

# 3.安装php 
[root@web01 ~]$ yum -y install php71w php71w-cli php71w-common php71w-devel php71wembedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-peclmongodb

# 4.统一用户 
# 创建www用户组
[root@web01 ~]$ groupadd www -g 666 
# 创建www用户 
[root@web01 ~]$ useradd www -u 666 -g 666 -s /sbin/nologin -M
# 修改nginx配置文件使用www用户 
[root@web01 ~]$ vim /etc/nginx/nginx.conf 
user www; 
# 修改php服务使用www用户 
[root@web01 ~]$ vim /etc/php-fpm.d/www.conf 
[www] 
user = www 
group = www

# 5.启动php-fpm 
[root@web01 ~]$ systemctl start php-fpm

# 6.加入开机自启 
[root@web01 ~]$ systemctl enable php-fpm

# 7.检查php的进程
[root@web01 ~]$  ps -ef|grep '[p]hp-fpm' 
root       8885      1  0 16:03 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
www       10468   8885  0 17:10 ?        00:00:01 php-fpm: pool www
www       10469   8885  0 17:10 ?        00:00:00 php-fpm: pool www
www       10470   8885  0 17:10 ?        00:00:00 php-fpm: pool www
www       10471   8885  0 17:10 ?        00:00:00 php-fpm: pool www
www       10472   8885  0 17:10 ?        00:00:00 php-fpm: pool www
www       10713   8885  0 17:43 ?        00:00:00 php-fpm: pool www
www       10767   8885  0 18:00 ?        00:00:00 php-fpm: pool www

# 8.检查php端口 
[root@web01 ~]$ netstat -lntup|grep 9000 
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      8885/php-fpm: maste 

3.安装数据库

# 1.安装mariadb
[root@web01 ~]$ yum install -y mariadb-server

# 2.启动mariadb 
[root@web01 ~]$ systemctl start mariadb

# 3.开机自启mariadb 
[root@web01 ~]$ systemctl enable mariadb

# 4.检查MySQL端口 
[root@web01 ~]$ netstat -lntup|grep 3306 
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      9258/mysqld         

# 5.检查MySQL进程 
[root@web01 ~]$ ps -ef|grep '[m]ysqld'
mysql      9093      1  0 16:08 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql      9258   9093  0 16:08 ?        00:00:07 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

# 6.设置mariadb密码为123
[root@web01 ~]$ mysqladmin -uroot password '123'

# 7.客户端连接命令 
[root@web01 ~]$ mysql -uroot -p123

将Nginx和PHP建立连接

1.修改nginx配置文件

[root@web01 nginx]$ vim /etc/nginx/conf.d/test_php.conf 
server {
        listen 80;
        server_name localhost;
        root /code;

        location  / {
                index index.php index.html;
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
}

2.创建站点目录

[root@web01 nginx]$ mkdir /code

3.编辑php测试文件

[root@web01 nginx]$ vim /code/info.php 
<?php   
phpinfo(); 
?>

在浏览器中访问:10.0.0.7/info.php

测试PHP连接MySQL

[root@web01 nginx]$ vim /code/mysql.php
<?php    
	$servername = "localhost";    
	$username = "root";    
	$password = "123";
	
    // 创建连接    
    $conn = mysqli_connect($servername, $username, $password);
    
    // 检测连接    
    if (!$conn) {        
    	die("Connection failed: " . mysqli_connect_error());
        }    
        echo "小哥哥,php可以连接MySQL..."; 
?>

<img style='width:100%;height:100%;' src=https://blog.driverzeng.com/zenglaoshi/php_mysql.png>

在浏览器中访问:10.0.0.7/mysql.php

部署博客软件(wordpress)

wordpress官网:https://wordpress.org

1.下载wordpress

[root@web01 code]$ wget http://test.driverzeng.com/Nginx_Code/wordpress-5.0.3-zh_CN.tar.gz

2.解压

[root@web01 code]$ tar xf latest.tar.gz
[root@web01 ~]$ ll /code/
total 10844
drwxr-xr-x 5 www  www      4096 Jul 20 18:00 wordpress
-rw-r--r-- 1 root root 11098483 Jan 11  2019 wordpress-5.0.3-zh_CN.tar.gz

3.递归修改wordpress文件权限

[root@web01 code]$ chown -R www.www /code/wordpress

4.编写wordpress的nginx配置文件

[root@web01 ~]$ vim /etc/nginx/conf.d/test_php.conf 
server {
        listen 80;
        server_name localhost;
        root /code/wordpress;

        location  / {
                index index.php index.html;
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
}

5.连接到MySQL中,创建一个给wordpress使用的库

[root@web01 wordpress]$ mysql -uroot -p123
# 创建数据库  库名wp  字符集是utf8 
MariaDB [(none)]> create database wp charset utf8;
# 查看有几个库 
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wp                 |
+--------------------+
5 rows in set (0.00 sec)

#修改密码:mysql -uroot -p 123 passwd '新密码'

打开浏览器访问http://10.0.0.7

微信图片_20210720195914

微信图片_20210720200034

微信图片_20210720200114

微信图片_20210720200222

进入后台就可以自定义主题并发布博客啦~

posted @ 2021-08-09 21:38  AnOldSong  阅读(61)  评论(0编辑  收藏  举报