Ubuntu 18.04 LTS 安装部署 Seafile
背景
新入职的公司内部同步一些文件使用的 Seafile
,没部署远程,只使用的内网,由于这个 seafile
是一个前同事搭建的(之前的 iOSer,我来替代他了,阴差阳错。。。),可能那时他也不是太熟吧,把文件存放目录放在了安装位置的挂载分区,导致长时间使用下来,该分区磁盘空间满了,无法继续运行,于是我简单 google
了一番,开始转移目录,找到了 seafile-data
目录之后,发现查看都没权限,包括 cp -R
、mv
都无法运行,直接给了755
权限,mv seafile-data
目录至新目录,更改 seafile.ini
文件,指向新目录,重启 seafile
,发现 seafile
已经无法启动……下意识重启一下电脑,还是不行,这时看下禅道,测试又提了一堆 BUG
,就先放下开始修 BUG 了。第二天早上过来继续,发现系统都进不去了,登录界面无法输入密码,没办法只好命令行登入系统,再次 google
了解到 seafile
存放文件的形式类似于 svn
或 git
,也是那种打散存放并内部记录 state
和带有 commit log
的,看到了官方有修复工具,尝试无果,放弃了,系统也崩了(多年linux 经验解决不了,尝试了几个小时,google
了解到貌似是 Ubuntu 16.04 LTS
的 bug
所致,有个旧内核依赖怎么都干不掉,导致所有的 dpkg -i
都运行不了),这台机器上安装了 jenkins
和 seafile
,问过了别无其他,心想 jenkins
我也熟练部署了,只能硬着头皮去跟组长说要重装系统,于是有了这篇文章。
重装系统
下载 Ububtu 系统,选了最新的长期支持版本 18.04,UI 大改了,看了挺喜欢,安排下载。这步没啥说,随便拿了个5年前的捣鼓用的 4G U盘,在 mac 制作了一个 Ubuntu 的安装盘。从 U盘启动,安装系统。
安装 Seafile 服务器端
更新下系统
apt-get update
apt-get upgrade
安装 python 2.7 及其它依赖
由于 seafile
使用的 py 2.7,但 Ubuntu
默认集成的是 3+ 版本,所以要安装。
apt-get install python
apt-get install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache
pip install pillow moviepy
安装 Mariadb
sudo apt install mariadb-server
开始安装 seafile
下载 Seafile 服务器端程序
去 Seafile官方下载地址 复制 服务器端 -> Linux 服务器端 -> 64bit 链接,比如现在最新的是 http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.2.5_x86-64.tar.gz
,目录的话建议安装到 /opt 下面,但是数据目录使用磁盘空间比较大的地方,比如我这边是是安装位置和数据目录都放在了 /home/data/seafile
下,过程如下:
cd /home
mkdir -p data/seafile && cd data/seafile
wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.2.5_x86-64.tar.gz
tar -xzf seafile-server_*
mkdir installed && mv seafile-server_6.2.5_x86-64.tar.gz installed
安装 seafile 服务端
因为依赖环境和数据库都已经安装好了,这边我是使用的 Mariadb
,所以用的是 seafile
写好的 setup-seafile-mysql.sh
脚本进行 setup,中间会提示你输入 seafile-data
数据存放目录,记得输入你指定的目录,比如我这里应该填/home/data/seafile/seafile-data
,当然如果你已经在/home/data/seafile/seafile-server-6.2.5
则直接 Enter 默认即可,它会自动去上层目录创建seafile-data
目录。
cd seafile-server-6.2.5
sudo ./setup-seafile-mysql.sh
一路按引导完成,根据提示,输入服务器名、IP、数据目录(默认为../seafile-data
)、seahub
端口、seafile-server
监听端口(默认8082,不可更改),ifconfig
查看自己内网 ip,查完成之后确认设置,目录会变成如下:
vanjay@VanJay:/home/data$ sudo tree -L 3
.
└── seafile
├── ccnet
│ ├── ccnet.sock
│ ├── misc
│ ├── mykey.peer
│ └── seafile.ini
├── conf
│ ├── ccnet.conf
│ ├── seafdav.conf
│ ├── seafile.conf
│ ├── seahub_settings.py
│ └── seahub_settings.pyc
├── installed
│ └── seafile-server_6.2.5_x86-64.tar.gz
├── logs
│ ├── ccnet.log
│ ├── controller.log
│ ├── seafile.log
│ ├── seahub.log
│ └── seahub_django_request.log
├── pids
│ ├── ccnet.pid
│ └── seaf-server.pid
├── seafile-data
│ ├── commits
│ ├── fs
│ ├── httptemp
│ ├── library-template
│ ├── storage
│ └── tmpfiles
├── seafile-server-6.2.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
│ └── upgrade
├── seafile-server-latest -> seafile-server-6.2.5
└── seahub-data
└── avatars
22 directories, 26 files
启动/停止 Seafile
启动Seafile-server
和Seahub
,第一次启动会提示建立管理员账号。
./seafile.sh start
./seahub.sh start <端口号>
此时通过浏览器本地访问 localhost:端口号
,应该可以出现登录页面。如果出现网页乱码,可以删除/tmp/seahub_cache
再重启seahub,即可恢复正常。
常用命令:
关闭
./seahub.sh stop # 停止 Seahub
./seafile.sh stop # 停止 Seafile 进程
重启
./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
./seahub.sh restart # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub
使用 pgrep
命令检查 seafile/seahub
进程是否还在运行中
pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程
使用 pkill
命令杀掉相关进程
pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程
配置防火墙
本地可以访问了,但从外部访问就不行了,需要配置下防火墙,当然你也直接关闭防火墙。
开关防火墙
ufw disable # 关闭
ufw enable # 开启
也可添加端口,端口8082,必须添加,这是 seafile-file
端口,不可更改。8000为 seahub 默认监听端口,如果自定义 seahub 监听端口,这里记得添加。
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --permanent --add-port=8082/tcp
firewall-cmd --permanent --add-service http
firewall-cmd --reload
firewall-cmd --list-all
安装 Ubuntu Seafile 客户端
开始使用吧。
sudo add-apt-repository ppa:seafile/seafile-client
sudo apt-get update
sudo apt-get install seafile-gui
添加执行用户和配置目录权限
useradd vanjay -s /sbin/nologin -d /home/data/seafile
chown -R vanjay:vanjay /home/data/seafile/
chown -R vanjay:vanjay /tmp/seahub_cache/
配置开机自启动 Seafile
对于运行 systemd 的系统(例如 Debian 8 以及更新的版本,Ubuntu 15.04以及更新的版本),创建 systemd 服务管理文件(注意自行更改 User 、Group 和Seafile 路径)
- 创建
seafile service
sudo vim /etc/systemd/system/seafile.service
注意!注意!注意! 这里有个大坑,花了我一个晚上去解决!
由于官方提供了开机启动 service
脚本,一般都是直接拿来用,改改路径用户名就好,但是!我在 Ubuntu 18.04 开机启动 seafile 上花了整整一个晚上!,systemctl status seafile
查看服务状态,由于 seafile 启动依赖数据库,所以需要先等待数据库服务启动完毕再启动,我这安装的是 mariadb
,所以要在 After 后面加上 mariadb.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=oneshot
ExecStart=/home/data/seafile/seafile-server-latest/seafile.sh start
ExecStop=/home/data/seafile/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=vanjay
Group=vanjay
[Install]
WantedBy=multi-user.target
- 创建
seahub service
sudo vim /etc/systemd/system/seahub.service
输入如下内容,用户、用户组、路径改为自己的 seafile 路径。
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/home/data/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/data/seafile/seafile-server-latest/seahub.sh stop
User=vanjay
Group=vanjay
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
设置服务开机自启动
sudo systemctl daemon-reload
sudo systemctl enable seafile
sudo systemctl enable seahub
配置邮件通知服务
编辑你 seafile 目录下的 conf/seahub_settings.py
文件,比如我这里应该 vim /home/data/seafile/conf/seahub_settings.py
,加入如下内容,我只尝试了阿里企业邮箱和 qq 邮箱,仅供参考,EMAIL_HOST
填写发送邮件服务器,EMAIL_PORT
填写发送邮件服务器端口,改完重启 seafile
生效。
QQ 邮箱,EMAIL_HOST_PASSWORD
是授权码,去 qq 邮箱设置获取。
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com'
EMAIL_HOST_USER = 'your_qq_number@qq.com'
EMAIL_HOST_PASSWORD = 'your_auth_code'
EMAIL_PORT = '465'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
阿里企业邮箱,EMAIL_HOST_PASSWORD
是邮箱密码。
EMAIL_USE_SSL = False
EMAIL_HOST = 'smtp.mxhichina.com'
EMAIL_HOST_USER = 'username@xxx.com'
EMAIL_HOST_PASSWORD = 'your_password'
EMAIL_PORT = '25'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
致谢
参考链接: