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

  



posted @ 2022-01-08 10:26  coocoo  阅读(35)  评论(0编辑  收藏  举报