seafile自从6.3.x版本以后就开始有一些安装上的坑了.以下步骤我会在官方建议里插入一些坑的解决办法.我个人使用的是树莓派3B+,系统是官方32位系统的:2020-05-27-raspios-buster-lite-armhf.img,建议换下源,这是清华源的地址和用法.
开始是安装前的环境准备工作,切换至root
sudo su
apt-get install python3 python3-setuptools python3-pip python3-ldap fail2ban nginx mariadb-server -y
因为7.1.x版本开始,seafile已经全面升级为python3版本,所以还需要安装一些python3的软件包,坑就从这开始了,安装的时候国内的后面加上豆瓣的pip源,速度能快些.
这里会出现3个问题,第一个,Pillow可能会装不上,因为缺以下依赖,装好再装Pillow.
apt-get install python3-dev python3-setuptools libtiff5-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev tcl8.6-dev tk8.6-dev python3-tk libselinux1 sqlite3 -y
pip3 install --timeout=3600 Pillow -i https://pypi.douban.com/simple/
第二个,pylibmc可能会装不上,继续装依赖…
apt-get install libmemcached-dev -y
pip3 install --timeout=3600 pylibmc -i https://pypi.douban.com/simple/
第三个,psd-tools,这个是PS文件预览用的软件依赖包,如果装不上也不影响使用.然后把剩下的python3软件包装一下
pip3 install --timeout=3600 captcha jinja2 sqlalchemy django-pylibmc django-simple-captcha psd-tools -i https://pypi.douban.com/simple/
接下来先设置一下mysql的root密码,后面安装seafile需要使用
sudo mysql
use mysql;
update mysql.user set password=password('password') where user='root';
update mysql.user set plugin='' where user='root';
flush privileges;
quit
sudo systemctl restart mariadb
创建一个新用户seafile(设置完密码,一路回车),并且切换到seafile用户,这是一个小坑,应该是7.0或者6.3版本开始有的.
sudo adduser seafile
sudo su seafile
cd
因为这个用户只用作seafile使用,我们就在seafile用户的/home/seafile根目录下安装好了.
wget https://github.com/haiwen/seafile-rpi/releases/download/v7.1.4/seafile-server_7.1.4_pi-buster-stable.tar.gz
tar xfz seafile-server_7.1.4_pi-buster-stable.tar.gz
mkdir installed
mv seafile-server_7.1.4_pi-buster-stable.tar.gz installed/
cd seafile-server-7.1.4
现在去执行./setup-seafile-mysql.sh这里可能会提示你"ccnet-init: No such file or directory",这又是缺个依赖,切回root装下依赖,再切回来,你也可以在前面把"libselinux1"这个依赖给一起先装了.
su root
apt-get update
apt install libselinux1
su seafile
然后还是在seafile-server-7.1.4目录下,执行./setup-seafile-mysql.sh,回答相关创建问题.
cd seafile-server-7.1.4
./setup-seafile-mysql.sh
创建完以后,要踏最后一个坑,这是7.1的坑,官方的介绍是,seafile用的python是3.6的,但是是支持3.7的,如果你用的系统是3.7的话,得给3.7做个软连接冒充3.6,真拗口.
cd
cd seafile-server-latest/seafile/lib
ln -s python3.7 python3.6
接下来就可以启动Seafile和Seahub,创建管理员账户密码了.
cd
cd seafile-server-latest
./seafile.sh start
./seahub.sh start
然后停止seafile,seahub,配置服务自启动以及nginx.
./seahub.sh stop
./seafile.sh stop
exit
然后黏贴下面内容,CTRL+O保存,CTRL+X退出
seafile.service创建
sudo nano /etc/systemd/system/seafile.service
[Unit]
Description=Seafile
After=network.target mysql.service
[Service]
Type=forking
ExecStart=/home/seafile/seafile-server-latest/seafile.sh start
ExecStop=/home/seafile/seafile-server-latest/seafile.sh stop
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.target
seahub.service创建
sudo nano /etc/systemd/system/seahub.service
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Environment="LC_ALL=C"
Type=forking
ExecStart=/home/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.target
sudo systemctl enable seafile seahub
配置nginx
sudo nano /etc/nginx/sites-available/seafile.conf
server {
listen 80;
server_name _;
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_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;
access_log /var/log/nginx/seafhttp.access.log;
error_log /var/log/nginx/seafhttp.error.log;
}
location /media {
root /home/seafile/seafile-server-latest/seahub;
}
}
删除标准配置并创建新的nginx快捷方式
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/sites-available/default
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
重新加载nginx,并且修改seafile配置
sudo nginx -t #Ergebnis sollte "Syntax ok" lauten
sudo nginx -s reload
sudo su seafile
cd
cd conf
nano ccnet.conf
SERVICE_URL = http://hostname #hostname改成本机IP,修改内容
nano seahub_settings.py
FILE_SERVER_ROOT = 'http://hostname/seafhttp' #hostname改成本机IP,新增内容
然后重启,试一下seafile及seahub服务是否启动~
sudo reboot
接下来配置反代,需要自己有一个公网IP的服务器,树莓派和服务器都下载一下.
wget http://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_arm.tar.gz
tar xfz frp_0.33.0_linux_arm.tar.gz
cd frp_0.33.0_linux_arm
服务器上修改frps.ini文件,并且运行.
nano frps.ini
--------------------
[common]
bind_port = 7000 #根据实际使用端口情况更新IP端口
--------------------
nohup ./frps -c ./frps.ini
树莓派上修改frpc.ini文件,并且运行.
nano frpc.ini
--------------------
[common]
server_addr = x.x.x.x #这里填服务器的公网IP
server_port = 7000 #跟服务器的端口对应相同
#顺手加下ssh的端口好了
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
#seafile需要开放的端口
[range:seafile]
type = tcp
local_ip = 127.0.0.1
local_port = 80 #本地seafile端口为80
remote_port = 8000 #服务器就对应用8000好了.上下要对应
--------------------
nohup ./frpc -c ./frpc.ini
关于frp后台自启可以参照这个博文:frp自动启动的几个方法
如果你想通过外网访问的话,别忘了最后2个坑,一大一小.
第一个,你需要在web端系统管理-设置里,把"SERVICE_URL"以及"FILE_SERVER_ROOT"改成如下,码掉的地方填服务器公网IP,因为前面我们用nginx把8000端口映射到80端口,8082端口映射到子目录seafhttp下了,然后又用frp把80端口映射到服务器的8000端口上,所以这俩地址就是这样填的.
第二个小坑,头像不显示,把conf目录下的gunicorn.conf.py文件修改一下127.0.0.1:8000改成0.0.0.0:8000.
# default localhost:8000
bind = "127.0.0.1:8000"
重启一下,就行了!