系统相关
首页 > 系统相关> > centos7-12-手动和docker分别安装seafile

centos7-12-手动和docker分别安装seafile

作者:互联网

1 手动安装seafile

#cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
参考官网部署 Seafile 服务器(使用 MySQL/MariaDB)

1.1 下载解压配置依赖

(1)下载
官网下载页面
在这里插入图片描述安装包seafile-server_8.0.4_x86-64.tar.gz
安装包seafile-server_7.1.5_x86-64.tar.gz
(2)解压
#mkdir -p /opt/seafile/installed
#tar -xzvf seafile-server_7.1.5_x86-64.tar.gz -C /opt/seafile
#mv seafile-server_7.1.5_x86-64.tar.gz /opt/seafile/installed/
查看目录如下
在这里插入图片描述
和seafile 相关的配置文件都可以放在 /opt/seafile/conf 目录下,便于集中管理。后续升级时,你只需要解压最新的安装包到 /opt/seafile 目录下。

1.2 准备工作

1.2.1 安装相关依赖

centos7中安装依赖

#yum install python3 python3-setuptools python3-pip python3-ldap -y
#pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools \
    django-pylibmc django-simple-captcha

1.2.2 安装mysql数据库

mysql> SHOW VARIABLES LIKE ‘validate_password%’;
在这里插入图片描述变量定义:
(1)validate_password_check_user_name:验证密码检查用户名,非必须
(2)validate_password_dictionary_file:验证密码字典文件,无要求(3)validate_password_length:验证密码长度,8字符
(4)validate_password_mixed_case_count:验证密码混合大小写字符数,1
(5)validate_password_number_count:验证密码数字字符数,1
(6)validate_password_policy:验证密码策略,中等
(7)validate_password_special_char_count:验证密码特殊字符数,1
解决办法:
简单2步即可解决,修改验证密码相关数据以支持简单密码设置:
mysql> set global validate_password_length=6;
mysql> set global validate_password_policy=0;
在这里插入图片描述

1.2.3 安装nginx代理

1.3 安装seafile

#cd /opt/seafile/seafile-server-7.1.5/
#./setup-seafile-mysql.sh #运行安装脚本并回答预设问题
(1)主机名
在这里插入图片描述(2)IP地址
在这里插入图片描述(3)seafile文件服务器的端口
在这里插入图片描述(4)选择一种创建 Seafile 数据库的方式
在这里插入图片描述按相关提示流程操作。
在这里插入图片描述指定用户seafile的密码为bigdata。
得到如下配置信息
在这里插入图片描述

---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------
Generating ccnet configuration ...
done
Successly create configuration dir /opt/seafile/ccnet.
Generating seafile configuration ...
Done.
done
Generating seahub configuration ...
----------------------------------------
Now creating ccnet database tables ...
----------------------------------------
----------------------------------------
Now creating seafile database tables ...
----------------------------------------
----------------------------------------
Now creating seahub database tables ...
----------------------------------------
creating seafile-server-latest symbolic link ...  done
-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------

在这里插入图片描述
在这里插入图片描述
seafile-server-latest文件夹为指向当前 Seafile 服务器文件夹的符号链接。
将来升级到新版本后, 升级脚本会自动更新使其始终指向最新的 Seafile 服务器文件夹。

1.4 启动Seafile 服务器和 Seahub 网站

在 seafile-server-latest 目录下,运行如下命令
#cd /opt/seafile/seafile-server-latest/
#./seafile.sh start # 启动 Seafile 服务
#./seahub.sh start # 启动 Seahub 网站 (默认运行在127.0.0.1:8000端口上)

在这里插入图片描述管理员账号为邮箱19789xxx514@qq.com。
设置管理员密码bigdata。8000端口默认监听在127.0.0.1地址上,这意味着您无法直接通过8000端口访问Seafile服务。建议您配置nginx反向代理。
#curl http://127.0.0.1:8000

1.5 nginx下配置 Seahub

参考官网Nginx 下配置 Seahub
Seahub 是 Seafile 服务器的网站界面. SeafServer 用来处理浏览器端文件的上传与下载. 默认情况下, 它在 8082 端口上监听 HTTP 请求.
这里我们通过反向代理(Reverse Proxy)部署 SeafServer.
将server添加到/etc/nginx/nginx.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 $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 以禁用此功能。
#nginx -s reload
#systemctl restart nginx

1.6 使用

网址http://10.23.241.202。
在这里插入图片描述
上传的数据在这个目录下/opt/seafile/seafile-data/storage/fs。

1.7 关闭/重启 Seafile 和 Seahub

(1)关闭
./seahub.sh stop # 停止 Seahub
./seafile.sh stop # 停止 Seafile 进程
(2)重启
./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
./seahub.sh restart  # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub

2 docker安装seafile

参考官网用Docker部署Seafile
宿主机centos7操作系统
IP地址10.23.241.202

2.1 安装 docker-compose

因为 Seafile v7.x.x 容器是通过 docker-compose 命令运行的。
#yum install docker-compose -y

2.2 下载修改 docker-compose.yml

下载 docker-compose.yml 示例文件到您的服务器上,然后根据您的实际环境修改该文件。尤其是以下几项配置:
(1)MySQL root 用户的密码 (MYSQL_ROOT_PASSWORD and DB_ROOT_PASSWD)
(2)持久化存储 MySQL 数据的 volumes 目录 (volumes)
(3)持久化存储 Seafile 数据的 volumes 目录 (volumes)

提前下载镜像
docker pull mariadb:10.5
docker pull memcached:1.5.6
docker pull seafileltd/seafile-mc:latest

docker-compose.yml

version: '2.0'
services:
  db:
    image: mariadb:10.5
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=bigdata  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc:latest
    container_name: seafile
    ports:
      - "80:80"
#      - "443:443"  # If https is enabled, cancel the comment.
    volumes:
      - /opt/seafile-data:/shared   # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=bigdata  # Requested, the value shuold be root's password of MySQL service.
#      - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.
      - SEAFILE_ADMIN_PASSWORD=asecret     # Specifies Seafile admin password, default is 'asecret'.
      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether use letsencrypt to generate cert.
      - SEAFILE_SERVER_HOSTNAME=seafile.example.com # Specifies your host name.
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

(1)默认的管理员账号是 me@example.com 并且该账号的密码是 asecret,您可以在 docker-compose.yml 中配置不同的用户名和密码。
(2)mysql中的数据被持久化到目录/opt/seafile-mysql/db。
/opt/seafile-mysql/db:/var/lib/mysql
(3)seafile的数据被持久化到目录/opt/seafile-data。
/opt/seafile-data:/shared

2.3 启动 Seafile 服务

在 docker-compose.yml 文件所在的目下执行以下命令启动 Seafile 服务。
#netstat -lnp | grep 80启动之前查看80端口是否占用
#docker-compose up -d
需要等待几分钟,等容器首次启动时的初始化操作完成后,就可以在浏览器上使用。
(1)访问http://seafile.example.com 来打开 Seafile 主页
http://10.23.241.202
在这里插入图片描述本地主机的0.0.0.0:80端口被映射到容器的80端口。
(2)查看/opt/seafile-data/nginx/conf下的文件seafile.nginx.conf
在这里插入图片描述(3)进入容器中操作
#docker exec -it seafile /bin/bash

root@f86e7ebd0c4a:/# curl http://127.0.0.1:8000/
root@f86e7ebd0c4a:/# curl http://127.0.0.1:8000/library
容器中的地址http://127.0.0.1:8000/被代理到容器的80端口。
然后容器的80端口被映射到主机的80端口。

2.4 升级 Seafile 服务

如果要升级 Seafile 服务到最新版本:
docker pull seafileltd/seafile-mc:latest
docker-compose down
docker-compose up -d

标签:opt,12,seafile,server,centos7,proxy,docker,Seafile
来源: https://blog.csdn.net/qq_20466211/article/details/115246257