haproxy 基于 lamp 部署 discuz,实现动静分离
mariadb-server:
node4:192.168.2.14,非关键配置步骤省略 静态服务器: node1:192.168.2.11 node4:192.168.2.14:这里我们把 14 也作为静态 web 动态服务器: node2:192.179.2.12 调度器: node3:192.168.2.13
node4:
配置 mariadb-server:
create database discuz; grant all on discuz.* to dzadmin@'192.168.2.%' identified by '123456'; grant all on discuz.* to dzadmin@'localhost' identified by '123456';
node2:作为动态服务器,需要和 mysql 交互,所以我们就先在它上面先部署 discuz 好了
yum install httpd php php-mysql # 部署为一个动态服务器,这里我们就以模块化方式结合 php 工作,fpm 方式安装 php-fpm 即可
下载 discuz:
wget https://gitee.com/3dming/DiscuzL/attach_files/891046/download 或者 wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
cp -a upload/* /var/www/html/ # 只需要 upload 这个文件夹里的内容就好,复制到网站根目录 cp config_global_default.php config_global.php # 复制这两个配置文件 cp config_ucenter_default.php config_ucenter.php cd /var/www/html chown -R apache.apache ./* # 修改 属主属组
浏览器访问: 192.168.2.11/install/index.php # 页面安装 discuz
scp -r /var/www/html/* root@192.168.2.11:/var/www/html/ # 11 和 14 都拷贝一份,并在 11 和 14 上把属主属组都改为 apache
这里恰巧 apache 用户的 uid 相同,我们有意让 192。168.2.14 上 apache 用户的 uid 和 12 上不一样,等下挂载时看有何区别
因为 node4 上 apache 用户 uid 和 node2 不一样,所以 node4 挂载后会如下图所示:
![image](https://img2020.cnblogs.com/blog/597917/202201/597917-20220105184231899-1646022056.png)
此时访问 node4 的 web 服务是访问不了的
这种情况怎么办呢?
node2 共享文件的时候可以压缩所有用户为 nfsnobody,然后 node1 和 node4 都会创建这么一个用户,由于 uid 是 65534 这个数值足够大,一般不会冲突;当然也可以明确指定压缩后的 uid 为 0
还需要给 data 目录执行权限
下面进行配置:
我们将 node2 作为 nfs 服务器
yum install nfs-utils -y
discuz 中需要共享出去两个目录:
/data -----数据缓存及附件 /static -----静态文件
共享这两个目录:vim /etc/exports
/var/www/html/data 192.168.2.11(rw,all_squash,anonuid=0,insecure) 192.168.2.14(rw,all_squash,anonuid=0,insecure) /var/www/html/static 192.168.2.11(rw,all_squash,anonuid=0,insecure) 192.168.2.14(rw,all_squash,anonuid=0,insecure)
chmod -R +x /var/www/html/data
node1 和 node 4 挂载 上面两个目录:
mount -t nfs 192.168.2.12:/var/www/html/data /var/www/html/data mount -t nfs 192.168.2.12:/var/www/html/static /var/www/html/static
实现动静分离:
node3 作为负载均衡器:
frontend dz bind *:80 acl url_static path_beg -i /data /static /images /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js .html .ico use_backend static if url_static default_backend dyn backend dyn balance roundrobin server node2 192.168.2.12:80 check backend static balance roundrobin server ndoe1 192.168.2.11:80 check server node4 192.168.2.14:80 check