目录
一、部署流程
1.1 linux环境
1.2 nginx安装
1.3 mysql安装
1.4 php安装
1.5 配置 Nginx 支持 PHP 解析
1.6 验证PHP 测试页
1.7 验证数据库工作是否正常
二、部署Discuz论坛
三、验证论坛
3.1 在线人数
3.2 发帖回帖
四、安装时遇见的问题
五、总结
一、部署流程
1.1 linux环境
1. 关闭防火墙和增强功能
查看防火墙状态(没关的话使用下面的命令关闭)
systemctl status firewalld
关闭防火墙命令:
systemctl stop firewalld
systemctl disable firewalld
查看增强功能状态:(没关的话使用下面的命令关闭)
getenforce
关闭增强功能:
setenforce 0
1.2 nginx安装
1. 安装依赖
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
2. 创建程序用户
useradd -M -s /sbin/nologin nginx
3. 解压安装包
tar -zxvf nginx-1.20.2.tar.gz
4. 切换到 nginx-1.20.2 目录
cd nginx-1.20.2
5. 配置
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
6. 编译安装
make && make install
7. 优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
8. 配置 nginx 服务
vim /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=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
9. 添加权限并启动服务
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
1.3 mysql安装
1. 安装依赖
yum install -y gcc gcc-c++ make cmake ncurses-devel bison perl perl-Data-Dumper libaio-devel openssl-devel zlib-devel
2. 创建程序用户
useradd -M -s /sbin/nologin mysql
3. 解压安装包
tar -zxvf mysql-boost-5.7.20.tar.gz
4. 切换到 mysql-5.7.20 目录
cd /mysql-5.7.20
5. 配置
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_EXTRA_CHARSETS=all \
-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
6. 编译安装
make && make install
7. 修改mysql 配置文件
vim /etc/my.cnf
[client]
port = 3306
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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
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 \
8. 更改权限
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
9. 设置路径环境变量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
7、初始化数据库
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
8、添加mysqld系统服务
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
9、修改mysql 的登录密码
mysqladmin -u root -p password "123456"
10、授权远程登录
mysql -u root -p
1.4 php安装
1. 安装依赖
yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
2. 解压安装包
tar jxvf php-7.1.10.tar.bz2
3. 配置
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-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
4. 编译安装
make && make install
5. 优化路径
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
6. 配置文件
#调整主配置文件:
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai
php -m #验证安装的模块
#调整进程服务配置文件:
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
--17行--去掉";"注释
pid = run/php-fpm.pid
#调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
7. 启动服务
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000
注:PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。
cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
1.5 配置 Nginx 支持 PHP 解析
vim /usr/local/nginx/conf/nginx.conf
--65行--取消注释,修改
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;
}
systemctl reload nginx
1.6 验证PHP 测试页
vim /usr/local/nginx/html/index.php
phpinfo();
?>
浏览器访问
http://192.168.1.20/index.php
1.7 验证数据库工作是否正常
登录数据库
mysql -u root -p123456
创建数据库
CREATE DATABASE bbs;
授权
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
刷新权限表
flush privileges;
测试 PHP 能否连接到 MySQL 数据库
vim /usr/local/nginx/html/index.php #替换原来的测试页内容
$link=mysqli_connect('192.168.1.20','bbsuser','admin123');
if($link) echo "
Success!!
";
else echo "Fail!!";
?>
浏览器访问
http://192.168.1.20/index.php
二、部署Discuz论坛
cd /opt
解压dis论坛安装包
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis
复制文件到nginx
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/
调整论坛目录的权限:
cd /usr/local/nginx/html/bbs/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
论坛页面访问
http://192.168.1.20/bbs/install/index.php
三、验证论坛
3.1 在线人数
3.2 发帖回帖
四、安装时遇见的问题
1. 安装时在当前状态哪里显示 报错 x,这是权限没有给全的原因,必须使用 " chmod 777 文件 "给文件添加权限,添加完权限之后刷新页面就行。
2. 安装好论坛时,在访问论坛首页(比如 http://192.168.1.10/)时,显示 403 禁止访问,论坛首页完全打不开。解决方法,在 nginx.conf 配置文件中的 locatino /{} 里面添加 index.php 。因为在用户在访问时,nginx 会按照 index 指令中的顺序依次寻找默认文件,但如果漏写了 index.php,变成了 index index.html index.htm;,那么当用户访问首页时,Nginx 只会去找 index.html 或 index.htm。导致 403 。
五、总结
通过本次 LNMP 环境搭建及 Discuz 论坛部署的完整实践,逐步完成了 Linux 系统配置、Nginx Web 服务器安装、MySQL 数据库编译部署、PHP 环境搭建以及论坛程序的安装与调试。同时整个过程让我对 LAMP/LNMP 架构的工作原理有了更加深入的理解。
详细步骤为:
1. 关闭防火墙和增强功能
2. 编译安装 nginx、mysql、php
3. 配置服务文件
4. 安装论坛服务
5. 添加权限
6. 用浏览器访问