Bootstrap

LNMP和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

进入安装界面,安装步骤如下图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

;