如何在 Ubuntu 18.04 LTS 上使用 Nginx 安装 Seafile如何在 Ubuntu 18.04 LTS 上使用 Nginx 安装 Seafile如何在 Ubuntu 18.04 LTS 上使用 Nginx 安装 Seafile如何在 Ubuntu 18.04 LTS 上使用 Nginx 安装 Seafile
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 18.04 LTS 上使用 Nginx 安装 Seafile

本教程适用于这些操作系统版本

  • Ubuntu 15.04(Vivid Vervet)

在此页

  1. 先决条件
  2. 我们会做什么?
  3. 第 1 步 - 安装 Seafile Python 依赖项
  4. 第 2 步 - 安装和配置 MySQL
  5. 第 3 步 - 下载适用于 Linux 系统的 Seafile 服务器
  6. 第 4 步 - 使用 MySQL 安装 Seafile 服务器
  7. 第 5 步 - 使用 Letsencrypt 安装和配置 Nginx
  8. 第 6 步 - 将 Nginx 配置为 Seafile 服务器的反向代理
  9. 第 7 步 - 配置 Seafile 服务器
  10. 第 8 步 - 将 Seafile 服务器作为服务运行
  11. 第 8 步 - 配置 UFW 防火墙
  12. 第 9 步 - 测试
  13. 参考资料

Seafile 是一个开源文件托管和云存储系统,具有从多个平台(跨平台系统)同步、内置文件加密的隐私保护、支持双因素身份验证(TFA)、版本控制等高级功能,文件锁定、在线编辑等等。 Seafile 是用 C 和 Python 编程语言编写的,提供与 Dropbox、mega.co.nz 等类似的功能。

在本教程中,我将逐步向您展示如何使用 Nginx Web 服务器和 MySQL 数据库安装和配置 Seafile 服务器。我们将在启用 HTTPS SSL Letsencrypt 的 Nginx Web 服务器下安装 seafile 服务器,在 Ubuntu 18.04 系统上使用最新的 MySQL 5.8。

先决条件

  • Ubuntu 18.04
  • 根权限

我们将要做什么?

  1. 安装 Seafile Python 依赖项
  2. 安装和配置 MySQL
  3. 下载Linux系统的Seafile服务器
  4. 安装 Seafile 服务器
  5. 安装 Nginx 和 Letsencrypt
  6. 将 Nginx 配置为 Seafile 服务器的反向代理
  7. 配置 Seafile 服务器
  8. 将 Seafile 服务器作为服务运行
  9. 配置 UFW 防火墙
  10. 测试

第 1 步 - 安装 Seafile Python 依赖项

在系统上安装 Seafile 服务器之前,我们必须采取的第一步是安装其依赖项。 Seafile 是一个基于 python 的应用程序,它需要 python 2.7 才能在服务器上运行。

在安装任何包之前,我们需要更新 Ubuntu 存储库。

sudo apt update

现在使用下面的 apt 命令安装 python 2.7 以及 seafile 服务器安装所需的所有依赖项。

sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y

等待安装所有依赖项。

第 2 步 - 安装和配置 MySQL

Seafile 提供对 SQLite 和 MySQL 数据库服务器的支持。对于本指南,我们将使用 MySQL 数据库服务器进行安装。我们将使用最新的 MySQL 5.8 版本部署 seafile 服务器。

使用下面的 apt 命令安装 MySQL 服务器。

sudo apt install mysql-server mysql-client -y

安装完成后,启动MySQL服务并设置为每次系统启动时启动。

systemctl start mysql
systemctl enable mysql

MySQL服务器安装在Ubuntu系统上。

现在我们需要使用 mysql_secure_installation 命令配置 MySQL root 密码。

mysql_secure_installation

现在您将被询问有关 MySQL 密码策略的信息,0 表示低,1 表示中,2 表示强。为中等密码策略键入数字 1,按回车键,然后键入您的安全密码。

对于其他人,只需键入 Y,如下所示。

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

MySQL root 密码设置已完成。

接下来,我们将为 Seafile 服务器创建一个新的数据库。我们将为每个 seafile 组件创建 3 个数据库并创建一个新的数据库用户。我们将创建一个名为 seafile 的新用户,它将拥有所有 3 个数据库 ccnet-db、seafile-db 和 seahub-db 的所有权限。

使用 MySQL 客户端命令登录到 MySQL shell。

mysql -u root -p

现在创建新数据库ccnet-db、seafile-db、seahub-db,并创建新用户seafile。然后将所有 3 个数据库权限授予 seafile 用户。

在下面运行 MySQL 查询。

create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';

create user 'seafile'@'localhost' identified by '';

GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;

MySQL服务器已经安装好,root密码已经设置好,安装seafile的数据库也已经创建好了。

第 3 步 - 下载适用于 Linux 系统的 Seafile 服务器

在本教程中,seafile 服务器将作为 systemd 系统上的服务运行,并且将在非 root 用户下运行。

创建一个名为 mohammad 的新用户。

useradd -m -s /bin/bash mohammad

现在登录 mohammad 用户并使用 wget 下载 seafile 服务器最新版本。

su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz

提取 seafile-server.tar.gz 文件并将主目录重命名为 seafile-server。

tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/

Seafile 服务器源代码已下载到 /home/mohammad/seafile-server 目录。

第 4 步 - 使用 MySQL 安装 Seafile 服务器

在这一步中,我们将使用 Seafile 提供的 MySQL 安装脚本安装 Seafile 服务器。

以 mohammad 用户登录并进入 seafile-server 目录。

su - mohammad
cd seafile-server/

现在运行 setup-seafile-mysql.sh 脚本。

./setup-seafile-mysql.sh

安装脚本将执行 python 模块检查。确保安装了所有依赖项,然后按 Enter。

现在您将进入 Seafile 配置。

  • 服务器名称:输入您的 Seafile 服务器名称,例如 hakase-cloud。
  • 服务器域名:键入您的 Seafile 服务器 cloud.hakase-labs.io 的域名。
  • seafile 数据目录:保留配置默认值并按回车键。
  • seafile 文件服务器端口:保留默认端口 8082。

现在进行数据库配置。系统将要求您提供 2 个选项:让脚本为您创建数据库,或使用现有数据库。

选择选项 2 以使用现有数据库设置。

  • 数据库主机:默认本地主机
  • 数据库端口:默认在mysql普通端口3306
  • 数据库用户是 seafile,密码为 [email
  • ccnet数据库:ccnet-db
  • seafile 数据库:seafile-db
  • seahub 数据库:seahub-db

现在再次按回车键确认我们的 Seafile 服务器配置。

安装完成后,您将得到如下所示的结果。

Seafile 服务器的安装和配置已经成功完成。 seafile 文件服务器将在 8082 端口下运行,seahub 服务将在 8000 端口下运行。

接下来,我们将测试使用启动脚本运行seafile服务器和seahub服务器。

作为 mohammad 用户,进入 ~/seafile-server-latest 目录。

su - mohammad
cd ~/seafile-server-latest/

现在通过运行以下命令启动 seafile 服务器。

./seafile.sh start

然后运行seahub服务器。

./seahub.sh start

第一次运行 seahub.sh 启动脚本时,系统会要求您为 Seafile 服务器创建管理员用户和密码。

输入您的管理员电子邮件和密码,然后按 Enter。

管理员用户和密码已经创建 - 现在使用 netstat 命令检查 seafile 和 seahub 服务端口 8082 和 8080。

netstat -plntu

你会看到 seafile 服务器和 seahub 服务器在 Ubuntu 18.04 系统上启动并运行。

现在停止 seafile 和 seahub 服务器。

./seafile.sh stop
./seahub.sh stop

第 5 步 - 使用 Letsencrypt 安装和配置 Nginx

对于本指南,seafile 服务器将在启用 HTTPS 的 Nginx Web 服务器下运行。在这一步中,我们将安装 Nginx Web 服务器和 Letsencrypt 工具,然后为 Seafile 服务器域名生成 SSL letsencrypt 和 DHPARAM 密钥。

使用下面的 apt 命令安装 Nginx Web 服务器。

sudo apt install nginx -y

安装完成后,启动Nginx服务,并设置每次开机启动。

systemctl start nginx
systemctl enable nginx

现在安装用于生成 SSL letsencrypt 证书的 letsencrypt 工具。

sudo apt install letsencrypt -y

Nginx Web 服务器和 letsencrypt 工具已安装。

接下来进入 /etc/nginx 目录,为 letsencrypt 创建一个新的配置文件 certbot.conf。

cd /etc/nginx/
vim snippets/certbot.conf

将以下配置粘贴到那里。

location /.well-known {
    alias /var/www/html/.well-known;
}

保存并退出。

编辑默认虚拟主机文件。

vim sites-available/default

将下面的包含行添加到服务器 {...} 括号中。

include snippets/certbot.conf;

保存并退出。

测试 nginx 配置并重新启动 Web 服务器。

nginx -t
systemctl restart nginx

并准备为 seafile 服务器域名生成新的 letsencrypt SSL 证书。

使用 certbot 命令生成 SSL 证书文件,如下所示。

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email  -w /var/www/html -d cloud.hakase-labs.io

笔记:

  • 我们将生成新的 SSL 证书并将密钥大小指定为 4096。

现在您将获得位于 /etc/letsencrypt/live 目录中的所有 SSL 证书文件。

为了提高安全性,我们将使用 OpenSSL 命令生成大小为 4096 的 Diffie-Hellman 密钥。

openssl dhparam -out /etc/nginx/dhparam.pem 4096

已生成所有需要的证书。

第 6 步 - 将 Nginx 配置为 Seafile 服务器的反向代理

转到 /etc/nginx 配置目录并使用 vim 创建新的虚拟主机文件 seafile。

cd /etc/nginx/
vim sites-available/seafile

将以下配置粘贴到那里。

 server {
        listen       80;
        server_name  cloud.hakase-labs.io;
        rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
    }
    server {
        listen 443 ssl http2;
        server_name cloud.hakase-labs.io;
        
        ssl on;
        ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/cloud.hakase-labs.io/privkey.pem;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:5m;

        ssl_dhparam /etc/nginx/dhparam.pem;

        #SSL Security
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_ecdh_curve secp384r1;
        ssl_prefer_server_ciphers on;
        server_tokens off;
        ssl_session_tickets off;

        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 /home/mohammad/seafile-server-latest/seahub;
        }
    }

保存并退出。

启用 seafile 虚拟主机并测试配置。

ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t

确保没有错误并重启nginx服务。

systemctl restart nginx

Nginx 配置为 seafile 服务器的反向代理已经完成。

第 7 步 - 配置 Seafile 服务器

要在 Nginx web 服务器域名下运行 seafile 服务器,我们需要编辑 ccnet 服务、seafile 服务器和 seahub 服务器的默认 seafile 配置。

以 mohammad 用户身份登录并转到 conf/ 目录。

su - mohammad
cd conf/

编辑ccnet服务配置文件ccnet.conf。

vim ccnet.conf

在 SERVICE_URL 行,将值更改为使用 HTTPS 的域名,如下所示。

SERVICE_URL = https://cloud.hakase-labs.io

保存并退出。

现在编辑 seafile.conf 文件来配置 seafile 服务器。

vim seafile.conf

将值为 127.0.0.1 localhost 的主机行添加如下。

[fileserver]
host = 127.0.0.1
port = 8082

保存并退出。

最后,我们将编辑 seahub_settings.py 文件。

vim seahub_settings.py

在 FILE_SERVER_ROOT 行,将值更改为使用 HTTPS 的域名。

FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'

保存并退出。

第 8 步 - 将 Seafile 服务器作为服务运行

在本教程中,我们将在 Ubuntu 18.04 系统上将 seafile 服务器作为服务运行。我们将为 seafile 和 seahub 创建新的服务脚本。

进入 /etc/systemd/system 目录并创建新的服务文件 seafile.service。

cd /etc/systemd/system/
vim seafile.service

将以下 seafile 服务脚本粘贴到那里。

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start
ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

保存并退出。

现在创建seahub 服务文件seahub.service。

vim seahub.service

将以下 seahub 服务脚本粘贴到那里。

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start
ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

保存并退出。

笔记:

  • 更改seafile.sh 和seahub.sh 脚本的路径。

现在重新加载systemd系统。

systemctl daemon-reload

并启动seafile和seahub服务。

systemctl start seafile
systemctl start seahub

使这些服务每次在系统启动时启动。

systemctl enable seafile
systemctl enable seahub

seafile 和 seahub 服务已启动并正在运行 - 使用下面的命令检查它。

systemctl status seafile
systemctl status seahub

netstat -plntu

第 8 步 - 配置 UFW 防火墙

建议始终打开任何系统上的防火墙。对于ubuntu系统,我们将开启UFW防火墙,并在其上添加SSH、HTTP、HTTPS端口。

添加 ssh 端口并启用 UFW 防火墙。

ufw allow ssh
ufw enable

输入 y 打开防火墙。

现在添加 HTTP 和 HTTPS 服务。

ufw allow http
ufw allow https

检查防火墙上的列表规则。

ufw status numbered

您将在列表中获得三个服务 SSH、HTTP 和 HTTPS。

第 9 步 - 测试

打开您的网络浏览器并输入 seafile 服务器 URL 安装。我的是:

您将被重定向到安全的 HTTPS 连接登录页面。

输入管理员电子邮件 [email 和密码 mypassword,然后单击“登录”按钮。

现在您将获得如下所示的 Seafile 仪表板。

附加 - 在 seafile 仪表板上上传了图像和视图。

在 Ubuntu 18.04 上使用 Nginx Web 服务器和 Letsencrypt 的 Seafile 服务器安装和配置已成功完成。

参考

  • https://manual.seafile.com/

©2015-2025 艾丽卡 support@alaica.com