尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PageAdmin CMS实现后台内网和前台外网分离部署的教程

PageAdmin CMS实现后台内网和前台外网分离部署的教程 最近在做一个市级的政务站群项目甲方要求后台不能暴露在互联网中前端网页需要生成html并推送到另外一台对外的服务器。本次项目大致方案如下管理系统PageAdmin CMS平台版分布式储存阿里云OSS。服务器两台麒麟v10两台数据库人大金仓中间件中创分部署缓存中间件甲方没有要求本次项目直接采用redis。安装好以上所有产品和中间件后本次项目重点步骤和注意事项一、进入后台开启静态功能和配置分布式储存参数进入PageAdmin系统站点的后台管理系统配置应用设置如下图重点设置启动站点功能设置为开启PageAdmin平台版本默认是支持业务系统和网站统一构建不开启前台网页会无法打开站点静态功能设置为默认开启静态生成模式由于前端模版是响应式这里选择不区分客户端如果前端模版分pc和手机端模版选择第二种模式PC和手机端分别生成附件集中储存选择阿里云oss配置好绑定域名BucketNameAccessKeyIdAccessKeySecretEndPoint(OSS端点)这些参数这些参数开通阿里云oss后就可以获取到二、生成Html页面进入Html页面刷新菜单如下图这里注意一下第一次需要全量生成所有页面以后编辑修改栏目、发布编辑新内容都会自动生成新的html页面。首页所有栏目页所有内容页所有专题页面全部生成一次生成结果会通过站内信息异步通知这里不需要等待可以去做其他事情即可异步通知中会有详细的日志包括生成数量错误次数错误地址错误原因等详细描述这里比较简答不赘述。PageAdmin的静态文件默认生成到网站根目录下的html站点编号pc目录中由于是响应式站点所以静态html都在pc目录中。重点PageAdmin修改编辑栏目默认只会更新前10页可在配置文件中配置数量如果你的栏目列表超过10页面需要手工点击更新栏目按钮才能所有所有的分页这里有个小技巧可以通过系统自带的页面静态方案来自动生成静态方案页面可以配置需要定时更新的栏目定时执行时间支持选择具体时间和cron表达式两种模式比如可以每天晚上11点更新所有栏目页面这里就减少很多运维工作。三、Html文件跨服务器推送html文件跨服务器推送有很多方案由于两台服务器在同一个局域网段目前局域网主流两种同步方案有inotify‑wait rsync和lsyncd小编这里使用lsyncd方案这步主要是配置服务器下面做一些简单的配置介绍具体不懂的大家可以自行Ai搜索。lsyncd方案说明底层封装 inotify收集文件事件**合并批量触发 rsync**避免文件频繁改动时疯狂调用 rsync 进程性能远高于裸写 inotifywait 脚本。不废话直接上安装说明步骤1、源机器安装 lsyncd rsyncyum install -y lsyncd rsync步骤2、配置 SSH 免密必须否则同步会卡住要密码# 生成密钥一路回车不要设置密码ssh-keygen -t ed25519# 推送公钥到目标机器IP替换为你的目标IP这里回要求输入目标机器的密码。ssh-copy-id root目标ip推送成功后一定要测试一下是否真的免密了。ssh root目标ip能直接登录成功说明免密成功一定要测试不能成功按下免顺序排查2.1. ✔源机器ssh-keygen -t ed25519 生成密钥**密钥不要设置 passphrase 密码**2.2. ✔源机器ssh-copy-id root192.168.1.20推送公钥2.3. ✔目标机器PubkeyAuthentication yes 开启公钥认证sshd -t校验reload sshd2.4 ✔目标机器权限chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys2.5. ✔目标机器SELinuxrestorecon -Rv /root/.ssh2.6. ✔源机器手动 ssh 测试免密登录**必须成功再启动 lsyncd**步骤3、两边创建目录源机器mkdir -p /data/www_src目标机器mkdir -p /data/www_dst步骤4编写 lsyncd 配置文件主配置文件路径/etc/lsyncd.conf先备份原始文件cp /etc/lsyncd.conf /etc/lsyncd.conf.bak清空写入下面完整配置cat /etc/lsyncd.conf EOF settings { logfile /var/log/lsyncd.log, statusFile /var/log/lsyncd.status, inotifyMode CloseWrite, delay 1, maxProcesses 4, } sync { default.rsyncssh, source /data/www_src/, host 目标ip, targetdir /data/www_dst/, rsync { archive true, delete true, compress false, } } EOF参数小白解释source /data/www_src/末尾斜杠不能丢同步文件夹里面所有文件不是同步文件夹本身inotifyMode CloseWrite文件写完关闭后才同步防止同步半截写入损坏文件delay 1事件合并延迟 1 秒大量文件修改不会疯狂启动 rsync 进程delete true源删除文件目标机器也同步删除。测试阶段建议改为 false确认业务没问题再打开 truehost你的目标服务器 IPtargetdir目标机器目录多目录同步写多个sync{...}块即可。步骤5调内核 inotify 参数必做文件多会报错inotify 默认监听文件数量有限静态站点、大量小文件场景必须调大。cat /etc/sysctl.conf EOF fs.inotify.max_user_watches 1048576 fs.inotify.max_user_instances 2048 EOF sysctl -p查看是否生效cat /proc/sys/fs/inotify/max_user_watches步骤六启动服务# 设置开机自启并启动 systemctl enable --now lsyncd # 查看状态 systemctl status lsyncd绿色 active (running) 代表正常运行。如果报错看日志排查。步骤七测试同步在源机器创建测试文件touch /data/www_src/test01.txt echo hello lsyncd /data/www_src/test02.txt去目标机器查看是否自动生成文件ls /data/www_dst/删除源文件测试 delete 效果deletetrue 才生效rm -f /data/www_src/test01.txt步骤八日志查看排错最重要# 实时看运行日志 tail -f /var/log/lsyncd.log# 看状态文件当前监听目录 cat /var/log/lsyncd.status常见报错查看journalctl -u lsyncd -f⚠️小白高频踩坑清单❌路径末尾斜杠丢失/data/www_src→ 会把 www_src 整个文件夹同步到目标目录下/data/www_src/→ 同步文件夹内部所有文件配置必须带末尾 /。❌ssh 免密失败 lsyncd 不会弹出密码输入框直接同步失败先手动 ssh 测试确认免密可用。❌deletetrue 风险很高 会删除目标机器多余文件刚部署务必设置 deletefalse 测试业务验证没问题再开启。❌大文件写入 大文件拷贝时lsyncd 检测到 close_write 才同步如果经常同步半截文件把 delay 调大到 2~3。❌权限问题 源目录、目标目录读写权限ssh 用户要有目标目录写入权限。❌防火墙 源机器能通目标机器 22 端口防火墙放行 ssh。❌双向同步 lsyncd 只适合单向源→目标不要两边互相 lsyncd会造成循环同步灾难。双向同步用分布式存储。常用操作命令# 重启lsyncd修改配置后必须重启 systemctl restart lsyncd # 停止服务 systemctl stop lsyncd # 关闭开机自启 systemctl disable lsyncd扩展过滤不需要同步文件示例如果想忽略日志、临时文件rsync 增加 exclude 参数rsync { archive true, delete true, compress false, _extra {--exclude,*.log,--exclude,tmp/}到这里PageAdmin CMS后台生成的html文件就可以同步到目标服务器根据带宽情况会有1-3秒的延迟这个过程可以接受这里比较麻烦的就是文件同步这块第一次配置的朋友容易踩坑。
返回列表