Ubuntu 20.04部署Seafile 8.0.3

一、Seafile 概述

Seafile是一个开源、专业、可靠的云存储平台;解决文件集中存储、共享和跨平台访问等问题,由北京海文互知网络有限公司开发,发布于2012年10月;除了一般网盘所提供的云存储以及共享功能外,Seafile还提供消息通信、群组讨论等辅助功能,帮助更好的围绕文件展开协同工作。

1.1 主要功能

文件同步与共享

你可以创建不同的资料库来分类组织文件。可以在私人间或群组中共享这些资料库。每个资料库都可以选择性的在多台设备上同步。

在线协作

你可以在线编辑文件,对文件进行评论,在私人间或群组间展开讨论。事件通知、版本管理使得文件协作异常的方便和安全。 [1]

移动办公

移动客户端使得你可以在移动设备上查看最新改动、访问文件资料、进行群组讨论等等,方便的完成移动办公。

1.2 适用平台

Seafile服务器支持主流的Linux发行版,Windows服务器以及Raspberry Pi。

Seafile桌面客户端支持Windows, Linux以及MacOS

Seafile移动客户端支持Android和IOS。 [1]

二、环境准备

2.1 安装依赖软件

pip3 install Pillow captcha jinja2 sqlalchemy psd-tools django-simple-captcha future
apt update
apt install memcached
apt install libmemcached-dev
apt install libmysqlclient-dev
pip3 install pylibmc django-pylibmc mysqlclient

2.2 安装MySQL

apt install mariadb-server
./mysql_secure_installation  ##执行安装脚本,一路默认即可。

三、安装Seafile8.0.3

su
mkdir /opt/seafile
cd /opt/seafile
wget https://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_8.0.3_x86-64.tar.gz
tar -xzf seafile-server_8.0.3_x86-64.tar.gz
mkdir installed
mv seafile-server_8.0.3_x86-64.tar.gz installed/
cd seafile-server-8.0.3/
./setup-seafile-mysql.sh

提示安装完成后

四、配置Nginx

apt install nginx
vi /etc/nginx/sites-avaliable/seafile.conf

内容如下:

server {
    listen 80;
    server_name localhost;
    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;
    }

    location /media {
        root /opt/seafile/seafile-server-latest/seahub;
    }

}

后续在/etc/nginx/sites-enabled/目录下建立软链接至该文件 

cd /etc/nginx/sites-enabled
rm default
ln -s ../sites-available/seafile.conf seafile.conf
systemctl restart nginx  ##修改完成后重启nginx服务

五、设置seafile开机启动

#!/bin/bash

path_base="/opt/seafile/seafile-server-latest"
path_seafile="${path_base}/seafile.sh"
path_seahub="${path_base}/seahub.sh"

echo "Seafile Starting..."

# TODO: Determine if the script exists
echo "$(date "+%Y-%m-%d %H:%M:%S"): Determine if the script exists."
if ! [ -f "${path_seafile}" ]
then
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Missing script main file: ${path_seafile}."
  exit 1
fi
if ! [ -f "${path_seahub}" ]
then
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Missing script main file: ${path_seahub}."
  exit 1
fi
echo "$(date "+%Y-%m-%d %H:%M:%S"): The script exists."
#cd "${path_base}"

# TODO: Stop all service.
cmd_seahub=`${path_seahub} stop`
if [[ $cmd_seahub =~ "Seahub is not running" ]]; then
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seahub server not running, Start it."
else
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seahub server is running, stop and restart it."
fi
cmd_seafile=`${path_seafile} stop`
if [[ $cmd_seafile =~ "seafile server not running yet" ]]; then
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seafile server not running, Start it."
else
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seafile server is running, stop and restart it."
fi

# TODO: Start seafile.
cmd_seafile=`${path_seafile} start`
echo $cmd_seafile
if [[ $cmd_seafile =~ "Seafile server started" ]]; then
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seafile server started."
else
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seafile server Startup failed, Exit."
  exit 1
fi

# TODO: Start seahub.
cmd_seahub=`${path_seahub} start`
echo $cmd_seahub
if [[ $cmd_seahub =~ "Seahub is started" ]]; then
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seahub server started."
else
  echo "$(date "+%Y-%m-%d %H:%M:%S"): Seahub server Startup failed, Exit."
  exit 1
fi
echo "$(date "+%Y-%m-%d %H:%M:%S"): All services started successfully."

# TODO: Cycling detection service.
echo "$(date "+%Y-%m-%d %H:%M:%S"): Cycling detection service."
while true
do
  sleep 30s
  cmd_seafile=`${path_seafile} start`
  if ! [[ $cmd_seafile =~ "Seafile controller is already running" ]]; then
    echo "$(date "+%Y-%m-%d %H:%M:%S"): Seafile server err, Stop all services and exit."
    ${path_seahub} stop
    ${path_seafile} stop
    exit 1
  fi
  cmd_seahub=`${path_seahub} start`
  if ! [[ $cmd_seahub =~ "Seahub is already running" ]]; then
    echo "$(date "+%Y-%m-%d %H:%M:%S"): Seahub server err, Stop all services and exit."
    ${path_seahub} stop
    ${path_seafile} stop
    exit 1
  fi
done

创建stop-seafile.sh

#!/bin/bash

path_base="/opt/seafile/seafile-server-latest"
path_seafile="${path_base}/seafile.sh"
path_seahub="${path_base}/seahub.sh"

${path_seahub} stop
${path_seafile} stop

创建seafile.service

[Unit]
Description=Seafile Service
After=network.target

[Service]
Restart=always
RestartSec=10
User=lfpara
WorkingDirectory=/opt/seafile/seafile-server-7.0.5/systemd/
ExecStart=/opt/seafile/seafile-server-7.0.5/systemd/start-seafile.sh
ExecStop=/bin/kill $MAINPID
ExecStopPost=/opt/seafile/seafile-server-7.0.5/systemd/stop-seafile.sh

[Install]
WantedBy=multi-user.target
cp seafile.service /usr/lib/systemd/system  ##将seafile.service文件复制至系统文件
systemctl enable seafile.service ##设置seafile开机运行
systemctl start seafile.service ##启动seafile服务
systemctl stop seafile.service ##停止seafile服务
systemctl status seafile.service ##查看seafile运行状态

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值