LNMP架构的部署思路
●安装 Nginx 服务
●安装 MySQL 服务
●安装配置 PHP 解析环境
●部署 Discuz!社区论坛 Web 应用
搭建LNMP
准备环境
环境
[root@yzq data]#cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@yzq data]#uname -r
3.10.0-957.el7.x86_64
关闭防火墙、核心防护
[root@yzq data]#systemctl disable firewalld
[root@yzq data]#systemctl stop firewalld
[root@yzq data]#setenforce 0
源码包
所需要的安装包
[root@yzq mnt]#ls
Discuz_X3.4_SC_UTF8.zip nginx-1.15.9.tar.gz
mysql-boost-5.7.20.tar.gz php-7.1.10.tar.bz2
1.编译安装Nginx
1.1 下载安装Nginx所需依赖包
Nginx 的配置及运行需要 pcre、zlib 等软件包的支持,因此应预先安装这些软件的开发
包(devel),以便提供相应的库和头文件,确保 Nginx 的安装顺利完成
[root@yzq mnt]#yum -y install gcc gcc-c++ pcre-devel zlib-devel make
1.2 创建运行用户、组
Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确
地控制其访问权限,增加灵活性、降低安全风险。例如,创建一个名为 nginx 的用户,不建
立宿主文件夹,也禁止登录到 Shell 环境。
[root@yzq mnt]#useradd -M -s /sbin/nologin nginx
[root@yzq mnt]#tail -1 /etc/passwd
nginx:x:1005:1005::/home/nginx:/sbin/nologin
1.3 编译安装nginx
配置Nginx的编译选项时,将安装目录设为/usr/local/nginx,运行用户和组均设为nginx;启用 http_stub_status_module 模块以支持状态统计,便于查看服务器的连接信息。具体选项根据实际需要来定,配置前可参考“./configure –help”给出的说明。
./configure
–prefix=/usr/local/nginx
–user=nginx
–group=nginx
–with-http_stub_status_module
make翻译,编译,make install读条
[root@yzq nginx-1.15.9]# make && make install
1.4 路径优化
为了使 Nginx 服务器的运行更加方便,可以为主程序 nginx 创建链接文件,以便管理员
直接执行“nginx”命令就可以调用 Nginx 的主程序(让系统可以识别)
[root@yzq nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #加入环境变量
[root@yzq nginx-1.15.9]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 27 8月 23 18:31 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
1.5 检查配置文件
与 Apache 的主程序 httpd 类似,Nginx 的主程序也提供了“-t”(test)选项用来对配置文件进行
检查,以便找出不当或错误的配置。配置文件 nginx.conf 默认位于安装目录下的 conf/子目
录中。若要检查位于其他位置的配置文件,可使用“-c”选项来指定路径。
[root@yzq 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
1.6 启动、停止nginx服务
直接运行 Nginx 即可启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用
其他配置文件,需添加“-c 配置文件路径”选项来指定路径。需要注意的是,若服务器中已装
有 httpd 等其他 Web 服务软件,应采取措施(修改端口、停用或卸载)避免冲突。
[root@yzq nginx-1.15.9]#nginx
[root@yzq nginx-1.15.9]#netstat -natp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 26662/nginx: master
主程序 Nginx 支持标准的进程信号,通过 kill 或 killall 命令发送 HUP 信号表示重载配置,
QUIT 信号表示退出进程,KILL 信号表示杀死进程。例如,若使用 killall 命令,重载配置、
停止服务的操作分别如下所示(通过“-s”选项指定信号种类)
[root@yzq ~]# killall -s HUP nginx ###选项 -s HUP 等同于 -1 重新加载 systemctl reload nginx
[root@yzq ~]# killall -s QUIT nginx ###选项 -s QUIT 等同于 -3 停止服务 systemctl stop nginx
当 Nginx 进程运行时,PID 号默认存放在 logs/目录下的 nginx.pid 文件中,因此若改用
kill 命令,也可以根据 nginx.pid 文件中的 PID 号来进行控制。
1.7添加 Nginx 系统服务
为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写基于 CentOS 7.6 的
Nginx 服务控制文件使用 systemctl 工具来进行管理,CentOS7.6 系统的管理习惯
[root@yzq nginx-1.15.9]#vim /lib/systemd/system/nginx.service
[root@yzq nginx-1.15.9]#cat /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
##配置参数解释##
[Unit]
Description=nginx ####描述
After=network.target ####描述服务类别
[Service]
Type=forking ###后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid ###PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx ###启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID ###根据PID重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID ###根据PID终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target
正常查看状态发现找不到nginx服务
[root@yzq nginx-1.15.9]#chmod 754 /lib/systemd/system/nginx.service
[root@yzq nginx-1.15.9]#netstat -natp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 26662/nginx: master
[root@yzq nginx-1.15.9]#systemctl status nginx
Unit nginx.service could not be found.
1.8检查通过systemctl命令能否正常 启动、停止、重启、重载 Nginx 服务
2.编译安装MySQL
2.1安装Mysql环境依赖包
[root@yzq nginx-1.15.9]#yum -y install ncurses ncurses-devel bison cmake
yum -y install
ncurses \ #字符终端工具包 UTF-8
ncurses-devel \
bison \ #函数库
cmake
2.2 创建运行用户(关键点:千万不要加 -M)
[root@yzq nginx-1.15.9]#useradd -s /sbin/nologin mysql
2.3 编译安装
[root@yzq ~]# cd /opt/mysql-5.7.20/
[root@yzq 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@yzq mysql-5.7.20]# make && make install
cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径(目录)
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定通信文件,连接数据库,通讯协议的载体⭐⭐⭐
-DSYSCONFDIR=/etc \ #配置文件目录指向/etc
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定pid目录文件
-DDEFAULT_CHARSET=utf8 \ #字符集设定
-DDEFAULT_COLLATION=utf8_general_ci \ #字符集设定
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #以下三行均为存储引擎ENGINE
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/usr/local/mysql/data \ #指定数据存放位置
-DWITH_BOOST=boost \ #底层C++运营库 独立的表空间结构
-DWITH_SYSTEMD=1 #守护进程id 守护进程
——》跑在后台的一个支持服务正常运行的一个特殊进程
注意:如果在CMAKE的过程中有报错—
当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
——注意:make: *** No targets specified and no makefile found. Stop.解决方法
1、wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
2.、tar zxvf ncurses-5.6.tar.gz
3、 ./configure -prefix=/usr/local -with-shared-without-debug
4、make
5、make install
2.4 递归修改数据库属主和属组
[root@yzq mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql
2.5 修改调整配置文件
删除原有内容,添加以下内容
[client] #client 用户程序
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql] #mysql 软件内容
port = 3306 #端口
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld] #以后对mysql配置时 更多的会针对于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 #PID文件目录
socket = /usr/local/mysql/mysql.sock #通讯文件
server-id = 1 #服务id,在之后的mysql集群中用于标识mysql服务器
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
#模块,默认加载
#PS:跳过数据库权限验证的命令为:skip-grant-tables,忘记密码
[root@yzq mysql-5.7.20]#vim /etc/my.cnf
2.6 配置环境变量
[root@yzq mysql-5.7.20]#echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@yzq mysql-5.7.20]#echo 'export PATH' >> /etc/profile
[root@yzq mysql-5.7.20]#source /etc/profile
2.7 初始化数据库
[root@yzq mysql-5.7.20]#cd /usr/local/mysql/
[root@yzq mysql]#bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data
2022-08-23T11:58:31.954413Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-08-23T11:58:32.152840Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-08-23T11:58:32.186766Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-08-23T11:58:32.241041Z 0 [ERROR] unknown option '--chown mysql:mysql /etc/my.cnf'
2022-08-23T11:58:32.241060Z 0 [ERROR] Aborting
[root@yzq mysql]#
[root@yzq mysql]#cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
2.8 数据库开启自启、 关闭、状态
[root@yzq mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system //mysql自带控制脚本,直接复制到系统服务文件夹中
[root@yzq mysql]# systemctl start mysqld //开启服务
[root@yzq mysql]# netstat -antp | grep 3306 //查看状态
tcp6 0 0 :::3306 :::* LISTEN 95872/mysqld
2.9 修改mysql数据库密码
[root@yzq mysql]#mysqladmin -u root -p password
Enter password: //刚开始没密码是空的直接回车,然后输入密码123456,在此确认123456,这是在root账户下运行的
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
2.10登录数据库
mysql -u root -p ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码123456
quit退出
3.编译安装PHP
3.1 下载安装PHP所需环境依赖包
[root@yzq ~]#yum -y install \
> libjpeg \
> libjpeg-devel \
> libpng libpng-devel \
> freetype freetype-devel \
> libxml2 \
> libxml2-devel \
> zlib zlib-devel \
> curl curl-devel \
> openssl openssl-devel
libjpeg \ #jpg图片依赖
libjpeg-devel
libpng libpng-devel \ #png图片依赖
freetype freetype-devel \ #字体
libxml2 \ #支持xml
libxml2-devel
zlib zlib-devel \ #压缩格式
curl curl-devel \ #识别url
openssl openssl-devel
##xml 支持扩展性标记语言,用于承载数据url 网址 openssl 安全性访问/加密访问
3.2 编译安装
[root@yzq opt]#tar xjvf php-7.1.10.tar.bz2
[root@yzq opt]#ls
Discuz_X3.4_SC_UTF8.zip nginx-1.15.9 php-7.1.10.tar.bz2
mysql-5.7.20 nginx-1.15.9.tar.gz
mysql-boost-5.7.20.tar.gz php-7.1.10
[root@yzq opt]#cd php-7.1.10
[root@yzq 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-fpm \
> --enable-mbstring \
> --enable-xml \
> --enable-session \
> --enable-ftp \
> --enable-pdo \
> --enable-tokenizer \
> --enable-zip
[root@yzq php-7.1.10]#make && make install
./configure
–prefix=/usr/local/php \ #PHP文件路径
–with-mysql-sock=/usr/local/mysql/mysql.sock \ #sock通讯文件(需要与mysql指定的路径一致)
–with-mysqli \ #with(支持各项功能)
–with-zlib
–with-curl
–with-gd
–with-jpeg-dir
–with-png-dir
–with-freetype-dir
–with-openssl
–enable-fpm \ #开启fpm模块
–enable-mbstring \ #开启多字段模块
–enable-xml \ #开启扩展性标记语言模块
–enable-session \ #会话
–enable-ftp \ #文本传输协议
–enable-pdo \ #函数库
–enable-tokenizer \ #令牌解释器
–enable-zip #ZIP压缩格式
3.3 修改配置文件
//php有三个配置文件 php.ini 核心配置文件 php-fpm.conf 进程服务配置文件
www.conf 扩展配置文件
[root@yzq php-7.1.10]#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@yzq php-7.1.10]#cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@yzq php-7.1.10]#vim /usr/local/php/etc/php-fpm.conf
3.4 修改核心配置文件
–939行–取消注释,修改
date.timezone = Asia/Shanghai
–1170行–修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
[root@yzq php-7.1.10]#cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
[root@yzq php-7.1.10]#vim /usr/local/php/lib/php.ini
3.5 启动PHP
[root@yzq php-7.1.10]#/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini[root@yzq php-7.1.10]#netstat -antp | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 61858/php-fpm: mast
[root@yzq php-7.1.10]#/usr/local/php/bin/php -m //验证安装的模块
3.6 让Nginx支持PHP
[root@yzq php-7.1.10]#vim /usr/local/nginx/conf/nginx.conf
--45行,添加index.php
适当位置插入
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; #将 /scripts 修改为nginx的工作目录
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #$document_root 代表当前请求在root指令中指定的值
include fastcgi_params;
}
[root@yzq etc]#vi /usr/local/nginx/html/index.php
[root@yzq etc]#cat /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
3.7 重启nginx,查看服务
[root@yzq php-7.1.10]#systemctl restart nginx
在网页测试“http://192.168.28.10/index.php”
4、部署Discuz社区论坛
4.1创建一个数据库及授权用户
4.2下载并部署
安装论坛
将下载的Discuz!程序文件解压,复制upload文件夹的内容到LNMP服务器的网站根目录
[root@yzq opt]#unzip Discuz_X3.4_SC_UTF8.zip -d /opt/discuz 解压zip文件,-d指定解压到的位置
[root@yzq opt]#ls
discuz mysql-boost-5.7.20.tar.gz php-7.1.10
Discuz_X3.4_SC_UTF8.zip nginx-1.15.9 php-7.1.10.tar.bz2
mysql-5.7.20 nginx-1.15.9.tar.gz
[root@yzq dir_SC_UTF8]#ls
readme upload utility
[root@yzq dir_SC_UTF8]#cp -r upload/ /usr/local/nginx/html/bbs #需要将upload复制到网站根目录
4.3更改论坛属主,适当调整权限,允许nginx拥有必要的写入权限
4.5网页访问http://192.168.28.10/bbs/install/index.php,安装论坛
注意:
论坛安装页面为:192.168.28.10/bbs/install/index.php
网页访问地址为:192.168.28.10/bbs/index.php
点击我同意
可在此处修改权限
默认选项,点击下一步
根据之前创建论坛设置填写
安装完成,可自行添加功能,不需要则直接访问
论坛页面
4.6测试能否注册新用户
访问论坛页面:
http://192.168.28.10/bbs/index.php
http://192.168.28.10/bbs/admin.php
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76546.html