前言
在之前的文章中,我们在 Windows 平台上部署 Seafile 服务器,但 Windows 版 Seafile 已经停止更新,距离最后一次更新2016年已经过去了6年。而目前 Seafile 继续更新的平台只有 Linux 和树莓派,若要获得 Seafile 更好的性能和安全性改进,就必须抛弃 Windows 平台转向 Linux 下部署 Seafile 服务器,以得到最新的功能。
部署平台
- Ubuntu 20.04
服务器内存需求
最低内存需求 2GB,建议内存 2GB 更高。
部署方式
使用 Seafile 一键安装脚本
Seafile 官方的安装脚本可以帮助您快速安装好 Seafile 服务器,并配置好 MariaDB, Memcached, WebDAV, Ngnix 和开机自启动。
Github地址:https://github.com/haiwen/seafile-server-installer-cn
Coding镜像地址:https://kingsonho.coding.net/public/seafile/seafile-server-installer-cn/git/files
*一键安装部署方式可以查看一键安装脚本内的说明,本文章将会详细讲解手动部署 Seafile 服务器的过程,有关使用 Docker 部署 Seafile 的方式将会在下篇文章推出,自 Seafile 8.0 版本开始官方建议使用一键安装脚本或者通过 Docker 去部署 Seafile 以减少不必要的错误。
手动部署 Seafile 服务器
安装 Mariadb 数据库
sudo apt update
sudo apt install mariadb-server -y
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
mysql_secure_installation
下载最新的服务器安装包
目前Linux服务端最新版本为 9.0.5,进入 /opt
目录并且下载安装包。
cd /opt
sudo wget https://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_9.0.5_x86-64.tar.gz
创建 /opt/seafile
目录并且将安装包解压入去。
sudo mkdir /opt/seafile
sudo mv /opt/seafile-server_9.0.5_x86-64.tar.gz /opt/seafile
cd /opt/seafile
sudo tar -xzf seafile-server_9.0.5_x86-64.tar.gz
sudo rm seafile-server_9.0.5_x86-64.tar.gz
完成操作后目录结构应该为这样。
seafile
└── seafile-server-9.0.5
├── check_init_admin.py
├── reset-admin.sh
├── runtime
├── seaf-fsck.sh
├── seaf-fuse.sh
├── seaf-gc.sh
├── seafile
├── seafile.sh
├── seahub
├── seahub.sh
├── setup-seafile-mysql.py
├── setup-seafile-mysql.sh
├── setup-seafile.sh
├── sql
└── upgrade
预安装软件
安装 Seafile 服务器之前,请确认已安装以下软件:
适用于Seafile 9.0.x 版本
apt-get install -y python3 python3-setuptools python3-pip python3-ldap memcached openjdk-8-jre libmemcached-dev libreoffice-script-provider-python libreoffice pwgen curl nginx libmysqlclient-dev
systemctl enable nginx
pip3 install --timeout=3600 django==3.2.* future mysqlclient pymysql Pillow pylibmc captcha markupsafe==2.0.1 jinja2 sqlalchemy==1.4.3 psd-tools django-pylibmc django-simple-captcha pycryptodome==3.12.0 cffi==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
service memcached start
systemctl enable memcached
配置 Nginx
rm /etc/nginx/sites-enabled/*
nano /etc/nginx/sites-available/seafile.conf
server {
listen 80;
server_name seafile.example.com;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1200s;
# used for view/edit office file via Office Online Server
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log seafileformat;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
access_log /var/log/nginx/seafhttp.access.log seafileformat;
error_log /var/log/nginx/seafhttp.error.log;
}
location /media {
root /opt/seafile/seafile-server-latest/seahub;
}
location /seafdav {
proxy_pass http://127.0.0.1:8080/seafdav;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1200s;
client_max_body_size 0;
access_log /var/log/nginx/seafdav.access.log seafileformat;
error_log /var/log/nginx/seafdav.error.log;
}
}
替换 server_name 为你的域名或 IP
*若服务器 HTTP 或 HTPPS 服务不是用正常 80 和 443端口,请自行更改里面的 proxy_set_header Host $host;
为 proxy_set_header Host $host:你的端口;
检查 Nginx 文件
nginx -t
创建链接
ln -sf /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
重启 Nginx
service nginx restart
创建 Seafile 数据库
cd /opt/seafile/seafile-server-9.0.5
./setup-seafile-mysql.sh
根据安装脚本的提示进行设置,在这里, 将会被要求选择一种创建 Seafile 数据库的方式:
-----------------------------------------------------
Please choose a way to initialize seafile databases:
-----------------------------------------------------
[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases
[ 1 or 2 ]
- 如果选择
1
, 你需要提供 MySQL 的 root 密码. 脚本程序会自动创建数据库和用户。 - 如果选择
2
,需要提前手动创建 ccnet / seafile /seahub 数据库。
若安装成功将可以看到以下输出。
--------------------------------------------------------------------
Your seafile server configuration has been finished successfully.
--------------------------------------------------------------------
run seafile server: ./seafile.sh { start | stop | restart }
run seahub server: ./seahub.sh { start | stop | restart }
--------------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
--------------------------------------------------------------------
port of seafile fileserver: 8082
port of seahub: 8000
When problems occur, Refer to
https://download.seafile.com/published/seafile-manual/home.md
for information.
现在Seafile的目录结构应该像这样:
seafile
├── ccnet
├── conf
│ ├── ccnet.conf
│ ├── gunicorn.conf.py
│ ├── seafdav.conf
│ ├── seafile.conf
│ └── seahub_settings.py
├── seafile-data
│ └── library-template
├── seafile-server-9.0.5
│ ├── check_init_admin.py
│ ├── reset-admin.sh
│ ├── runtime
│ ├── seaf-fsck.sh
│ ├── seaf-fuse.sh
│ ├── seaf-gc.sh
│ ├── seafile
│ ├── seafile.sh
│ ├── seahub
│ ├── seahub.sh
│ ├── setup-seafile-mysql.py
│ ├── setup-seafile-mysql.sh
│ ├── setup-seafile.sh
│ ├── sql
│ └── upgrade
├── seafile-server-latest -> seafile-server-9.0.5
└── seahub-data
└── avatars
*seafile-server-latest
文件夹为指向当前 Seafile 服务器文件夹的符号链接. 将来你升级到新版本后, 升级脚本会自动更新使其始终指向最新的 Seafile 服务器文件夹.
启动 Seafile
- 启动 Seafile:
cd /opt/seafile/seafile-server-latest
./seafile.sh start
- 启动 Seahub
./seahub.sh start
* 第一次启动 seahub 时,seahub.sh
脚本会提示你创建一个 seafile 管理员帐号。
*由于7.0.x 版本之后,8000端口默认监听在127.0.0.1地址上,将无法直接通过8000端口访问Seafile服务,所以需要配置反向代理。
修改 SERVICE_URL 和 FILE_SERVER_ROOT
还需要更新 SERVICE_URL
和 FILE_SERVER_ROOT
这两个配置项。否则无法通过 Web 正常的上传和下载文件。
Seafile 5.0 版本开始,可以直接登陆 Seafile 页面在系统设置中来设置这两个值 (注意,如果同时在 Web 界面和配置文件中设置了这个值,以 Web 界面的配置为准。)
SERVICE_URL: http://www.myseafile.com
FILE_SERVER_ROOT: http://www.myseafile.com/seafhttp
重新启动 Seafile 和 Seahub,修改地址之后需要重启 Seafile 服务器
cd /opt/seafile/seafile-server-latest
./seafile.sh restart
./seahub.sh restart
创建 systemd service 文件使 Seafile 开机自启动
sudo nano /etc/systemd/system/seafile.service
[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target mariadb.service
[Service]
Type=forking
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
LimitNOFILE=infinity
User=root
Group=root
[Install]
WantedBy=multi-user.target
sudo systemctl enable seafile.service
sudo nano /etc/systemd/system/seahub.service
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
User=root
Group=root
[Install]
WantedBy=multi-user.target
sudo systemctl enable seahub.service
参考文档:https://cloud.seafile.com/published/seafile-manual-cn/deploy/README.md
发表评论须遵守中华人民共和国相关法律法规。违规评论将会被删除。
Comments must subject to the relevant laws and regulations of the People’s Republic of China. Offending comments will be deleted.