本文档用来说明通过预编译好的安装包来安装并运行基于 MySQL/MariaDB 的 Seafile 服务器。(MariaDB 是 MySQL 的分支)
提示:如果您是初次部署 Seafile 服务,我们建议您使用自动安装脚本来快速部署一个 Seafile 服务。
到下载页面下载最新的服务器安装包.
假设你已经下载 seafile-server_*
到/opt/seafile
目录下。 我们建议这样的目录结构:
mkdir /opt/seafile
mv seafile-server_* /opt/seafile
cd /opt/seafile
#将 seafile-server_* 移动到 seafile 目录下后
tar -xzf seafile-server_*
mkdir installed
mv seafile-server_* installed
现在,你的目录看起来应该像这样:
#tree seafile -L 2
haiwen
├── installed
│ └── seafile-server_8.0.0_x86-64.tar.gz
└── seafile-server-8.0.0
├── reset-admin.sh
├── runtime
├── seafile
├── seafile.sh
├── seahub
├── seahub.sh
├── setup-seafile-mysql.sh
└── upgrade
这样设计目录的好处在于
和 seafile 相关的配置文件都可以放在 /opt/seafile/conf
目录下,便于集中管理.
后续升级时,你只需要解压最新的安装包到 /opt/seafile
目录下.
安装 Seafile 服务器之前,请确认已安装以下软件:
Seafile 8.0.x 版本
# on Debian 10/Ubuntu 18.04/Ubuntu 20.04
apt-get update
apt-get install python3 python3-setuptools python3-pip python3-ldap libmysqlclient-dev -y
pip3 install --timeout=3600 django==2.2.* future mysqlclient pymysql Pillow==9.4.0 pylibmc \
captcha jinja2 sqlalchemy==1.4.3 psd-tools django-pylibmc django-simple-captcha
# on CentOS 8
yum install python3 python3-setuptools python3-pip python3-ldap python3-devel mysql-devel gcc gcc-c++ -y
pip3 install --timeout=3600 django==2.2.* future mysqlclient pymysql Pillow==9.4.0 pylibmc \
captcha jinja2 sqlalchemy==1.4.3 psd-tools django-pylibmc django-simple-captcha
Seafile 9.0.x 版本
# on Debian 10/Ubuntu 18.04/Ubuntu 20.04
apt-get update
apt-get install python3 python3-setuptools python3-pip python3-ldap libmysqlclient-dev -y
pip3 install --timeout=3600 django==3.2.* future mysqlclient pymysql Pillow==9.4.0 pylibmc \
captcha jinja2 sqlalchemy==1.4.3 psd-tools django-pylibmc django-simple-captcha pycryptodome==3.12.0 lxml
注意:seafile 9.0.x 版本不支持在 Centos 系统 tar 包部署,支持 Docker 方式部署
Seafile 10.0.x 版本
# Ubuntu 22.04 (almost the same for Ubuntu 20.04 and Debian 11, Debian 10)
sudo apt-get update
sudo apt-get install -y python3 python3-setuptools python3-pip libmysqlclient-dev
sudo apt-get install -y memcached libmemcached-dev
sudo pip3 install --timeout=3600 django==3.2.* future==0.18.* mysqlclient==2.1.* \
pymysql pillow==9.3.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==1.4.53 \
psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml
Seafile 11.0.x 版本
# Ubuntu 22.04 (almost the same for Ubuntu 20.04 and Debian 11, Debian 10)
sudo apt-get update
sudo apt-get install -y python3 python3-setuptools python3-pip libmysqlclient-dev ldap-utils libldap2-dev
sudo apt-get install -y memcached libmemcached-dev
sudo pip3 install --timeout=3600 django==3.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 python-ldap==3.4.3 lxml
cd seafile-server-*
./setup-seafile-mysql.sh #运行安装脚本并回答预设问题
如果你的系统中没有安装上面的某个软件,那么 Seafile初始化脚本会提醒你安装相应的软件包.
该脚本会依次询问你一些问题,从而一步步引导你配置 Seafile 的各项参数:
在这里, 你会被要求选择一种创建 Seafile 数据库的方式:
-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------
[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases
如果选择1
, 你需要提供根密码. 脚本程序会创建数据库和用户。
如果选择2
, ccnet/seafile/seahub 数据库应该已经被你(或者其他人)提前创建。
如果安装正确完成,你会看到成功的信息。
现在你的目录结构看起来应该是这样:
#tree seafile -L 2
seafile
├── conf
│ └── ccnet.conf
│ └── seafile.conf
│ └── seahub_settings.py
│ └── gunicorn.conf
├── installed
│ └── seafile-server_8.0.0_x86-64.tar.gz
├── seafile-data
├── seafile-server-8.0.0 # active version
│ ├── reset-admin.sh
│ ├── runtime
│ ├── seafile
│ ├── seafile.sh
│ ├── seahub
│ ├── seahub.sh
│ ├── setup-seafile-mysql.sh
│ └── upgrade
├── seafile-server-latest # symbolic link to seafile-server-8.0.0
├── seahub-data
│ └── avatars
seafile-server-latest
文件夹为指向当前 Seafile 服务器文件夹的符号链接.
将来你升级到新版本后, 升级脚本会自动更新使其始终指向最新的 Seafile 服务器文件夹。
安装 Memcached 软件
# on Debian/Ubuntu 18.04/Ubuntu 20.04
apt-get install memcached libmemcached-dev -y
pip3 install --timeout=3600 pylibmc django-pylibmc
systemctl enable --now memcached
将以下配置添加到 seahub_settings.py
中:
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
},
}
请先确保你的系统中安装了 Nginx。在 Ubuntu 下,你可以通过以下命令来安装
# Debian/Ubuntu
$ sudo apt install nginx -y
然后我们添加 Nginx 的配置文件。Ubuntu 下请按照以下步骤添加
创建文件 /etc/nginx/site-available/seafile.conf
,并拷贝以下内容
删除/etc/nginx/site-enabled/default
: rm /etc/nginx/site-enabled/default
创建符号链接: ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/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 $http_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_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;
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;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
location /media {
root /opt/seafile/seafile-server-latest/seahub;
}
}
Nginx 默认设置 "client_max_body_size" 为 1M。如果上传文件大于这个值的话,会报错,相关 HTTP 状态码为 423 ("Request Entity Too Large"). 你可以将值设为 0
以禁用此功能.
如果要上传大于 4GB 的文件,默认情况下 Nginx 会把整个文件存在一个临时文件中,然后发给上游服务器 (seaf-server),这样容易出错。使用 1.8.0 以上版本同时在 Nginx 配置文件中设置以下内容能解决这个问题:
location /seafhttp {
... ...
proxy_request_buffering off;
}
下面还需要更新 SERVICE_URL 和 FILE_SERVER_ROOT 这两个配置项。否则无法通过 Web 正常的上传和下载文件。
您可以直接通过管理员 Web 界面来设置这两个值 (注意,如果同时在 Web 界面和配置文件中设置了这个值,以 Web 界面的配置为准。):
SERVICE_URL: http://www.myseafile.com
FILE_SERVER_ROOT: http://www.myseafile.com/seafhttp
或者修改seahub_settings.py
文件
(这是一个 python 文件,注意引号)
SERVICE_URL = 'http://www.myseafile.com'
FILE_SERVER_ROOT = 'http://www.myseafile.com/seafhttp'
在 seafile-server-latest 目录下,运行如下命令
./seafile.sh start # 启动 Seafile 服务
./seahub.sh start # 启动 Seahub 网站
你第一次启动 seahub 时,seahub.sh
脚本会提示你创建一个 seafile 管理员帐号。
恭喜! 现在你已经成功的安装了 Seafile 服务器。你可以通过 80 端口来访问 Seafile 服务了。
./seahub.sh stop # 停止 Seahub
./seafile.sh stop # 停止 Seafile 进程
./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
./seahub.sh restart # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub
大多数情况下 seafile.sh seahub.sh 脚本可以正常工作。如果遇到问题:
pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程
pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程
Last modified by 马宇航, 2024-08-29