部署基于 LNMP 的 Discuz! 论坛服务器
1. 部署基于 LNMP 的 Web 服务器
从 CentOS 7 模板机中克隆一台虚拟机
1.1 安装 Nginx
上传软件包 nginx-1.12.2.tar.gz 到虚拟机
# 1. 安装环境
[root@bbs ~ 09:45:42]# yum install -y pcre-devel zlib-devel# 2. 为 Nginx 创建用户
[root@bbs ~ 09:46:43]# useradd -M -s /sbin/nologin nginx# 3. 解压软件包
[root@bbs ~ 09:48:56]# tar -xvzf nginx-1.12.2.tar.gz # 4. 安装编译所需软件包
[root@bbs ~ 09:49:45]# yum install -y gcc gcc-c++# 5. 配置软件包
[root@bbs nginx-1.12.2 09:50:59]# cd nginx-1.12.2/
[root@bbs nginx-1.12.2 09:51:56]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module# 6. 编译并安装
[root@bbs nginx-1.12.2 09:52:10]# make -j16 && make install# 7. 配置软链接
[root@bbs nginx-1.12.2 09:53:03]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/# 8. 检查配置文件
[root@bbs nginx-1.12.2 09:54:04]# 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# 9. 为 Nginx 配置 systemd 服务
[root@bbs nginx-1.12.2 11:08:24]# vim /lib/systemd/system/nginx.service
# --- 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
# --- nginx.service ---
[root@bbs nginx-1.12.2 11:10:46]# chmod 754 /lib/systemd/system/nginx.service
[root@bbs nginx-1.12.2 11:11:05]# systemctl daemon-reload
[root@bbs nginx-1.12.2 11:11:23]# systemctl enable nginx --now# 10. 测试
[root@bbs nginx-1.12.2 11:13:28]# ss -anpt | grep nginx
LISTEN 0 128 *:80 *:* users:(("nginx",pid=14660,fd=6),("nginx",pid=14659,fd=6))
[root@bbs nginx-1.12.2 11:13:37]# curl localhost
<title>Welcome to nginx!</title>
1.2 安装 MySQL
上传软件包 mysql-boost-5.7.20.tar.gz 到虚拟机的 /opt 目录下
# 1. 安装环境软件包
[root@bbs opt 11:16:44]# yum -y install ncurses ncurses-devel bison cmake# 2. 为 MySQL 创建用户
[root@bbs opt 11:17:15]# useradd -s /sbin/nologin mysql# 3. 解压并编译安装软件包
[root@bbs opt 11:19:15]# tar -xzvf mysql-boost-5.7.20.tar.gz
[root@bbs opt 11:19:41]# cd /opt/mysql-5.7.20/
[root@bbs mysql-5.7.20 11:19:50]# 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@bbs mysql-5.7.20 11:20:53]# make -j16 && make install# 4. 调整数据库目录权限
[root@bbs mysql-5.7.20 13:33:12]# chown -R mysql:mysql /usr/local/mysql/# 5. 调整配置文件
[root@bbs mysql-5.7.20 13:34:57]# vim /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# 6. 配置数据库基本设置
[root@bbs mysql-5.7.20 13:36:27]# 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
[root@bbs mysql-5.7.20 13:38:49]# chown mysql:mysql /etc/my.cnf# 7. 设置环境变量
[root@bbs mysql-5.7.20 13:39:00]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@bbs mysql-5.7.20 13:39:45]# echo 'export PATH' >> /etc/profile
[root@bbs mysql-5.7.20 13:39:45]# source /etc/profile# 8. 初始化数据库
[root@bbs mysql-5.7.20 13:39:46]# cd /usr/local/mysql/
[root@bbs mysql 13:40:32]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data# 9. 为 MySQL 配置 systemd 服务
[root@bbs mysql 13:40:35]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@bbs mysql 13:41:21]# systemctl daemon-reload
[root@bbs mysql 13:41:37]# systemctl enable mysqld --now
[root@bbs mysql 13:44:03]# ss -anpt | grep 3306
LISTEN 0 80 [::]:3306 [::]:* users:(("mysqld",pid=33089,fd=21))# 10. 设置 root 密码
[root@bbs mysql 13:47:41]# mysqladmin -u root -p password
Enter password: # Enter
New password: # 123
Confirm new password: # 123[root@bbs mysql 13:48:31]# mysql -uroot -p
Enter password: # 123
1.3 安装 PHP
上传软件包 php-7.1.10.tar.bz2 到虚拟机
# 1. 安装 PHP 环境包
[root@bbs ~ 13:49:48]# yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-deve# 2. 解压并编译安装软件包
[root@bbs ~ 14:02:34]# tar -xjvf php-7.1.10.tar.bz2
[root@bbs ~ 14:03:08]# cd php-7.1.10/
[root@bbs php-7.1.10 14:03:11]# ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-config-file-path=/etc \
--enable-fpm \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-soap \
--with-libxml-dir \
--with-xmlrpc \
--with-openssl \
--with-mcrypt \
--with-mhash \
--with-pcre-regex \
--with-sqlite3 \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
--enable-mbstring \
--enable-mbregex \
--enable-mbregex-backtrack \
--with-libmbfl \
--with-onig \
--enable-pdo \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--enable-mysqlnd-compression-support \
--with-pear \
--enable-opcache[root@bbs php-7.1.10 14:04:47]# make -j16 && make install# 3. 配置 PHP
[root@bbs php-7.1.10 14:17:22]# cp php.ini-development /usr/local/php/lib/php.ini
[root@bbs php-7.1.10 14:17:26]# vim /usr/local/php/lib/php.ini
date.timezone = Asia/Shanghai # 939 行
mysqli.default_socket = /usr/local/mysql/mysql.sock # 1170 行# 4. 验证安装
[root@bbs php-7.1.10 14:19:19]# /usr/local/php/bin/php -m# 5. 配置 PHP-fpm
[root@bbs php-7.1.10 14:21:19]# cd /usr/local/php/etc/
[root@bbs etc 14:21:26]# cp php-fpm.conf.default php-fpm.conf
[root@bbs etc 14:21:43]# cd /usr/local/php/etc/php-fpm.d/
[root@bbs php-fpm.d 14:21:59]# cp www.conf.default www.conf[root@bbs php-fpm.d 14:21:56]# cd /usr/local/php/etc/
[root@bbs etc 14:22:18]# vim php-fpm.conf
pid = run/php-fpm.pid # 17 行
[root@bbs etc 14:23:03]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@bbs etc 14:23:06]# ss -anpt | grep 9000
LISTEN 0 128 127.0.0.1:9000 *:* users:(("php-fpm",pid=56554,fd=0),("php-fpm",pid=56553,fd=0),("php-fpm",pid=56552,fd=7))
[root@bbs etc 14:23:21]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@bbs etc 14:23:44]# ps aux | grep -c "php-fpm"
4# 6. 配置 Nginx 支持 PHP
[root@bbs etc 14:56:30]# vim /usr/local/nginx/conf/nginx.conf
index index.php index.html index.htm; # 44 行
location ~ \.php$ { # 73 行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;
}[root@bbs etc 14:58:39]# vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>[root@bbs etc 14:58:50]# systemctl restart nginx# 7. 配置 MySQL 支持 PHP
[root@bbs etc 15:02:46]# mysql -uroot -p
Enter password: # 123
mysql> CREATE DATABASE bbs;
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY '123';
mysql> GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY '123';
mysql> flush privileges;# 8. 配置数据库连接测试页
[root@bbs etc 15:05:40]# vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('10.1.8.10','bbsuser','123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
[root@bbs etc 15:06:08]# systemctl restart nginx
[root@bbs etc 15:06:33]# curl localhost/index.php
<h1>Success!!</h1>
2. 安装论坛
将软件包 Discuz_X3.4_SC_UTF8.zip 上传至虚拟机
# 1. 解压软件包
[root@bbs ~ 15:08:38]# unzip Discuz_X3.4_SC_UTF8.zip -d /tmp# 2. 移动网站路径
[root@bbs ~ 15:10:04]# cd /tmp/dir_SC_UTF8/
[root@bbs ~ 15:10:12]# cp -r upload/ /usr/local/nginx/html/bbs/
[root@bbs ~ 15:10:21]# cd /usr/local/nginx/html/bbs/
[root@bbs ~ 15:10:39]# chown -R root:nginx ./config/
[root@bbs ~ 15:10:47]# chown -R root:nginx ./data/
[root@bbs ~ 15:10:58]# chown -R root:nginx ./uc_client/
[root@bbs ~ 15:11:09]# chown -R root:nginx ./uc_server/
[root@bbs ~ 15:11:23]# chmod -R 777 ./config/
[root@bbs ~ 15:11:38]# chmod -R 777 ./data/
[root@bbs ~ 15:11:48]# chmod -R 777 ./uc_client/
[root@bbs ~ 15:11:56]# chmod -R 777 ./uc_server/
完成后,访问 http://IP/bbs/install/index.php 可以看到以下页面

点击 “我同意” 开始安装
开始安装页面,确认论坛可以获得所有权限,点击 “下一步”
设置运行环境,保持默认配置,点击 “下一步”
安装数据库页面,配置数据库信息和管理员信息,点击 “下一步”

完成后,点击 “您的论坛已完成安装,点此访问”,即可打开论坛主页

