14 KiB
14.LNMP
14.LNMP
1. LNMP架构概述
1.1 什么是LNMP
LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL、P=PHP
1.2 LNMP架构是如何工作的
- 首先nginx服务是不能处理动态请求,那么当用户发起动态请求时,nginx无法处理
- 当用户发起http请求,请求会被nginx处理,如果是静态资源请求nginx则直接返回,如果是动态请求nginx则通过fastcgi协议转交给后端的PHP程序处理
1.3 Nginx与fastcgi详细工作流程
- 用户通过http协议发起请求,请求会先抵达LNMP架构中的nginx;
- nginx会根据用户的请求进行location规则匹配;
- location如果匹配到请求是静态,则由nginx读取本地直接返回;
- location如果匹配到请求是动态,则由nginx将请求转发给fastcgi协议;
- fastcgi收到请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作进程wrapper;
- wrapper进程会调用PHP程序进行解析,如果只是解析代码,php直接返回;
- 如果有查询数据库操作,则由php连接数据库(用户 密码 ip)发起查询的操作;
- 最终数据由mysql-->php-->php-fpm-->fastcgi-->nginx-->http-->user
2. LNMP架构环境部署
2.1 安装nginx
参考课件开始部分中的编译安装,当然也可以通过yum安装,但是yum安装的时候需要注意配置文件的路径
自行完成nginx的编译安装...
2.2 安装php
- 安装php8.0全家桶
[root@localhost ~]# yum install -y epel-release
# 安装php仓库
[root@localhost ~]# yum install -y dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm --skip-broken
[root@localhost ~]# yum install -y php php-cli php-curl php-mysqlnd php-gd php-opcache php-zip php-intl
- 更改php配置文件,启动监控9000端口
[root@localhost ~]# vim /etc/php-fpm.d/www.conf
......
;listen = /run/php-fpm/www.sock
listen = 9000
......
- 更改php-fpm用户,与nginx保持一致
[root@localhost ~]# sed -i '/^user/c user = nginx' /etc/php-fpm.d/www.conf
[root@localhost ~]# sed -i '/^group/c group = nginx' /etc/php-fpm.d/www.conf
- 启动php-fpm管理器
[root@localhost ~]# systemctl enable --now php-fpm
[root@localhost ~]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; pr>
Active: active (running) since Fri 2025-02-07 19:26:10 CST; 10s ago
Main PID: 34396 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic>
Tasks: 6 (limit: 10888)
Memory: 29.1M
CPU: 60ms
CGroup: /system.slice/php-fpm.service
├─34396 "php-fpm: master process (/etc/php-fpm.conf)"
├─34397 "php-fpm: pool www"
├─34398 "php-fpm: pool www"
├─34399 "php-fpm: pool www"
├─34400 "php-fpm: pool www"
└─34401 "php-fpm: pool www"
# 检查9000端口号是否监听
[root@localhost ~]# ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 511 *:9000 *:*
LISTEN 0 128 [::]:22 [::]:*
2.3 安装Mariadb数据库
# 安装mariadb数据库软件
[root@localhost ~]# yum install -y mariadb-server mariadb
# 启动数据库并且设置开机自启动
[root@localhost ~]# systemctl enable --now mariadb
# 设置mariadb的密码
[root@localhost ~]# mysqladmin password '123456'
# 验证数据库是否工作正常
[root@localhost ~]# mysql -uroot -p123456 -e "show databases;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3. LNMP架构环境配置
- 在将nginx与PHP集成的过程中,需要先了解fastcgi代理配置语法
3.1 设置fastcgi服务器的地址
- 该地址可以指定为域名或IP地址,以及端口
Syntax: fastcgi_pass address;
Default:-
Context:location,if in location
#语法示例
fastcgi_pass location: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 php探针测试
为了测试php环境是否正常,我们可以编写一个php文件,然后查看是否运行正常来进行判断
# 首先为php探针创建一个虚拟主机
[root@localhost ~]# vim /apps/nginx/conf.d/php.conf
server {
listen 80;
server_name php.iproot.cn;
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;
}
}
# 测试nginx配置是否正确
[root@localhost ~]# nginx -t
# 重启nginx服务
[root@localhost ~]# systemctl restart nginx
编写php文件,在php文件中编写如下代码
[root@localhost ~]# mkdir /code
[root@localhost ~]# vim /code/info.php
<?php
phpinfo();
?>
在浏览器中访问php.iproot.cn
记得更改windows的hosts文件,可以得到如下的结果:
3.5 测试数据库连接
为了确保php能正确访问数据库,我们可以编写如下php代码用于验证数据库是否正确连接
[root@localhost ~]# vim /code/mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "123456";
// 创建连接
$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接MySQL...成功!";
?>
使用浏览器访问,可以得到数据库连接的结果:
3.6 安装phpmyadmin
为了方便的使用数据库,我们可以安装数据库图形化管理工具phpmyadmin
# 为数据库管理工具创建虚拟主机
[root@localhost ~]# vim /apps/nginx/conf.d/mysql.conf
server {
listen 80;
server_name mysql.iproot.cn;
root /code/phpmyadmin;
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;
}
}
# 检查nginx配置文件,并且重启
[root@localhost ~]# nginx -t
[root@localhost ~]# systemctl restart nginx
# 下载phpmyadmin源码
[root@localhost ~]# cd /code/
[root@localhost code]# wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip
# 解压软件包,并且重命名
[root@localhost phpmyadmin]# unzip phpMyAdmin-5.1.1-all-languages.zip
[root@localhost phpmyadmin]# mv phpMyAdmin-5.1.1-all-languages phpmyadmin
# 添加session文件夹权限
[root@localhost phpmyadmin]# chown nginx.nginx /var/lib/php/session
下面浏览器访问phpmyadmin页面,同样记得更改windows下的hosts文件
输入数据库用户名root
和密码123456
就可以进入图形化数据库管理页面了
4. 安装博客系统
4.1 部署虚拟主机
# 为博客创建虚拟主机
[root@localhost ~]# vim /apps/nginx/conf.d/typecho.conf
server {
listen 80;
server_name blog.iproot.cn;
root /code/typecho;
index index.php index.html;
location ~ .*\.php(\/.*)*$ {
root /code/typecho;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 检查nginx配置文件,并且重启
[root@localhost ~]# nginx -t
[root@localhost ~]# systemctl restart nginx
# 创建typecho目录
[root@localhost ~]# mkdir /code/typecho
[root@localhost ~]# cd /code/typecho
[root@localhost ~]# wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
# 解压源码
[root@localhost ~]# unzip typecho.zip
4.2 创建数据库
点击数据库,输入数据库名之后,就可以点击创建
4.3 安装博客系统
下面就可以开始进入网站安装的部分了,访问博客系统页面
赋予网站根目录下usr/uploads目录权限
[root@localhost typecho]# chmod a+w usr/uploads/
继续下一步,填写数据库密码和网站后台管理员密码
点击开始安装之后,会出现了如下页面,这个是因为php的用户是nginx用户,而/code/typecho文件夹是root用户的,所以这个网站根本没有权限保存数据相关的配置到文件夹中
方法一:直接将typecho文件夹赋予nginx权限
方法二:手动去帮助网站创建网站没有权限的配置文件,下面将会演示方法二
直接在/code/typecho下创建config.inc.php
文件,然后将网页提示内容写入这个文件中
[root@localhost typecho]# vim /code/typecho/config.inc.php
复制网页上的内容进去
配置文件创建完成之后,可以点击创建完毕,继续安装>>
下面是安装成功的页面
4.4 切换主题
默认的主题如下,界面比较的简洁,我们可以给这个网站替换主题,也可以借此加深熟悉我们对Linux命令行的熟练程度
第三方主题商店:https://www.typechx.com/
我们尝试更换这个主题
选择模板下载
然后在打开的github仓库中下载ZIP压缩包
将下载好的主题压缩包上传到博客主题的目录/code/typecho/usr/themes
然后解压主题包,并且将名称改为简单一点的
[root@localhost themes]# unzip Typecho-Butterfly-main.zip
[root@localhost themes]# ls
Typecho-Butterfly-main Typecho-Butterfly-main.zip default
[root@localhost themes]# mv Typecho-Butterfly-main butterfly
[root@localhost themes]# rm -rf Typecho-Butterfly-main.zip
然后登录到博客后台,在设置里更换主题
然后回到博客首页刷新一下,就可以看到新的主题已经应用了~
会有一些图片资源的丢失,稍微了解一点前端知识,就可以将其完善好了。不懂前端的同学,可以去找一些简单一点的主题。
5. 安装网盘
5.1 部署虚拟主机
# 为网盘创建虚拟主机
[root@localhost themes]# vim /apps/nginx/conf.d/kod.conf
server {
listen 80;
server_name kod.iproot.cn;
root /code/kod;
index index.php index.html;
location ~ .*\.php(\/.*)*$ {
root /code/kod;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 检查nginx配置文件,并且重启
[root@localhost ~]# nginx -t
[root@localhost ~]# systemctl restart nginx
# 下载源代码然后解压重命名
[root@localhost ~]# mkdir /code/kod
[root@localhost ~]# cd /code/kod
[root@localhost kod]# wget https://static.kodcloud.com/update/download/kodbox.1.23.zip
# 解压源码
[root@localhost kod]# unzip kodbox.1.23.zip
5.2 创建数据库
5.3 安装网盘系统
浏览器访问此站点,我们发现目录权限,这个比较重要
# 设置权限
[root@localhost kod]# chown -R nginx.nginx /code/kod
添加完成之后,刷新页面,可以看到所有条件都已经符合,就可以直接点击下一步了
填写数据库密码和数据库名
设置系统密码
完成网站安装
下面根据自己的喜好,进行简单的设置就可以正常使用啦!
我们也可以直接在这个上面编辑Linux上的文件,比如我们之前创建的php文件
6. 总结
如何各位同学不是搭建在自己虚拟机上的,是去租用阿里云或者腾讯云,直接搭建,并且购买域名,就可以让自己的网站在互联网上永远在线了