部署 LNMP 架构 ------- 快速认知

本文详细介绍了如何在CentOS 7.6上部署LNMP(Linux + Nginx + Mysql + PHP)架构,包括MySQL数据库的安装、Nginx服务器的配置及PHP的编译,以及Discuz论坛的部署流程,适合小型企业或个人开发者快速搭建网站环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LNMP 简介

LNMP平台= Linux 操作系统+ Nginx 服务器+ Mysql 数据库+ PHP 网页编译语言 组合而成的一种 Web 集群,将 Nginx 服务器作为负载均衡服务器,来进行功能上的服务。其结构与 LAMP 结构如出一辙,只不过 LAMP架构中作为负载均衡服务器的是 Apache服务器。

LNMP 工作原理

用户想要浏览网页,首先要通过浏览器向作为负载均衡服务器的 Nginx 服务器发送 http resquet,Nginx 服务器将会响应并处理该请求,将一些静态资源(比如静态照片、静态网页等)保存到服务器的缓存中,接着将 PHP脚本通过接口传输协议即网关协议 PHP-FCGI(fast-cgi)传输给 PHP-FPM(进程管理程序)模块,接着 PHP-FPM调用PHP解析器进程动态 解析PHP脚本,PHP解析器进程可以启用多个,进行并发执行,它一边解析,一边将解析后的脚本信息返回给PHP-FPM模块,PHP-FPM模块在通过 fast-cgi 的形式将脚本信息传送给 Nginx 服务器,Nginx 服务器再通过 http response 的形式传输给浏览器,浏览器再将处理后的 http response 通过网页的形式反馈给用户

LNMP 特点

与其说是 LNMP 的特点不如说是 Nginx 的特点:

优点:稳定、系统占用资源少、配置简单,利用fast-cgi 的方式解析PHP脚本。

缺点:php-fpm组件的负载能力有限,也是这个组件将Nginx支持高并发的特点毫无用武之地

也是这个缺点的原因,该架构只适用于服务器配置比较低、人数较少的小型公司。

LNMP 架构部署1/2
  • 部署规划

本次部署将在最小化安装的 CentOS 7.6 版本的Linux操作系统上进行

1)架构所需安装包

Nginx: nginx-1.15.9.tar.gz
Mysql: mysql-boost-5.7.20.tar.gz
PHP: php-7.1.10.tar.bz2
论坛: Discuz_X3.4_SC_UTF8.zip

将全部安装包 上传至 /opt 目录下

2)网络环境需求

关闭防火墙、核心防护、安装本地 yum源

LNMP 架构部署2/2

【安装 Mysql数据库】

1、安装环境

[root@localhost opt]# 

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

2、安装 mysql 程序运行用户

[root@localhost opt]# useradd -s /sbin/nologin mysql

3、编译安装

[root@localhost opt]# tar xzvf mysql-boost-5.7.20.tar.gz
[root@localhost opt]# cd mysql-5.7.20/
[root@localhost mysql-5.7.20]#

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
 
  
[root@localhost mysql-5.7.20]# make -j3
[root@localhost mysql-5.7.20]# make install

5、数据库目录进行权限调整

[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/

6、添加主配置文件

[root@localhost mysql-5.7.20]# vi /etc/my.cnf

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

7、更改 /etc/my.cnf 配置文件的属主、组

[root@localhost mysql-5.7.20]# chown mysql:mysql /etc/my.cnf

8、修改命令文件

[root@localhost mysql-5.7.20]#

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile

9、初始化数据库(固定格式)

[root@localhost mysql-5.7.20]# cd /usr/local/mysql/

bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
 
  
[root@localhost mysql ]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

10、开启数据库

[root@localhost mysql ]# systemctl enable mysqld
[root@localhost mysql ]# systemctl start mysqld
[root@localhost mysql ]# systemctl status mysqld

11、验证数据库是否开启

[root@localhost mysql ]# netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      86320/mysqld

12、设置 MYSQL 密码

[root@localhost mysql ]# mysqladmin -u root -p password 'abc123'          #####刚开始密码为空直接回车,然后在输入密码,再确认密码
[root@localhost mysql ]# mysql -u root -p                #####输入密码,就登录数据库中了;exit 或 quit 退出数据库

【安装 Nginx服务器】

1、Nginx 的配置及运行需要 pcre (提供库文件)、zlib(提供头文件) 软件包的支持,(devel:开发包),先行安装。

[root@localhost~]# yum -y install pcre-devel zlib-devel

2、创建专门的用户账号,以便更准确的控制其访问权限,增加灵活性、降低安全风险。

[root@localhost~]# useradd -M -s /sbin/nologin nginx

3、编译安装

[root@localhost~]# cd /opt
[root@localhost opt]# tar zxvf nginx-1.15.9.tar.gz
[root@localhost opt]#cd nginx-1.15.9/
 
[root@localhost nginx-1.15.9]#
 
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
 
  
[root@localhost nginx-1.15.9]# make -j3
[root@localhost nginx-1.15.9]# make install

4、修改命令文件

[root@localhost nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.15.9]#  ls -l /usr/local/sbin/nginx

5、检查 nginx 配置文件有没有出错

[root@localhost nginx-1.15.9]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

6、检查是否开启 nginx服务

[root@localhost nginx-1.15.9]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      76079/nginx: master

7、使用killall 命令,重载配置、停止服务的操作

[root@localhost nginx-1.15.9]# killall -s HUP nginx             #####重载配置
[root@localhost nginx-1.15.9]# killall -s QUIT nginx             #####退出进程

8、基于 Nginx 服务脚本使用 systemctl 工具来进行管理

[root@localhost nginx-1.15.9]# vi /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
 
  
[root@localhost nginx-1.15.9]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost nginx-1.15.9]# systemctl enable nginx.service

10、真机测试,出现欢迎使用nginx服务即为开启成功
在网站输入:20.0.0.183

【安装 PHP编译语言】
(以下为纯命令,偷个懒,客官见谅)

1、安装环境

yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

2、解压包

cd /opt
tar xjvf php-7.1.10.tar.bz2

3、添加 安装php的各种执行模块

cd php-7.1.10

./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip \
--enable-fpm

4、编译安装

make
make install

5、进行优化

cp php.ini-development /usr/local/php/lib/php.ini
 
vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock           ####直接查找 "mysqli.default_socket =" 那行后,添加后面的 相对路径(也就是做关联对接的接口)
date.timezone = Asia/Shanghai                   ####直接查找 ";date.timezone =" 这一行后 添加  时区(也就是同步上海的时间) ,并且去掉这行前面的“;”号
 
/usr/local/php/bin/php -m                        ######验证安装的模块,所装模块都会呈现出来

6、配置及优化FPM模块

cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf

cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
 
cd /usr/local/php/etc/
vi php-fpm.conf

pid = run/php-fpm.pid            ####查找到这一行,去掉前面的“;”,在添加下面二行
;user = nginx
;group = nginx

7、配置指令文件

/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini

8、检验端口是否启动

netstat -anpt | grep 9000

9、修改配置文件

vi /usr/local/nginx/conf/nginx.conf              ####找到  location ~ \.php$ {   这行,将这段前面#号去掉, 添加一个路径在 $fastcgi_script_name; 前面。
 
 location ~ \.php$ {
     root                    html;
     fastcgi_pass       127.0.0.1:9000;
     fastcgi_index      index.php;
     fastcgi_param     SCRIPT_FILENAME     /usr/local/nginx/html$fastcgi_script_name;
      include                fastcgi_params;
      }
    
systemctl restart nginx              ####修改完配置文件后要重启

10、编辑测试页面并重启

vi /usr/local/nginx/html/index.php

<?php
phpinfo();
?>

11、真机测试
网页输入:20.0.0.183/index.php

在这里插入图片描述

12、测试数据库工作是否正常

1)、创建数据库并给想连接这个数据库的所有用户授权
mysql -uroot -p

create database bbs;
grant all on bbs.* to 'bbsadm'@'%' identified by 'admin123';
grant all on bbs.* to 'bbsadm'@'localhost' identified by 'admin123';
flush privileges;
quit
 

2)、修改测试网页
vi /usr/local/nginx/html/index.php

<?php
$link=mysqli_connect('20.0.0.183','bbsadm','admin123');                ####('IP地址','用户名','密码')
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>


3)、再次测试网页
网页输入:20.0.0.183/index.php

在这里插入图片描述

【LNMP 应用部署,社区论坛 Web 应用】
以下为纯命令模式

cd /opt

yum -y install unzip                        #### 安装unzip 解压包工具

unzip Discuz_X3.4_SC_UTF8.zip -d /tmp

cd /tmp/dir_SC_UTF8/

cp -r upload/ /usr/local/nginx/html/bbs/       ####递归复制 upload/ 下所有文件到 /usr/local/nginx/html/bbs/ 目录下

cd /usr/local/nginx/html/bbs/          ###切换到 /usr/local/nginx/html/bbs/ 下,并将下了列4个文件进行授权,要不然 进入论坛界面的 授权项 将全部打红叉叉

chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/

chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
 

网页输入:20.0.0.183/bbs/install/index.php               ####普通用户登录界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网页输入:20.0.0.183/bbs/admin.php             ####管理员登录后台管理界面

在这里插入图片描述
在这里插入图片描述

进行安全设置:  Please delete install/index.php via FTP!    要不然连普通游客都能登录后台管理了
 
cd /usr/local/nginx/html/bbs/

mv install/ install.lock

chmod 600 install.lock/
 
网页输入:20.0.0.183/index.php

在这里插入图片描述


以上部署到此结束,感谢浏览

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值