discuz官方网站: https://discuz.dismall.com/
1. Nginx安装和配置
2. 安装PHP 7.X
3. Nginx和PHP整合
[root@Nginx ~]# systemctl start php-fpm
[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
#root html; nginx文件目录,这里是相对路径,也可以改成下面的绝对路径
root /usr/local/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#创建PHP测试页面
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
4. Mysql 8.0 的Yum安装和配置
#检查有无残留版本
rpm -qa |grep mysql
rpm -qa |grep mariadb
如果有,删除
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
#查看有无mysql相关的文件
find / -name mysql
如果有,删除
#下载RPM包,用于安装mysql yum源
wget http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
或
wget https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
rpm -ivh mysql80-community-release-el7-7.noarch.rpm
#为避免报错,可以提前把yum源里的gpgcheck关闭
vim /etc/yum.repos.d/mysql-community.repo
#安装mysql
yum -y install mysql-community-server
#获取MySQL 8.0 初始密码
systemctl start mysqld
grep "password" /var/log/mysqld.log
2022-12-14T03:22:41.805036Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Uw)7KsfsS6MS
#修改Mysql初始密码
alter user root@localhost identified with mysql_native_password by 'AAaa@1234';
#默认root用户不能远程登录,需要更新密码信息
update mysql.user set host='%' where user="root";
flush privileges;
为下一步配置discuz做准备:
mysql> create user discuz@'%' identified with mysql_native_password by 'Discuz@1234';
mysql> grant all on discuz.* to discuz@'%';
5. Discuz 文件部署
官方网站:https://discuz.dismall.com/
#下载后为zip压缩文件,使用 rz -e 上传
unzip Discuz_X3.5_SC_UTF8_20221231.zip
#将解压出的upload下的文件移动到nginx发布目录
[root@Nginx-Php ~]# mv upload/* /usr/local/nginx/html/
得到如下界面,按步骤配置即可。
排错:
#查看 data 目录和config目录权限及属主
ll /usr/local/nginx/html
#查看php程序属主
#所以,修改 data 目录和config目录的属主即可(o+w授权不安全)。
[root@Nginx-Php ~]# cd /usr/local/nginx/html/
[root@Nginx-Php html]# chown -R apache:apache data/ config/ uc_client/ uc_server/
6. Mysql 主从配置
Master配置
步骤1:修改配置文件
[root@Master ~]# vim /etc/my.cnf
在 [mysqld] 下增加下面两行:
server-id=1
log-bin=mysql-bin
步骤2:重启mysqld服务
[root@Master ~]# systemctl restart mysqld
步骤3:配置同步账号
create user 'tongbu'@'%' identified with mysql_native_password by 'AAAaaa@1234';
grant replication slave on *.* to 'tongbu'@'%';
步骤4:查看Mater状态及最新的Position
mysql> show master status;
Slave配置
步骤1:修改Slave配置文件
[root@Slave ~]# vim /etc/my.cnf
在 [mysqld] 下增加下面一行:
server-id = 2
步骤2:重启mysqld服务
步骤3:Slave指定Master IP、用户名、密码、bin-log文件名及position
mysql> change master to master_host='192.168.160.22',master_user='tongbu',master_password='AAAaaa@1234',master_log_file='mysql-bi.000001',master_log_pos=157;
步骤4:启动slave
mysql> start slave;
步骤5:查看slave状态
mysql> show slave status \G;
当以下状态均为Yes时表示主从同步状态正常。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
备份Mater数据,还原到Slave
[root@Master ~]# mysqldump -uroot -pAAaa@1234 --all-databases >all.sql
[root@Master ~]# scp all.sql 192.168.160.23:/tmp
[root@Slave ~]# mysql -uroot -pAAaa@1234 </tmp/all.sql
7. Nginx 负载均衡php-fpm多实例
如果有多个php-fpm实例做负载均衡,需要修改Nginx配置
[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
#在server块外面添加upstream
#discuz-SLB为自定义的模块名称
upstream discuz-SLB {
server 192.168.160.21:9000;
server 192.168.160.31:9000;
}
#修改fastcgi配置
location ~ \.php$ {
root /usr/local/nginx/html;
fastcgi_pass discuz-SLB; #引用之前自定义的模块名称
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
#重启Nginx
[root@Nginx ~]# /usr/local/nginx/sbin/nginx -s reload
#修改两台php-fpm服务器的配置
注意:另外一台php-fpm服务器上也要有/usr/local/nginx/html 发布目录,且内有网站文件和对应权限。
- 将listen的IP从127.0.0.1改成0.0.0.0
[root@Nginx ~]# vim /etc/php-fpm.d/www.conf
#listen = 127.0.0.1:9000
listen = 0.0.0.0:9000
- 在listen.allowed_clients里添加web服务器的地址
#listen.allowed_clients = 127.0.0.1
listen.allowed_clients = 127.0.0.1,192.168.160.21
- 重启php-fpm服务
[root@Nginx ~]# systemctl restart php-fpm