引言
最近论坛访问速度变慢,一看内存占用,剩余100M可用内存。为了提升速度,买了一台高性能的ARM机器,将Discourse论坛迁移到这个新服务器上。本文将详细记录整个迁移过程,希望能帮助遇到类似需求的朋友。此文章是我在迁移论坛时一步一步记录的💕
简单描述下整个过程的思路:
- 备份旧服务器上的数据和配置文件
- 传输文件到新服务器上
- 构建新容器
- 恢复数据
是不是很简单?那么,开整吧!
环境
旧服务器配置:
- CPU: 2核
- 内存: 4GB
- 架构:x86
- SWAP:2G
- 系统: Ubuntu 22.04
- Discourse版本: 3.4.0.beta3-dev
新服务器配置:
- CPU: 3核
- 内存: 18GB
- 架构:ARM
- 系统: Debian 12
- 仅配置SSH
旧服务器
数据备份
登录到旧服务器上执行备份,备份文件会保存在/var/discourse/shared/standalone/backups/default
目录下:
cd /var/discourse ./launcher enter app #进入论坛容器 discourse backup #备份论坛数据
稍等,可以看见绿色的提示备份成功,最后一行显示备份文件的位置。
将文件传输到新主机
将备份文件传输到新主机,容器内可以使用scp传输。如果需要下载到本地,先使用exit
命令退出容器再使用docker cp 把容器内的内容copy到主机上。
#docker cp 语法
#docker cp [OPTIONS] 容器名:容器路径 主机路径
#docker cp app:/var/www/discourse/public/backups/default/discourse-2024-11-06-092317-v20241022022326.tar.gz /root/
这里我使用scp将备份文件传输到新主机,可以看见传输速度还挺快。
#scp 语法
#scp [options] source_file username@hostname:target_path
#scp /var/www/discourse/public/backups/default/discourse-2024-11-06-092317-v20241022022326.tar.gz [email protected]:/root/
还是一样,将论坛的配置文件app.yml
也传过去。
至此,旧服务器操作已完成。
新服务器
构建新容器
OK,接下来登录到新服务器上构建新容器,执行下面的命令(具体细节参考:在独立环境和Nginx的环境中部署搭建Discourse论坛 | BOBO Blog | 和nginx共存)
如果服务器是国内的话,可能会执行失败,需要配置代理环境(参考解决Docker国内无法拉取镜像(附Discourse使用阿里云仓库更新、安装教程) | BOBO Blog)
sudo -s git clone https://github.com/discourse/discourse_docker.git /var/discourse cd /var/discourse mv /root/app.yml ./containers/app.yml #将配置文件移动到对应目录 ./launcher rebuild app #重构discourse
构建的过程大概不到十分钟。这个时候就应该去添一杯热水☃️
恢复数据
🆗喝了一杯热水把手搓热了继续。可以看见容器起来了,接下来将备份包拷贝到新容器中,不过遇见一个问题,提示没有这个文件夹
进入容器查看这个文件不存在,需要创建文件夹,再copy,并且必须复制到这个文件夹中,否则会恢复失败。实测,需要注意这个点。所以完整的命令为:
./launcher enter app #进入容器 mkdir ./public/backups/default exit #退出容器 docker cp /root/discourse-2024-11-06-092317-v20241022022326.tar.gz app:/var/www/discourse/public/backups/default/ #将备份数据copy到容器内 ./launcher enter app discourse enable_restore #开启恢复数据 discourse restore discourse-2024-11-06-092317-v20241022022326.tar.gz #执行恢复数据
完了后你就可以看见绿色的Success了。提示你Restore done.
退出容器,重建就迁移成功!
exit ./launcher rebuild app
优化配置,提示性能
文章最后,附上一些配置文件app.yml
可以优化的地方,通过修改这些值,可以提示你的论坛运行速度。
优化 PostgreSQL 数据库配置
调整 db_shared_buffers
:建议根据服务器内存进行配置。如果服务器内存是 8GB,则设为 2048MB。若内存为 16GB,可以增加到 4096MB:
params: db_shared_buffers: "4096MB"
启用 db_work_mem
:提升查询性能,将注释取消,并根据需要调整大小(如 40MB)。如果流量大,查询密集度高,服务器内存充足,可以适当增大。
params: db_work_mem: "40MB" # 或更大,比如6
4MB
也可以在后面接着添加以下参数优化
db_maintenance_work_mem: "512MB" db_effective_cache_size: "12GB" # 设置为总内存的75%左右 db_random_page_cost: "1.1" # 如果使用SSD,建议使用此值
配置 UNICORN_WORKERS
UNICORN_WORKERS
决定了 Discourse 处理并发请求的能力,合理配置能客观的提升论坛运行速度,建议设置为 (CPU核心数 * 2) + 1。如服务器有 4 核,设置为 9:
env:
UNICORN_WORKERS: 9
内存:每个 worker 约占用 200-300MB 内存,因此需要确保服务器有足够内存来支持设定的 worker 数量。对于内存较低的小机,适当减少 worker 数量。
结语
本次迁移和优化,不仅让论坛在新服务器上顺利运行,还通过优化配置文件显著提升论坛的性能与稳定性。希望这篇文章对你在将Discourse迁移到新服务器有帮助,如果你有任何问题或需要进一步的帮助,欢迎留言或者论坛交流学习:bbs.soulcloser.com。如果这篇文章对你有帮助,可以把文章链接(https://www.soulcloser.com/4528)分享给需要的人。
版权声明 © 2024 — Now BOBO BLOG:原创文章受著作权法保护,请尊重他人劳动成果。未经作者书面允许,不得以任何形式复制其内容、摘编、转载,侵权必究。