西河刘卡车医 发表于 2025-2-21 22:05:34

基础的LNMP架构网站以及利用redis为网站添加缓存层

前言

LNMP架构是指一种常见的网站服务器架构,它由Linux、Nginx、MySQL/MariaDB和PHP/Perl/Python等开源软件组成。
https://i-blog.csdnimg.cn/direct/22f6dcc6f24349339639fcbab5ffd990.png
1.基本组件


[*]Linux:作为操作系统,Linux为LNMP架构提供了稳固和高效的运行环境。
[*]Nginx:作为高性能的Web服务器和反向代理服务器,Nginx在处理并发连接方面表现出色。
[*]MySQL/MariaDB:作为关系型数据库管理系统,MySQL或其分支MariaDB用于存储网站数据。
[*]PHP/Perl/Python:作为服务器端脚本语言,它们嵌入在HTML中,用于创建动态网页内容。
2.工作原理
[*]哀求处理:用户通过欣赏器发起HTTP哀求,首先到达Nginx服务器。如果是静态资源哀求,Nginx直接返回文件;如果是动态哀求,则通过FastCGI协议转发给PHP-FPM历程处理。
[*]动态内容处理:PHP-FPM管理历程吸取到哀求后,将使命分配给PHP剖析器(PHP-CGI)处理,可能涉及到查询MySQL数据库。处理完成后,效果返回给Nginx,终极发送回用户欣赏器。
3.部署步骤
[*]系统优化:安装Linux系统并进行基础优化,如关闭防火墙和SElinux,设置合适的目次权限。
[*]服务部署:依次安装Nginx、MySQL/MariaDB和PHP,配置各自的服务并启动。
[*]环境测试:完成安装后,进行环境测试以确保各组件正常运行,如创建测试页面验证PHP是否工作正常。
4.架构优势
[*]性能高效:Nginx的高并发处理能力和低资源消耗使得LNMP架构非常得当高流量网站。
[*]成本低廉:所有组成软件均为开源免费,降低了网站运营成本。
[*]机动扩展:LNMP架构支持多种编程语言和数据库,便于根据需求进行扩展。
总的来说,LNMP架构是一种性能高效、成本低廉且机动可扩展的网站服务器架构。它实用于各种规模的Web应用,从个人博客到大型企业网站都能提供稳固可靠的服务。本篇文章介绍搭建基础的LNMP架构网站以及利用redis为网站添加缓存层,提拔Web应用的性能和相应速度。
实验环境介绍

1、一台安装了Nginx、MySQL、Redis的4u4g CentOS7捏造机
如何部署Nginx请看Nginx部署以及划分捏造主机
如何部署MySQL请看运维实战—多种方式在Linux中部署并初始化MySQL
如何部署Redis请看redis集群的三种部署方式——主从复制、哨兵机制、cluster集群
2、Xshell远程连接工具
3、Discuz3.3论坛源码包,可以在官方网站discuz.net或者GitHub下载
一、安装PHP并使其作为服务器端脚本语言

为PHP安装依赖
yum -y install gd libxml2-devel libjpeg-devel libpng-devel
https://i-blog.csdnimg.cn/direct/11dc6fcaadc741898b806b0330d4ef01.png
https://i-blog.csdnimg.cn/direct/8208b7bd01ad429ab7725cb73e5563f7.png
上传php软件包
yum -y install lrzsz
https://i-blog.csdnimg.cn/direct/4c177e2c4da946ebb6fd2bbca43143c1.png
https://i-blog.csdnimg.cn/direct/fc0f415526d34cdba4263f4fb8142b6f.png
将php解压到指定路径下
tar -zxf php-5.3.38.tar.gz -C /usr/src/
cd /usr/src/php-5.3.38/
https://i-blog.csdnimg.cn/direct/f81fc560386248c4956418e64e1a51c6.png
为php进行预编译
./configure --prefix=/usr/local/php --with-gd --with-zlib --with-mysql=mysqlnd --with-config-file-path=/usr/local/php --enable-fpm --enable-mbstring --with-jpeg-dir=/usr/lib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
–prefix=/usr/local/php: 指定PHP安装的根目次为/usr/local/php
–with-gd: 启用GD库支持,GD库用于处理图像
–with-zlib: 启用Zlib压缩库支持,Zlib用于数据压缩息争压缩
–with-mysql=mysqlnd: 利用MySQL Native Driver(mysqlnd)作为MySQL数据库接口
–with-config-file-path=/usr/local/php: 指定PHP配置文件(php.ini)的路径为/usr/local/php
–enable-fpm: 启用FastCGI Process Manager(FPM)
–enable-mbstring: 启用多字节字符串支持
–with-jpeg-dir=/usr/lib: 指定JPEG库的安装目次为/usr/lib。JPEG库用于处理JPEG图像格式
–with-mysql=/usr/local/mysql: 指定MySQL的安装路径为/usr/local/mysql
–with-mysqli=/usr/local/mysql/bin/mysql_config: 指定MySQLi扩展的配置脚本路径为/usr/local/mysql/bin/mysql_config,这是用于配置MySQLi扩展的辅助工具
https://i-blog.csdnimg.cn/direct/0ce752df09c44bfbab60e6cb6f55fa0b.png
https://i-blog.csdnimg.cn/direct/8a7d31435909468691a3a08033fd2e3f.png
编译安装
make -j4 && make install
https://i-blog.csdnimg.cn/direct/590df1eb3bd44d2886b7dcd42f1677dc.png
https://i-blog.csdnimg.cn/direct/a5def5c60b124157b98550c2e96c6bb9.png
PHP安装完毕
编辑nginx的配置文件,配置PHP支持(fastcgi相干信息)
cd /usr/local/nginx/conf/
vim nginx.conf
https://i-blog.csdnimg.cn/direct/fff9a254e9ef43f5a466ac96502f53b1.png
其中所在与端口要填写PHP-FPM历程监听的IP所在以及端口
https://i-blog.csdnimg.cn/direct/a4520e3e6660495e9f3ab28fa97e277d.png
检查nginx配置文件无误后重启nginx
nginx -t
nginx -s quit
nginx
https://i-blog.csdnimg.cn/direct/5a22118ee3d2459c8545eea960c8557f.png
设置PHP-FPM历程监听的IP所在以及端口,其中9000是PHP-FPM的默认端口
vim /usr/local/php/etc/php-fpm.conf
https://i-blog.csdnimg.cn/direct/e5226633c6974fae9e719f71bba88c1f.png
https://i-blog.csdnimg.cn/direct/c91e60fb25004329b59a8d6c68da32dc.png
进入PHP的安装路径编辑配置文件
cd /usr/src/php-5.5.38/
cp php.ini-development /usr/local/php/php.ini
vim /usr/local/php/php.ini

https://i-blog.csdnimg.cn/direct/699c0ff52e89419f82b78e6b4cdeae30.png
设置PHP脚本的默认字符集为UTF-8,防止网页出现乱码
https://i-blog.csdnimg.cn/direct/5e8a08838e4f4291a6754a33e677af94.png
打开做验证的脚本格式
https://i-blog.csdnimg.cn/direct/028d5bd00df446138421403e345ab605.png
将init.d.php-fpm拷贝到系统的init.d目次下并赋予实验权限,以便以服务的情势管理PHP-FPM
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
https://i-blog.csdnimg.cn/direct/a38639616cce454aa9dbccb28e3f056a.png
编辑PHP的配置文件,启用历程id,使得服务能够启动
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
https://i-blog.csdnimg.cn/direct/80ee0d2149734ff4877d3cf0950f53b0.png
https://i-blog.csdnimg.cn/direct/aaa2c57798fb43e89a35da843d9a22a7.png
为php命令做软链接使得在系统的各个路径下都能利用php命令
https://i-blog.csdnimg.cn/direct/8dbe3483ba1b45be8674ad05e2a01de2.png
启动php
systemctl start php-fpm
systemctl status php-fpm
https://i-blog.csdnimg.cn/direct/3cdc8267f1144488b31621681219efe0.png
验证:编写简朴的php脚本,显示php的版本信息
cd /usr/local/nginx/html
vim index.php
https://i-blog.csdnimg.cn/direct/b09b9e3404934d4494cc0c9e118677bb.png
<?php
phpinfo();
?>
https://i-blog.csdnimg.cn/direct/a1b082d06a6643f2bdfbbf11014300fa.png
在欣赏器访问
https://i-blog.csdnimg.cn/direct/cc0c643f0f3a44bbbfb1bf400c1183b0.png
PHP-FPM安装完成
二、Nginx连接MySQL数据库用于存储网站数据

MySQL授权,允许Nginx服务器访问
mysql -uroot -p1
grant all on *.* to 'root'@'192.168.0.1' identified by '1';
https://i-blog.csdnimg.cn/direct/94e402cfec0f4eb598c567d91640bf41.png
编写PHP脚本验证MySQL是否连接成功
vim /usr/local/nginx/html/index.php
https://i-blog.csdnimg.cn/direct/5f21488a33794763a66db1c89f3fcdc8.png
<?php
$host='192.168.0.1';
$user_name='root';
$password='1';

$conn=mysql_connect($host,$user_name,$password);
if (!$conn)
{
    die('数据库连接失败:'.mysql_error());
}
echo '数据库连接成功!';
?>
https://i-blog.csdnimg.cn/direct/f399f94ad7ca44d3a7037a3cb86bb442.png
回到服务器刷新
https://i-blog.csdnimg.cn/direct/86f53e0c6b83441c8c32e9d3e1b8f9c8.png
至此基础的LNMP架构已经搭建完成,可以在上面部署网站
三、搭建简朴的论坛

拖入Discuz论坛源码包
https://i-blog.csdnimg.cn/direct/5dc5013546ea49b596cc761cd5041d45.png
解压
unzip Discuz_X3.3_SC_UTF8.zip
https://i-blog.csdnimg.cn/direct/bde96021d0b54183b7295a07025c93b9.png
https://i-blog.csdnimg.cn/direct/85c395bb96d242c6842d0bdb487c73d1.png
将解压出来后的整个论坛目次移动到nginx的网页文件目次里
mv upload/ /usr/local/nginx/html
https://i-blog.csdnimg.cn/direct/0008a4af4f1e42aabae356347d96d102.png
刷新欣赏器,可以看到网站搭建完成
https://i-blog.csdnimg.cn/direct/88bf11628b7847eb8f4096b3adb29fd7.png
安装之前需要放开写权限,否则无法正常安装
cd /usr/local/nginx/html/
chmod -R 777 upload/
https://i-blog.csdnimg.cn/direct/bbf03586f2bf424f8fe0b50585fb74ed.png
https://i-blog.csdnimg.cn/direct/e3d6b77a41a548c1816709d84e42d3f2.png
https://i-blog.csdnimg.cn/direct/ae4c195a6a744d4cb4b46f6bd3e63c98.png
https://i-blog.csdnimg.cn/direct/3798ca67153e4d29b5d02832508234d6.png
https://i-blog.csdnimg.cn/direct/6598b46d49a34c288343bb519fd62abe.png
https://i-blog.csdnimg.cn/direct/7033c3845697488eae645baa435df591.png
至此网站已经搭建完成
四、利用redis为网站添加缓存层

https://i-blog.csdnimg.cn/direct/f85d33a68d3f46cfbfcaeed2b1c733e6.png
https://i-blog.csdnimg.cn/direct/2bc5a84ae0cf4ebdb35df1d47e753f80.png
登录
https://i-blog.csdnimg.cn/direct/96c8516e740f4b9cb4e4cdcc60ca515c.png
https://i-blog.csdnimg.cn/direct/09069f7c2ede45599ac459903d72577d.png
https://i-blog.csdnimg.cn/direct/21b2a456e4d144fe8211aecbe586dbd1.png
https://i-blog.csdnimg.cn/direct/ca6d2f3d9eb547ca8a88c95f5b6f47bd.png
https://i-blog.csdnimg.cn/direct/275e66aee7da4c27886a133b76972490.png
安装PHP扩展phpredis,用于连接并操作Redis数据库上的数据
https://i-blog.csdnimg.cn/direct/04cdafb04520403b8197886b0182b5e5.png
tar -zxf 3.1.2.tar.gz
cd phpredis-3.1.2/
https://i-blog.csdnimg.cn/direct/de7a8f00aee94786851bc034cdbb856d.png
phpize
https://i-blog.csdnimg.cn/direct/33df086cfd374ff38df7511bc1bf80d8.png
预编译
./configure --with-php-config=/usr/local/php/bin/php-config--enable-redis
–with-php-config=/usr/local/php/bin/php-config 指定路径在php下
–enable-redis 启用redis服务
https://i-blog.csdnimg.cn/direct/badcfdeb9e2846c696316d5dc49d3c2e.png
https://i-blog.csdnimg.cn/direct/bbcdba0a051e4123a8dd17e6eedbbae5.png
编译安装
make -j4 && make install
https://i-blog.csdnimg.cn/direct/cd53de0c906a49db924ccd95a249a345.png
https://i-blog.csdnimg.cn/direct/9a0d79de6848422f8c9fd16623183658.png
将安装完成后得到的安装目次复制下来:/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
查看php拥有的模块,看不到redis
php -m

https://i-blog.csdnimg.cn/direct/2695887a28144258916d0571b905b3a8.png
编辑php的配置文件,将得到的目次复制进去
vim /usr/local/php/php.ini
https://i-blog.csdnimg.cn/direct/226a5359720d42cd8a9098141f7a82c9.png
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"
extension=redis.so
https://i-blog.csdnimg.cn/direct/d19414aa9a904043ac7fe8fd79205e90.png
再次查看php的插件可以看到redis
php -m
https://i-blog.csdnimg.cn/direct/240b84f59cac46aeae8403d58535fe65.png
cd /usr/local/nginx/html/upload/config/
vim config_global.php
https://i-blog.csdnimg.cn/direct/7327e134d7a54eb2ac31de00570e474e.png
将redis的IP所在添加上
https://i-blog.csdnimg.cn/direct/21ec6844ce96466fab95eeeef5b97c24.png
修改redis的配置文件,允许访问外部IP所在访问redis
cd /usr/src/redis-6.2.6/
vim redis.conf
https://i-blog.csdnimg.cn/direct/8699580658ef4371b6b82682f128cb20.png
https://i-blog.csdnimg.cn/direct/d15aa1a7295b44f4bf461102b6e513f1.png
重启redis
redis-cli shutdown
redis-server redis.conf &
https://i-blog.csdnimg.cn/direct/98bd130e2ce4454fa2010e331c8a874c.png
重启nginx、MySQL、php
nginx -s quit
nginx
systemctl restart mysql.service
systemctl restart php-fpm
https://i-blog.csdnimg.cn/direct/d12beccd07b746a08c21fbae544e31d3.png
完成
验证:进入论坛创建用户,再将用户在MySQL数据库删掉,但用户数据缓存依然留在页面上,能够登录
https://i-blog.csdnimg.cn/direct/177489e694aa4ef7875b68cde50a42ab.png
https://i-blog.csdnimg.cn/direct/a5aef926e6fd4f3e9d7f34a058161bd3.png
https://i-blog.csdnimg.cn/direct/77907b019cd84d2c801ac8963aaa3ebe.png
https://i-blog.csdnimg.cn/direct/5dacecb2389d4e948c49e77ce0809b8d.png
https://i-blog.csdnimg.cn/direct/e5e9bbd9635e4d11bbf0ec1d635347ac.png
删除MySQL中的用户数据后,由于redis中还存在缓存,所以还能利用删除掉的用户登录
https://i-blog.csdnimg.cn/direct/6a68ea79926243d88c67242bbdb70dd5.png
https://i-blog.csdnimg.cn/direct/01285d9d8cb94125be7ce13a013b8bce.png
https://i-blog.csdnimg.cn/direct/d6e77227a422444aaad55f50724117a8.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 基础的LNMP架构网站以及利用redis为网站添加缓存层