前言
LNMP架构是指一种常见的网站服务器架构,它由Linux、Nginx、MySQL/MariaDB和PHP/Perl/Python等开源软件组成。
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
复制代码
上传php软件包
将php解压到指定路径下
- tar -zxf php-5.3.38.tar.gz -C /usr/src/
- cd /usr/src/php-5.3.38/
复制代码
为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扩展的辅助工具
编译安装
PHP安装完毕
编辑nginx的配置文件,配置PHP支持(fastcgi相干信息)
- cd /usr/local/nginx/conf/
- vim nginx.conf
复制代码
其中所在与端口要填写PHP-FPM历程监听的IP所在以及端口
检查nginx配置文件无误后重启nginx
- nginx -t
- nginx -s quit
- nginx
复制代码
设置PHP-FPM历程监听的IP所在以及端口,其中9000是PHP-FPM的默认端口
- vim /usr/local/php/etc/php-fpm.conf
复制代码
进入PHP的安装路径编辑配置文件
- cd /usr/src/php-5.5.38/
- cp php.ini-development /usr/local/php/php.ini
- vim /usr/local/php/php.ini
复制代码
设置PHP脚本的默认字符集为UTF-8,防止网页出现乱码
打开做验证的脚本格式
将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
复制代码
编辑PHP的配置文件,启用历程id,使得服务能够启动
- cd /usr/local/php/etc/
- cp php-fpm.conf.default php-fpm.conf
- vim php-fpm.conf
复制代码
为php命令做软链接使得在系统的各个路径下都能利用php命令
启动php
- systemctl start php-fpm
- systemctl status php-fpm
复制代码
验证:编写简朴的php脚本,显示php的版本信息
- cd /usr/local/nginx/html
- vim index.php
复制代码
在欣赏器访问
PHP-FPM安装完成
二、Nginx连接MySQL数据库用于存储网站数据
MySQL授权,允许Nginx服务器访问
- mysql -uroot -p1
- grant all on *.* to 'root'@'192.168.0.1' identified by '1';
复制代码
编写PHP脚本验证MySQL是否连接成功
- vim /usr/local/nginx/html/index.php
复制代码
- <?php
- $host='192.168.0.1';
- $user_name='root';
- $password='1';
-
- $conn=mysql_connect($host,$user_name,$password);
- if (!$conn)
- {
- die('数据库连接失败:'.mysql_error());
- }
- echo '数据库连接成功!';
- ?>
复制代码
回到服务器刷新
至此基础的LNMP架构已经搭建完成,可以在上面部署网站
三、搭建简朴的论坛
拖入Discuz论坛源码包
解压
- unzip Discuz_X3.3_SC_UTF8.zip
复制代码
将解压出来后的整个论坛目次移动到nginx的网页文件目次里
- mv upload/ /usr/local/nginx/html
复制代码
刷新欣赏器,可以看到网站搭建完成
安装之前需要放开写权限,否则无法正常安装
- cd /usr/local/nginx/html/
- chmod -R 777 upload/
复制代码
至此网站已经搭建完成
四、利用redis为网站添加缓存层
登录
安装PHP扩展phpredis,用于连接并操作Redis数据库上的数据
- tar -zxf 3.1.2.tar.gz
- cd phpredis-3.1.2/
复制代码
预编译
- ./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服务
编译安装
将安装完成后得到的安装目次复制下来:/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
查看php拥有的模块,看不到redis
编辑php的配置文件,将得到的目次复制进去
- vim /usr/local/php/php.ini
复制代码
- extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"
- extension=redis.so
复制代码
再次查看php的插件可以看到redis
- cd /usr/local/nginx/html/upload/config/
- vim config_global.php
复制代码
将redis的IP所在添加上
修改redis的配置文件,允许访问外部IP所在访问redis
- cd /usr/src/redis-6.2.6/
- vim redis.conf
复制代码
重启redis
- redis-cli shutdown
- redis-server redis.conf &
复制代码
重启nginx、MySQL、php
- nginx -s quit
- nginx
- systemctl restart mysql.service
- systemctl restart php-fpm
复制代码
完成
验证:进入论坛创建用户,再将用户在MySQL数据库删掉,但用户数据缓存依然留在页面上,能够登录
删除MySQL中的用户数据后,由于redis中还存在缓存,所以还能利用删除掉的用户登录
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |