CentOS 系统下 Docker Compose 部署 Dify 实战与调优指南

1. 环境准备与系统调优

在CentOS上部署Dify,第一步不是急着敲命令,而是把地基打牢。我见过太多朋友因为前期环境没整明白,后面部署过程磕磕绊绊,甚至服务跑起来后性能不稳,排查起来费时费力。咱们今天就从最根本的系统环境开始,聊聊怎么把一个干净的CentOS系统,调校成运行Dify的“高性能座驾”。

首先,系统版本的选择就有讲究。虽然CentOS 7和8都能跑,但我个人更倾向于CentOS 7.9这个长期支持版本。它足够稳定,社区资源丰富,遇到问题也更容易找到解决方案。至于硬件,官方建议的4核8G内存是起步线。如果你打算跑稍微复杂点的AI应用,或者用户量上来,我建议直接上8核16G。别在硬件上省钱,否则你会发现Dify的响应速度慢得让人抓狂,尤其是模型推理的时候,内存吃紧会直接导致服务卡顿甚至崩溃。存储这块,SSD是必须的,而且我建议把Dify的数据目录(比如数据库、上传的文件)单独挂载到一块高速SSD上,和系统盘分开,这样IO性能会好很多。

系统更新和基础依赖安装是常规操作,但有些细节容易忽略。执行yum update -y更新系统后,别忘了重启一下。然后安装基础工具包,我习惯用这个命令:yum install -y wget curl vim git lsof net-tools epel-release。这里epel-release是Extra Packages for Enterprise Linux的仓库源,很多好用的工具都在这里面。接下来是时间同步,分布式服务最怕时间不一致。安装并启动chronyd服务:yum install -y chrony && systemctl start chronyd && systemctl enable chronyd,然后用chronyc sources命令检查一下同步状态。

安全设置是另一个重头戏。SELinux在严格模式下确实会让很多服务“寸步难行”。对于内部测试环境,可以临时禁用:setenforce 0。如果想永久关闭,需要编辑/etc/selinux/config文件,把SELINUX=enforcing改成SELINUX=disabled,然后重启。但请注意,生产环境请务必谨慎评估关闭SELinux的风险,更推荐的方式是配置正确的SELinux策略。 防火墙firewalld我们不用关,只需要把必要的端口放行就行。Dify默认的Web端口是3000,API端口是5001,后续我们可能会用Nginx代理到80/443。所以先放行这些端口:

firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --permanent --add-port=5001/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# 如果使用默认的PostgreSQL和Redis,也需要放行
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload

做完这些,你的CentOS系统才算是一个合格的“容器化应用宿主机”。这步虽然繁琐,但磨刀不误砍柴工,后面部署和调优会顺利得多。

1.1 Docker与Docker Compose的“正确”安装姿势

很多人觉得安装Docker就是一行yum install docker的事,其实里面有不少门道。用系统自带的旧版本仓库,可能会安装一个很老的Docker版本,兼容性有问题。所以我们必须用Docker官方的仓库。

首先,清理可能存在的旧版本:

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

然后,安装必要的工具并设置官方仓库:

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

这里有个小技巧,如果你服务器在国内,访问官方仓库慢,可以换成国内的镜像源,比如阿里云:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

接下来安装Docker引擎。我建议安装一个特定的稳定版本,而不是永远用latest,这样环境更可控。可以先看看仓库里有哪些版本:yum list docker-ce --showduplicates | sort -r。然后选择一个版本安装,比如:

yum install -y docker-ce-24.0.9 docker-ce-cli-24.0.9 containerd.io docker-buildx-plugin docker-compose-plugin

注意,这里我一次性把docker-cedocker-ce-clicontainerd.io以及新的docker-compose-plugin都装上了。从Docker新版本开始,docker-compose已经作为插件集成在CLI里了,用docker compose命令(注意中间没横杠)来操作,比原来独立的docker-compose工具更好管理。

启动Docker并设置开机自启:

systemctl start docker
systemctl enable docker

验证安装:docker --versiondocker compose version。如果都能正确输出版本号,说明安装成功。

最后,也是至关重要的一步:配置Docker镜像加速器。直接从Docker Hub拉镜像,速度慢到你怀疑人生。修改或创建/etc/docker/daemon.json文件:

{
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}

这里我加了阿里云和腾讯云的镜像加速地址。exec-opts那行是为了让Docker使用systemd作为cgroup驱动,和CentOS系统更配。log-driverlog-opts是配置日志,防止容器日志把磁盘撑爆。storage-driver是存储驱动,overlay2是性能比较好的选择。配置完成后,重启Docker:systemctl daemon-reload && systemctl restart docker。跑个测试命令docker run hello-world

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值