[Nginx系列-九]Nginx基础架构LNMP

背景

 php是世界上最好的语言!!(纯开玩笑,不引战....哈哈哈),前面几章节我们说了nginx的安装,nginx的模块介绍,nginx的反向代理和负载均衡,今天我们把前面的内容做个小总结,后面我们将用LNMP架构来回顾前面的知识。

 LNMP介绍

 1.    什么是LNMP

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

        nginx仅支持解析html文件;图片传输;视频传输;不支持 php、python、java等脚本文件,因此php,python都是nginx通过fastcgi,uwcgi协议来转发的,java这是通过tomcat。

        php在之前一度都是非常火热的,只是在这几年中慢慢开始沉沦,由于php的架构相对来说比较简单,所以今天的示例我们将用php来做实验。

 

 2.    LNMP如何实现

1) 用户首先通过 http 协议发起请求,请求会先抵达Nginx。
2) Nginx 根据用户的请求进行 Location 规则匹配。
3) Location 如果匹配到请求是静态,则由 Nginx 读取本地直接返回。
4) Location如果匹配到请求是动态,则由Nginx将请求转发给fastcgi协议。
5) fastgi收到后会将请求交给php-fpm管理进程。
6) php-fpm管理进程接收到后会调用具体的worker工作进程, worker进程会调用php解析器解析代。码,php解析后直接返回。
7) 如果有查询数据库操作,则由php连接数据库(用户 密码 IP)发起查询的操作。
8) 用户->http->nginx->fastcgi->php-fpm->php->tcp->mysql。
9) 最终数据由mysql->tcp->php->php-fpm->fastcgi->nginx->http->user。

 

 LNMP部署

 

 1.    Nginx安装及配置

 1.1    安装Nginx

安装详细步骤:Nginx安装

 1.2    配置Nginx

##   创建php访问目录
root@web1:~#  mkdir   /php 

##  启动nginx
root@web1:~#  systemctl  restart nginx
root@web1:~#  systemctl  enable   nginx

2.   PHP安装及配置

 2.1    安装PHP

         由于是实验环境,为了方便我们直接通过apt命令安装。

##  添加php的镜像源
root@web1:~# sudo apt-add-repository ppa:ondrej/php

##  更新镜像源
root@web1:~# sudo  apt  update

##  安装php
root@web1:~# sudo  apt  install  -y   php8.1

## 启动php
root@web1:~# systemctl  start  php8.1-fpm

 2. 2    修改配置

         该版本的php默认不是监听在127.0.0.1:9000的上,而是监听在pid的文件上,为了后续Nginx的配置,我们需要修改监听方式。

1.  修改监听端口
root@web1:~# grep 'listen = 9000' /etc/php/8.1/fpm/pool.d/www.conf 
listen = 9000
root@web1:~#

2.  重启php8.1-fpm服务。

3.  查看监听是否正常
root@web1:~# netstat -ntpl |grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN      34493/php-fpm: mast 
root@web1:~#

3.   配置nginx的fastcgi转发

server {
    listen       80;
    server_name  www.php_test.com php_test.com;

    access_log  /var/log/nginx/php.access.log  main;
    root   /php;

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

    location ~ .*\.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;

    }
}

 4.   创建index.php文件

[root@web01 php]# cat /php/index.php 
<?php
	phpinfo();
?>

[root@web01 ~]# systemctl restart nginx

5.    访问

 6.   总结

        当用户请求http://www.php_test.com/index.php时,对于nginx服务器而言,是无法处理.php这样的脚本。
1)当用户发起 HTTP 请求,请求首先被 Nginx 接收;
2)   Nginx 通过预先定义好的 location 规则进行匹配;
3)   Nginx 将匹配到的动态内容,通过 fastcgi 协议传到给后端的 php 应用服务处理。 

7.    Mysql安装

         同样的,为了方便,通过apt命令安装mariadb

##  安装mariadb
root@web1:~#sudo  apt   install   mariadb-server

##  初始化数据库,设置root密码
root@web1:~#mysql_secure_installation

##   修改mysql监听0.0.0.0,默认为127.0.0.1
root@web3:/etc/mysql/mariadb.conf.d# grep bind-address  50-server.cnf 
bind-address            = 0.0.0.0


##  创建php连接的数据库用户
MariaDB>create  user  'test'@'%'  indentified by 'qwer123!!';

#  赋予用户权限
MariaDB >grant all  on  *.*  to 'test'@'%';

 8.    测试数据库是否能正常连接

<?php
	$servername = '192.168.65.132';
	$username = 'test';
	$password = 'qwer123!!';
	$dbname = 'php_test';
	// 创建连接
	$conn = mysqli_connect($servername,$username,$password,$dbname);
	// 检查连接
	if (!$conn) {
		die("Connection failed: " . mysqli_connect_error());
	
	}
	echo "php连接MySQL数据库成功";
?>

 测试成功

root@web1:/php# php8.1 index.php
php连接MySQL数据库成功
root@web1:/php# 

注意: 

 通过apt的命令安装php的时候没有安装php8.1-mysql的模块,所以在连接的时候可能会报错,只需要执行sudo  apt  install   php8.1-mysql即可。

root@web1:/php# php8.1 index.php 
PHP Fatal error:  Uncaught Error: Call to undefined function mysqlli_connect() in /php/index.php:7
Stack trace:
#0 {main}
  thrown in /php/index.php on line 7

单节点部署wordpress

         wordpress就是基于LNMP的架构,我么只需要下载wordpress的代码存放在/php的相关目录下即可。

##    下载wordpress代码
root@web1:/php/wordpress# wget https://cn.wordpress.org/latest-zh_CN.tar.gz -O /php

##  解压
root@web1:/php/wordpress# tar -xvf  latest-zh_CN.tar.gz

root@web1:/php/wordpress# ll
total 224
drwxr-xr-x  5 www-data www-data  4096  8月 29 12:31 ./
drwxr-xr-x  3 www-data www-data  4096  8月 29 13:57 ../
-rw-r--r--  1 www-data www-data   405  2月  6  2020 index.php
-rw-r--r--  1 www-data www-data 19915  1月  1  2022 license.txt
-rw-r--r--  1 www-data www-data  7401  3月 23 05:11 readme.html
-rw-r--r--  1 www-data www-data  7165  1月 21  2021 wp-activate.php
drwxr-xr-x  9 www-data www-data  4096  8月 15 17:00 wp-admin/
-rw-r--r--  1 www-data www-data   351  2月  6  2020 wp-blog-header.php
-rw-r--r--  1 www-data www-data  2338 11月 10  2021 wp-comments-post.php
-rw-rw-rw-  1 www-data www-data  3283  8月 29 12:31 wp-config.php
-rw-r--r--  1 www-data www-data  3001 12月 14  2021 wp-config-sample.php
drwxr-xr-x  6 www-data www-data  4096  8月 29 12:36 wp-content/
-rw-r--r--  1 www-data www-data  3943  4月 28 17:49 wp-cron.php
drwxr-xr-x 26 www-data www-data 12288  8月 15 17:00 wp-includes/
-rw-r--r--  1 www-data www-data  2494  3月 20 04:31 wp-links-opml.php
-rw-r--r--  1 www-data www-data  3973  4月 12 09:47 wp-load.php
-rw-r--r--  1 www-data www-data 48498  4月 29 22:36 wp-login.php
-rw-r--r--  1 www-data www-data  8577  3月 23 00:25 wp-mail.php
-rw-r--r--  1 www-data www-data 23706  4月 12 17:26 wp-settings.php
-rw-r--r--  1 www-data www-data 32051  4月 11 19:42 wp-signup.php
-rw-r--r--  1 www-data www-data  4748  4月 11 19:42 wp-trackback.php
-rw-r--r--  1 www-data www-data  3236  6月  9  2020 xmlrpc.php
root@web1:/php/wordpress# 


##  按照提示配置连接的数据库

 访问

 多节点部署wordpress

 

 再搭建一台wordpress服务器,见上述配置(与上述配置一致),由于第一台服务器已经连接了数据库,我们直接复制/php/wordpress下所有配置好的配置文件到第二台服务器的/php/wordpress中即可。

1.    配置Nginx负载均衡节点

upstream webs{
    server 192.168.65.130:8081;
    server 192.168.65.131:80;
}

server {
    listen 80;
    server_name php_test.com www.php_test.com;
    access_log  /var/log/nginx/php.access.log  main;

    location /  {
        proxy_pass http://webs;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }
}

 客户端访问:

查看两台wordpress服务器的访问日志,如下:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小肖同学..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值