搭建Discuz论坛

lnmp

l:linux操作系统

n:nginx前端页面

m:mysql数据库,账号密码等等都是保存在这个数据库里面

p:php------nginx擅长处理的是静态页面,页面登录账户,需要请求到数据库,通过php把动态请求转发数据库

搭建Discuz论坛

1、编译安装数据库mysql

安装依赖源

c 复制代码
apt install -y libaio1 libncurses5

将mysql的源代码包放置到/opt的目录下,然后解压mysql源代码包,将解压好的mysql移到/usr/local/目录下

c 复制代码
tar -xf mysql-8.0.30-el7-x86_64.tar.gz
mv mysql-8.0.30-el7-x86_64 /usr/local/mysql

创建用户并修改mysql的所属者和所属组为mysql

c 复制代码
useradd -s /usr/sbin/nologin mysql
chown -R mysql.mysql mysql/

修改mysql的主配置文件,并修改其的所属者和所属组

c 复制代码
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_D		IVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
	保存退出
chown mysql.mysql /etc/my.cnf

配置环境变量

c 复制代码
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile 

初始化数据库,并给/etc/init.d/mysqld赋权

c 复制代码
cd /usr/local/mysql/bin
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
#刷新和重启
systemctl daemon-reload
systemctl restart mysql
#查看数据库的端口是否开启
netstat -antp | grep 3306

初始化数据库密码

c 复制代码
mysqladmin -u root -p password "123456"
#测试数据库是否完成
mysql -u root -p123456
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%';
flush privileges;
alter user 'root'@'%' identified with mysql _native_password by '123456';

2、php

安装php的依赖环境

将php的源码包放到/opt目录下,并将其解压

c 复制代码
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
tar -xf php-8.1.27.tar.gz

创建用户

c 复制代码
groupadd nobody

编译安装

c 复制代码
编译
./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

建立软链接

cpp 复制代码
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

php有三个配置文件

php.ini:主配置文件

php-fpm.conf:进程服务端的配置文件

www.conf:扩展配置文件

php.ini:主配置文件

cpp 复制代码
#从php源码包中复制主配置文件到指定目录
cp php.ini-development /usr/local/php/lib/php.ini
#修改主配置文件
vim /usr/local/php/lib/php.ini
#第976行
date.timezone = Asia/Shanghai
#第1181行
mysqli.default_socket = /usr/local/mysql/mysql.sock

php-fpm.conf:进程服务端的配置文件

c 复制代码
cd /usr/local/php/etc/
#把 php-fpm.conf.default重命名php-fpm.conf
cp php-fpm.conf.default  php-fpm.conf
vim php-fpm.conf
#第17行去掉注释,并改变路径
pid = /var/log/php-fpm.pid
#第24行去掉注释,改变路径
error_log = /var/log/php-fpm.pid

www.conf:扩展配置文件

c 复制代码
cp /usr/local/php/etc/php-fpm.d/www.conf.default   /usr/local/php/etc/php-fpm.d/www.conf
#启动
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
#把系统管理文件复制到指定目录
cp php-fpm.service  /usr/lib/systemd/system/php-fpm.service

3、nginx的配置

c 复制代码
修改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
loction / {
	root /var/www/html;
	index index.html;
}
location ~ \.php$ {
    #locatioan的正则匹配
    root /var/www/html;
    fastcgi_pass 127.0.0.1:9000;
    #指定转发动态请求的地址
    fastcgi_index index.php;
    #指定处理动态请求的文件和后缀名
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    #表示当前请求的脚本路径,$fastcgi_script_name/bbs/install/index.php
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #$document_root,nginx访问的默认的路径/usr/local/nginx/html/bbs/install/index.php,变量赋值,传给php
    include fastcgi_params;
    #使用include指令,把fastcgi_param的配置合并到一起
}
#重启nginx
systemctl restart nginx

创建数据库

c 复制代码
mysql -u root -p123456
CREATE DATABASE bbs;
CREATE USER 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT ALL PRIVILEGES ON bbs.* TO 'bbsuser'@'%';
FLUSH PRIVILEGES;
CREATE USER 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
GRANT ALL PRIVILEGES ON bbs.* TO 'bbsuser'@'localhost';
FLUSH PRIVILEGES;

创建网页文件

c 复制代码
cd /usr/local/nginx/html
vim index.php
<?php
$link=mysqli_connect('192.168.233.61','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

4、搭建论坛discuz

将discuz源码包放到/opt目录下,并将其解压到dis目录下

c 复制代码
unzip Discuz_X3.5_SC_UTF8.zip -d /opt/dis/

创建目录

c 复制代码
mkdir -p /var/www/html
#拷贝文件到数据
cp -r upload/ /var/www/html/bbs/
cd  /var/www/html/bbs/config
cp config_global_default.php config_global.php
cp config_ucenter_default.php config_ucenter.php
#修改所属者和所属组
chmod -R 777 bbs/
chown -R nginx.nginx bbs/



nginx的优化

1、隐藏版本号

第一种:通用方法编译,apt,yum都可以使用

c 复制代码
vim nginx.conf
在http模块
http {
server_tokens off;
}

第二种(仅限于编译安装)

c 复制代码
vim /opt/nginx-1.22.0/src/core/nignx.h
第13行和14行可以改成xy104和xy105
cd /opt/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
vim /usr/local/nignx/conf/nginx.conf
http {
server_tokens on;
}
systemctl restart nginx


2、日志分割

nginx本身没有设计日志分割的工具,是由运维人员自己进行处理和分割

使用shell脚本实现日志分割

c 复制代码
vim /opt/nginxlogs.sh
#!/bin/bash
d=$(date +%Y-%m-%d)
#直接获取当前日期
dir="/usr/local/nginx/logs"
#获取日志目录所在的位置
logs_access='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
#定义需要分割的日志文件
pid_file='/usr/local/nginx/run/nginx.pid'
#定义pid文件的位置
if [ ! -d "$dir" ]
then
mkdir -p $dir
fi
mv ${logs_access} ${dir}/access_${d}.log
mv ${logs_error} ${dir}/error_${d}.log
kill -USR1 $(cat ${pid_file})
#-USR1,通过发送USR1这个信号,给nginx的主进程,让nginx重新生成access.log和error.log

#日志清理,清理30天以前的日志
find $dir -mtime +30 -exec rm -rf {} \;
相关推荐
独自破碎E4 分钟前
【BISHI9】田忌赛马
android·java·开发语言
·云扬·1 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb
代码s贝多芬的音符1 小时前
android 两个人脸对比 mlkit
android
darkb1rd3 小时前
五、PHP类型转换与类型安全
android·安全·php
gjxDaniel4 小时前
Kotlin编程语言入门与常见问题
android·开发语言·kotlin
csj504 小时前
安卓基础之《(22)—高级控件(4)碎片Fragment》
android
峥嵘life4 小时前
Android16 【CTS】CtsMediaCodecTestCases等一些列Media测试存在Failed项
android·linux·学习
stevenzqzq5 小时前
Compose 中的状态可变性体系
android·compose
似霰5 小时前
Linux timerfd 的基本使用
android·linux·c++
darling3317 小时前
mysql 自动备份以及远程传输脚本,异地备份
android·数据库·mysql·adb