文章目录
- LNMP和Discuz论坛
- 1 LNMP搭建
- 1.1 编译安装nginx服务
- 1.1.1 编译安装
- 1.1.2 添加到系统服务
- 1.2 编译安装MySQL服务
- 1.2.1 准备工作
- 1.2.2 编辑配置文件
- 1.2.3 设置路径环境变量
- 1.2.4 数据库初始化
- 1.2.5 添加mysqld系统服务
- 1.2.6 修改mysql的登录密码
- 1.3 编译安装PHP服务
- 1.3.1 准备工作
- 1.3.2 编译安装
- 1.3.3 创建软连接
- 1.3.4 修改PHP配置文件
- 1.3.4.1 修改主配置文件
- 1.3.4.2 修改进程服务配置文件
- 1.3.4.3 修改拓展配置文件
- 1.3.5 启动php-fpm
- 1.3.6配置nginx支持PHP解析
- 1.3.7 验证PHP测试页
- 2 安装论坛
- 2.1 解压Discuz源码包并配置
- 2.2 安装Discuz论坛
LNMP和Discuz论坛
LNMP:
L:Linux操作系统
N:nginx前端页面
M:mysql数据库 账号密码,等等都是保存在这个数据库里面
P:php---------nginx擅长处理的是静态页面,页面登录账户,需要请求到数据库,通过php把动态请求转发数据库
1 LNMP搭建
1.1 编译安装nginx服务
1.1.1 编译安装
apt autoremove nginx
# 如果系统中曾经用apt装过nginx,则使用此命令完全卸载,否则可能会出错
apt -y install libpcre3-dev zlib1g-dev libssl-dev build-essential
# 安装nginx依赖环境
useradd -M -s /sbin/nologin nginx
# 创建nginx程序用户
tar -xf /opt/nginx-1.22.0.tar.gz
cd nginx-1.22.0/
./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
make -j 4 && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
# 创建软连接
mkdir /usr/local/nginx/run
chown -R nginx.nginx /usr/local/nginx/
vim /usr/local/nginx/conf/nginx.conf
PID /usr/local/nginx/run/nginx.pid
1.1.2 添加到系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start nginx
1.2 编译安装MySQL服务
1.2.1 准备工作
apt -y install libaio1 libncurses5
# 安装MySQL依赖环境
tar -xf mysql-8.0.30-el7-x86_64.tar.gz
mv mysql-8.0.30-el7-x86_64 /usr/local/mysql
# 将解压的包更名为mysql,移到/usr/local目录下
useradd -M -s /sbin/nologin mysql
# 为MySQL创建程序用户
chown mysql.mysql -R /usr/local/mysql/
# 递归更改/usr/local/mysql的所有者和所属组为mysql
1.2.2 编辑配置文件
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 = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 服务端配置
chown mysql.mysql /etc/my.cnf
1.2.3 设置路径环境变量
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
或创建软链接
ln -s /usr/local/mysql/bin/* /usr/local/bin/
1.2.4 数据库初始化
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
1.2.5 添加mysqld系统服务
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 让mysql服务可以使用systemd启动
systemctl daemon-reload # 刷新系统服务配置文件
systemctl restart mysqld # 重启服务
systemctl enable mysqld # 开机自启动
netstat -antp | grep 3306 # 查看3306端口判断MySQL服务是否开启
1.2.6 修改mysql的登录密码
mysqladmin -u root -p password "123456"
# !!!这一步非常重要,写错了只能推倒重来!!!
mysql -u root -p123456
create user 'root'@'%' identified by '123456';
# "%"表示任意地址,可以使用密码123456以root用户远程登录数据库
grant all privileges on *.* to 'root'@'%';
# 赋予远程连接的权限
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 修改加密方式,可以进行远程连接
create database bbs;
# 创建一个数据库叫bbs
create user 'bbsuser'@'%' identified by 'admin123';
# 创建用户bbsuser,密码为admin123
grant all privileges on bbs.* to 'bbsuser'@'%';
# 把bbs数据库里面所有表的权限授予给bbsuser
create user 'bbsuser'@'localhost' identified by 'admin123';
grant all privileges on bbs.* to 'bbsuser'@'localhost';
flush privileges;
# 刷新数据库
如下图所示表示能成功登录mysql:
1.3 编译安装PHP服务
1.3.1 准备工作
apt-get install -y libgd-dev libjpeg8-dev libpng-dev libfreetype6-dev libxml2-dev zlib1g-dev libcurl4-openssl-dev libssl-dev libonig-dev libsqlite3-dev
# 安装PHP依赖环境
cd /opt
tar -xf php-8.1.27.tar.gz
groupadd nobody
# 为PHP创建nobody组
1.3.2 编译安装
cd /opt/php-8.1.27/
./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-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
make -j 4 && make install
# 编译安装
以下为上述配置各项含义:
--prefix=/usr/local/php
:指定PHP的安装目录为/usr/local/php。--with-mysql-sock=/usr/local/mysql/mysql.sock
:指定MySQL的Unix socket文件路径,用于与MySQL数据库建立连接。--with-mysqli
:启用MySQLi扩展,用于支持MySQL数据库。--with-zlib
:启用Zlib库,用于压缩和解压缩数据。--with-curl
:启用cURL库,用于支持对URL的操作,如下载文件等。--with-gd
:启用GD库,用于处理图像。--with-jpeg-dir
:指定JPEG库的路径,用于GD库对JPEG格式图片的处理。-with-png-dir
:指定PNG库的路径,用于GD库对PNG格式图片的处理。--with-freetype-dir
:指定FreeType库的路径,用于GD库对字体的支持。--with-openssl
:启用OpenSSL库,用于支持SSL加密和HTTPS协议。--enable-fpm
:启用PHP-FPM(FastCGI Process Manager),用于提供更高效的PHP进程管理和请求处理。--enable-mbstring
:启用多字节字符串支持,用于处理多字节字符集的操作。--enable-xml
:启用XML支持,用于处理XML文档和数据。--enable-session
:启用会话支持,用于在不同页面间保持用户会话状态。--enable-ftp
:启用FTP支持,用于对FTP服务器进行操作。--enable-pdo
:启用PDO(PHP Data Objects),用于支持数据库访问的统一接口。--enable-tokenizer
:启用Tokenizer扩展,用于对字符串进行分词处理。--enable-zip
:启用Zip扩展,用于对ZIP文件进行操作。
1.3.3 创建软连接
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
1.3.4 修改PHP配置文件
php有三个配置文件
php.ini 主配置文件
php-fpm.conf 进程服务配置文件
www.conf 扩展配置文件
1.3.4.1 修改主配置文件
cp /opt/php-8.1.27/php.ini-development /usr/local/php/lib/php.ini
# 模板
vim /usr/local/php/lib/php.ini
# 按下图修改主配置文件
1.3.4.2 修改进程服务配置文件
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
vim /usr/local/php/etc/php-fpm.conf
# 按下图修改进程服务配置文件
1.3.4.3 修改拓展配置文件
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
1.3.5 启动php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
# 启动PHP-FPM服务,并使用/usr/local/php/lib/php.ini文件作为PHP配置文件
# php-fpm: 是一个fastcgi的管理工具, nginx的动态请求实际上是由php-fpm来处理
netstat -antp | grep 9000
# 查看9000端口判断PHP服务是否启用
cp /opt/php-8.1.27/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
1.3.6配置nginx支持PHP解析
mkdir -p /var/www/html
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak.2024.12.9
# 养成修改配置文件先备份的好习惯
vim /usr/local/nginx/conf/nginx.conf
# 作如下修改
location / {
root /var/www/html;
index index.html index.htm;
}
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
nginx -t
# 修改完nginx配置文件检查语法
systemctl restart nginx.service
# 重启nginx服务
1.3.7 验证PHP测试页
cd /var/www/html/
vim index.php
<?php
$link=mysqli_connect('192.168.159.200','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
结果如下图表示成功:
2 安装论坛
2.1 解压Discuz源码包并配置
unzip /opt/Discuz_X3.5_SC_UTF8.zip -d /opt/dis
# 解压到指定目录/opt/dis中
cp -a /opt/dis/upload/ /var/www/html/bbs
cd /var/www/html
chmod -R 777 bbs/
chown -R nginx.nginx bbs/
cd bbs/config
cp -a config_global_default.php config_global.php
# 安装Discuz论坛所需文件名config_global.php
cp -a config_ucenter_default.php config_ucenter.php
# 安装Discuz论坛所需文件名config_ucenter.php
2.2 安装Discuz论坛
使用浏览器访问
192.168.159.200/bbs/install/index.php
进入安装界面,安装步骤如下图: