Seafile 服务器从 9.0 版本开始推荐以 Docker 方式部署 Seafile。从 9.0 开始,二进制包不能运行在 CentOS 7, CentOS 8 上。如果你需要在 CentOS 或其他一些二进制包不支持的平台上运行 Seafile,那么建议你先迁移到 Docker 方式来运行 Seafile。
建议的步骤为:
先升级二进制包的版本为 8.0.x,并确保系统正常运行。
关闭 Seafile 和本机的 Nginx,Memcached
创建 Seafile Docker image 运行需要的目录,并把本地部署的 Seafile 的一些文件拷贝到该目录下
根据您需要的版本,下载 Seafile docker-compose.yml 文件,配置 Seafile Docker 使用非 Docker 版本的配置信息,连接旧的 MySQL 数据库和旧的 seafile-data 目录。
启动 Seafile Docker。
下面的文档,假定你非 Docker 版本 Seafile 部署路径为 /opt/seafile
。假如你使用了其他路径,运行命令前,注意要修改命令路径。
注意,你也可以参考 Seafile 备份恢复文档,在另一台机器部署 Seafile Docker,然后把旧版的配置信息、数据库、seafile-data 拷贝到新的机器上来完成迁移。这样的好处是就算迁移过程中出错,也不会破坏已有的系统。
systemctl stop nginx && systemctl disable nginx
systemctl stop memcached && systemctl disable memcached
./seafile.sh stop && ./seahub.sh stop
非 Docker 版本使用的是本地的 MySQL,现在要让 Docker 版本的 Seafile 连接这个 MySQL,需要增加相应的访问权限。
下列命令是以 mysql 的 seafile 用户为例说明:
GRANT ALL PRIVILEGES ON *.* TO 'seafile'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; ## password是您本地 mysql 的 seafile 用户密码
## 给数据库授权
GRANT ALL PRIVILEGES ON `ccnet_db`.* to 'seafile'@'%';
GRANT ALL PRIVILEGES ON `seafile_db`.* to 'seafile'@'%';
GRANT ALL PRIVILEGES ON `seahub_db`.* to 'seafile'@'%';
##重启 mysql 使修改生效
systemctl restart mariadb
mkdir -p /opt/seafile-data/seafile
cp -r /opt/seafile/conf /opt/seafile-data/seafile
cp -r /opt/seafile/seahub-data /opt/seafile-data/seafile
cp -r /opt/seafile/ccnet /opt/seafile-data/seafile
修改 /opt/seafile-data/seafile/conf 里的 mysql 配置 host 字段配置,把 HOST=127.0.0.1 改成 HOST = 本机ip,要修改的文件有 ccnet.conf、seafile.conf、seahub_settings.py。
注意:seahub_settings.py 配置文件中的 memcached 的 IP 字段需要指向 docker 中的 memcached,修改后字段如:'LOCATION': 'memcached:11211'
因为 mysql 要用本地部署的,所以要注释掉 mysql 容器相关的选项
services:
# db:
# image: mariadb:10.5
# container_name: seafile-mysql
# environment:
# - MYSQL_ROOT_PASSWORD=db_dev # Requested, set the root's password of MySQL service.
# - MYSQL_LOG_CONSOLE=true
# volumes:
# - /opt/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
# networks:
# - seafile-net
.........
depends_on:
# - db
- memcached
......
添加本地存储映射路径,在 docker-compose.yml 中 seafile 的 volumes 字段下添加
- /xxxx/seafile-data:/shared/seafile/seafile-data
只需要修改冒号前的路径,修改成原来的 seafile-data 的绝对路径 (冒号后的路径是 seafile 容器内的路径,不能修改)。
.........
seafile:
image: seafileltd/seafile-mc:8.0.7-1
container_name: seafile
ports:
- "80:80"
# - "443:443" # If https is enabled, cancel the comment.
volumes:
- /opt/seafile-data:/shared
- /xxxx/seafile-data:/shared/seafile/seafile-data
.......
注意:
旧的 seafile-data 目录及目录下的文件的拥有者必须是root ,否则seafile启动会失败报错。命令:chown -R root:root /xxxx/seafile-data
image 版本必须指定为: 8.0.7-1 或以上版本,否则启动容器会有报错
然后启动容器
docker compose up -d
在浏览器上登录,看下是否能正常使用
Last modified by 马宇航, 2024-04-01