一、概述
LNMP架构是一种常用于搭建动态网站的服务器架构组合,其名称由以下四个组件的首字母缩写组成:
-
Linux:操作系统。Linux具有开源、稳定、安全、高性能等特点,是服务器领域广泛使用的操作系统。它为其他组件提供了运行环境和资源管理功能。
-
Nginx:高性能的HTTP和反向代理服务器。Nginx以其高并发处理能力、低资源消耗和快速响应而闻名。它通常用于处理静态资源(如HTML、CSS、图片等)的请求,并可以作为反向代理服务器,将动态请求转发到后端服务器。
-
MySQL(或MariaDB):关系型数据库管理系统。MySQL是目前最流行的开源数据库之一,用于存储网站的动态数据,如用户信息、文章内容、评论等。它支持SQL语言,能够高效地进行数据查询、插入、更新和删除操作。
-
PHP(或Python、Perl等):服务器端脚本语言。PHP是专门为Web开发设计的脚本语言,用于处理动态内容。它可以从MySQL数据库中读取数据,并生成动态的HTML页面。PHP代码通常嵌入在HTML文档中,通过Nginx转发请求到PHP-FPM(PHP FastCGI Process Manager)进行处理。
二、工作流程
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连接数据库发起查询操作
三、LNMP架构优点
(1)高性能:Nginx的高并发处理能力和PHP的高效执行能力,使得网站能够快速响应用户请求。
(2)灵活性:各组件均为开源软件,可以根据需求进行定制和优化。
(3)成本低:开源软件无需购买昂贵的许可证。
(4)安全性:Linux系统的安全性较高,同时MySQL和PHP也有丰富的安全机制。
四、部署LNMP架构
4.1、安装Linux操作系统-kylinv10系统(虚拟机安装为例)
4.1.1、创建虚拟机(10.0.0.200)
4.1.2、安装麒麟操作系统
将麒麟系统镜像插入到vmware虚拟机的drom
右键虚拟机->设置->使用ISO映像文件->浏览选择kylinsp3镜像
4.1.3、修改虚拟交换机信息
虚拟机----左上角编辑----虚拟网络编辑
4.2、安装Nginx服务
4.2.1、安装Nginx官方扩展仓库
vim /etc/yum.repos.d/nginx.conf
[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
4.2.2、安装Nginx服务并检查版本
yum -y install nginx
nginx -v
4.2.3、创建启动用户www
groupadd -g 666 www
useradd -u 666 -g 666 -M -s /sbin/nologin www
4.2.4、修改Nginx启动用户
vim /etc/nginx/nginx.conf
user www;
worker_processes auto;error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
4.2.5、启动Nginx并加入开机自启动
systemctl start nginx
systemctl enable nginx
4.3、安装PHP服务
4.3.1、首先查看是否有PHP,如果有则卸载
rpm -qa | grep 'php-fpm'
4.3.2、安装PHP
yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-process php-xml php-json
4.3.3、修改PHP配置文件
vim /etc/php-fpm.d/www.conf
同步启动用户与Nginx保持一致 www用户
24:user = www
26:group = www
修改监听方式
38:listen = 127.0.0.1:9000
4.3.4、启动PHP并加入开机自启动
systemctl start php-fpm
systemctl enable php-fpm
4.3.5、检查PHP项目是否启动
netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1999/php-fpm: maste
4.4、安装MySQL服务
4.4.1、安装MySQL服务
yum -y install mariadb-server
4.4.2、启动MySQL服务
systemctl start mariadb
systemctl enable mariadb
4.4.4、配置数据库登录密码
mysqladmin password 'lyx123.com'
4.4.5、登录测试
mysql -uroot -plyx123.com
4.5、Nginx连接PHP
4.5.1、编辑配置文件
vim /etc/nginx/conf.d/php.conf
server {
listen 80;
server_name php.lyx.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;
}
}
4.5.2、检查配置文件是否正确
nginx -t
4.5.3、写一个PHP文件测试一下是否可以正常连接
vim /code/index.php
<?php
phpinfo();
?>
4.5.4、本地hosts解析
10.0.0.7 php.lyx.com
4.5.5、浏览器测试访问
4.6、PHP连接数据库
#需要在php的配置文件中写入数据库的IP+用户名+密码+端口可以测试连接数据库
cd /code/
vim mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "lzy123.com";// 创建连接
$conn = mysqli_connect($servername, $username, $password);// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "小哥哥,php可以连接MySQL...";
?>
五、网站部署演练 (wordpress)
5.1、 编辑wordpress配置文件
vim /etc/nginx/wordpress.conf
server {
listen 80;
server_name www.wp.com;
root /app/wp;
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;
}
}
5.2、检查配置文件是否正确
nginx -t
5.3、重启Nginx服务
systemctl restart nginx
5.4、创建代码目录
mkdir -p /app/wp
5.5、修改代码目录文件属主和属组
chown -R www.www /app/wp
5.6、下载wordpress代码并解压
wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz
tar zxf wordpress-5.0.3-zh_CN.tar.gz
5.7、本地hosts解析
10.0.0.200 www.wp.com
5.8、浏览器测试访问
六、 架构拆分
6.1、创建新的虚拟机(10.0.0.51)
6.2、在新的虚拟机上安装MySQL数据库
yum -y install mariadb-server
6.3、开启数据库并加入开机自启动
systemctl start mariadb
systemctl enable mariadb
6.4、导出虚拟机(10.0.0.200)中的数据库数据
mysqldump -uroot -plyx.com -A > /root/all.sql
6.5、将导出的数据上传到虚拟机(10.0.0.51)中
scp /root/all.sql root@10.0.0.51:/root/
6.6、在虚拟机(10.0.0.51)上将数据导入
mysql -uroot < /root/all.sql
6.7、重启数据库
systemctl restart mariadb
6.8、创建远程连接的普通用户
mysql -uroot -plyx123.com
grant all on *.* to lyx@'%' identified by 'lyx123.com';
6.9、查看数据库数据
show databases;
7.0、在虚拟机(10.0.0.200)测试远程连接
mysql -h 172.16.1.51 -ulyx -plyx123.com
7.1、修改业务信息代码
7.2、停止虚拟机(10.0.0.200)中的数据库
systemctl stop mariadb
七、小结
LNMP架构广泛应用于各种动态网站和Web应用的开发和部署,是目前Web开发领域非常流行的一种架构组合。