IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> LNMP架构 -> 正文阅读

[PHP知识库]LNMP架构


1. LNMP架构概述

1. 什么是LNMP

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

2. LNMP架构是如何工作的
首先nginx服务是不能处理动态请求,那么当用户发起动态请求时,nginx又是如何进行处理的?
当用户发起http请求,请求会被nginx处理,如果是静态资源请求nginx则直接返回,如果是动态请求nginx则通过fastcgi协议转交给后端的PHP程序处理,具体如下:
在这里插入图片描述

3. nginx与fastcgi详细工作流程如下图所示:
在这里插入图片描述

  1. 用户通过http协议发起请求,请求会先抵达LNMP架构中的nginx
  2. nginx会根据用户的请求进行Location规则匹配
  3. location如果匹配到请求是静态,则由nginx读取本地直接返回
  4. location如果匹配到请求的动态,则由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

2. LNMP架构环境部署

2.1 使用官方仓库安装nginx

[root@study ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.

# 注意:默认情况下,默认情况下,储存库对于稳定的服务器软件包是优先使用 如果你想使用的主服务器的软件包, 运行以下命令:
yum-config-manager --enable nginx-mainline

# 安装nginx
[root@study ~]# yum install -y nginx

2.2 启动nginx,并加入开启自启

[root@study ~]# systemctl start nginx
[root@study ~]# systemctl enable nginx

2.3 使用第三方扩展源安装php7.1

# 首先移除系统中自带的旧版本
[root@study ~]# yum remove php-mysql-5.4 php php-fpm php-common

# 设置php扩展源
[root@study ~]# cat  /etc/yum.repos.d/php.repo
[php]
name = php Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0


# 安装php
# 首先更新yum源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

[root@study ~]# 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

2.4 安装Mariadb数据库

[root@study ~]# yum install mariadb-server mariadb -y 

# 启动mariadb数据库,并加入开机自启
[root@study ~]# systemctl start mariadb
[root@study ~]# systemctl enable mariadb

# 给数据库配置登录密码。并是新密码登录数据库
[root@study ~]# mysqladmin password "Bgx123.com"
[root@study ~]# mysql -uroot -pBgx123.com

3. LNMP架构环境配置

在将nginx与php集成过程中,需要先了解Fastcgi代理配置语法

3.1 设置fastcgi服务器的地址,改地址可以指定为域名或ip地址,以及端口

Syntax: fastcgi_pass address;
Default: -
Context: location, if in location

# 语法示例
fastcgi_pass localhost:9000;
fastcgi_pass unix:/tmp/fastcgi.socket;

3.2 设置fastcgi默认的首页文件,需要结合fastcgi_param 一起设置

Syntax: fastcgi_index name;
Default: -
Context: http,server, location

3.3 通过fastcgi_param设置变量,并将设置的变量传递到后端的fastcgi服务器

Syntax: fastcgi_param parameter value [if_not_empty];
Default: -
Context: http,server, location

# 语法示例
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name;

3.4 通过图形方式展示fastcgi_index与fastcgi_param作用
在这里插入图片描述在这里插入图片描述

4. 配置nginx与php集成

1. 编写配置文件

[root@mage conf.d]# pwd 
/etc/nginx/conf.d
[root@study conf.d]# cat php.conf 
server {
	listen 80;
	server_name php.study.com;
	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 fastcgi_params;
	}
}

2. 重载nginx

[root@study 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
[root@study conf.d]# systemctl restart nginx 

# 启动php-fpm,并加入开机自启
[root@study conf.d]# systemctl start php-fpm
[root@study conf.d]# systemctl enable php-fpm

3. 准备一个php文件,测试

[root@study conf.d]# cat  /code/page.php
<?php
	phpinfo();
?>

4. 在windows中,配置hosts解析文件

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
192.168.10.132      game.boyma.com
192.168.10.132      test1.study.com
192.168.10.132      ma.study.com
192.168.10.132      php.study.com

5. 启动数据库

[root@study conf.d]# systemctl start mariadb
[root@study conf.d]# systemctl enable mariadb
[root@study conf.d]# mysqladmin password 'Bgm123.com'	# 配置密码(前提是MySQL是空密码)
[root@study conf.d]# mysql -uroot -pBgm123.com	# 使用账号密码登录MySQL 

6. 准备一个php文件,测试能否正常连接数据库
在/code目录下创建一个以mysql.php结尾的文件

<?php
	$servername = 'localhost';
	$usernaem = "root";
	$password = "Bgm123.com";

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

	//检测连接
	if (!$conn) {
			die("Connection failed: " . mysqli_connect_error());
	}
	echo "php连接MySQL数据库成功!";
?>

5. lnmp架构部署WordPress

1. 定义nginx内容

[root@centos8 /]#vim /etc/nginx/conf.d/php.conf 

server {
        listen 80;
        server_name blog.study.com;
        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 fastcgi_params;
        }
}

2. 创建站点目录,并下载WordPress安装包

[root@centos8 /]#mkdir /code
[root@centos8 /]#cd /code/
[root@centos8 code]#wget https://wordpress.org/latest.tar.gz

# 解压下载的文件
[root@centos8 code]#tar xf latest.tar.gz 
[root@centos8 code]#ls 
latest.tar.gz  wordpress

3. 修改nginx与php-fpm的运行用户为www,并授权代码属主和属主都为www

# 创建www用户
[root@centos8 code]#groupadd -g 666 www
[root@centos8 code]#useradd -u666 -g666 www

# 修改nginx与php-fpm管理进程的运行身份为www
[root@centos8 code]#sed -i '/^user /c user www;' /etc/nginx/nginx.conf
[root@centos8 code]#sed -i '/^user/c user =  www' /etc/php-fpm.d/www.conf
[root@centos8 code]#sed -i '/^group/c group =  www' /etc/php-fpm.d/www.conf

# 重启nginx和php-fpm
[root@centos8 code]#systemctl restart nignx
[root@centos8 code]#systemctl restart php-fpm

# 修改文件的属主和属组
[root@centos8 code]#chown -R www.www /code/wordpress

4. 创建数据库

MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.002 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
+--------------------+
4 rows in set (0.002 sec)

5. 配置WordPress
这里安装WordPress图形化指引就可以配置了

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 11:53:54  更:2021-08-26 11:55:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 2:46:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码