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
以上部署到此结束,感谢浏览