首页 vps [ 编辑 ]

使用Nginx搭建Seafile


1.下载安装包

安装mariadb-server

apt install mariadb-server

安全设置

mysql_secure_installation

首先使用一键工具搭建环境

下载seafile

wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_7.0.5_x86-64.tar.gz
mkdir /seafile
mv seafile-server_* /seafile
cd /seafile

将 seafile-server_* 移动到 haiwen 目录下后

tar -xzf seafile-server_*
mkdir installed
mv seafile-server_* installed

2.安装前的准备工作

使用mysql的准备工作

on Ubuntu 16.04

apt-get update
apt-get install python2.7 python-setuptools python-mysqldb python-urllib3 python-ldap -y

on CentOS 7

yum install python python-setuptools MySQL-python python-urllib3 python-ldap -y

3.安装

使用mysql的安装

cd seafile-server-*
./setup-seafile-mysql.sh

在这里, 你会被要求选择一种创建 Seafile 数据库的方式:

——————————————————-

Please choose a way to initialize seafile databases:

——————————————————-

[1] Create new ccnet/seafile/seahub databases

[2] Use existing ccnet/seafile/seahub databases

如果选择1, 你需要提供根密码. 脚本程序会创建数据库和用户。
如果选择2, ccnet/seafile/seahub 数据库应该已经被你(或者其他人)提前创建

4.启动seafile

启动 Seafile:

cd ..
cd seafile-server-latest
./seafile.sh start

启动 Seahub

./seahub.sh start

查看进程

pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程

开机启动 Seafile

nano /etc/systemd/system/seafile.service

文件内容如下:

[Unit]
Description=Seafile
After=network.target
[Service]
Type=oneshot
ExecStart=/seafile/seafile-server-latest/seafile.sh start #修改成seafile的安装目录
ExecStop=/seafile/seafile-server-latest/seafile.sh stop #修改成seafile的安装目录
RemainAfterExit=yes
User=root
Group=root
[Install]
WantedBy=multi-user.target

创建 systemd 服务文件 /etc/systemd/system/seahub.service

nano /etc/systemd/system/seahub.service

文件内容如下(如果你想要运行fastcgi模式,请不要忘记修改它。)

[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
ExecStart=/seafile/seafile-server-latest/seahub.sh start #修改成seafile的安装目录
ExecStop=/seafile/seafile-server-latest/seahub.sh stop #修改成seafile的安装目录
User=root
Group=root
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

开机启动

systemctl daemon-reload
systemctl enable seafile
systemctl enable seahub

给予文件夹权限

chmod -R 777 /seafile/

Nginx设置
nginx.conf

user  root;
worker_processes  auto;
#error_log  /etc/nginx/error.log warn;
#pid    /run/nginx.pid;
events {
    use epoll;
    worker_connections  1024;
    multi_accept on;
}
http {
    include /etc/nginx/conf/mime.types; #注意路径
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 10G;
 
        sendfile        on;
        tcp_nopush     on;
        tcp_nodelay on;
        keepalive_timeout 720;
 
        fastcgi_connect_timeout 3600;
        fastcgi_send_timeout 3600;
        fastcgi_read_timeout 3600;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_intercept_errors on;
 
        gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";
    server_tokens off;
    include /etc/nginx/conf/conf.d/*.conf;
}

d.conf配置

server {
     listen 0.0.0.0:443;
     server_name  网址.com;
#    root /seafile/;#路径,按具体情况修改
     ssl on;
     ssl_certificate /etc/nginx/ssl/网址.com.crt;   #pem文件路径
     ssl_certificate_key /etc/nginx/ssl/网址.com.key; #key文件路径
     ssl_session_timeout 5m;
     ssl_protocols  TLSv1.2 TLSv1.3;
     ssl_ciphers           TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
     ssl_prefer_server_ciphers off;
     proxy_set_header X-Forwarded-For $remote_addr;
     add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
     server_tokens off;
#    add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";
        location / {
             #seahub端口,根据实际情况设置,默认是8000
             proxy_pass         http://127.0.0.1:8000; #使用https链接此处也不必改成https
             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;
             proxy_set_header   X-Forwarded-Proto https;
            # used for view/edit office file via Office Online Server
             client_max_body_size 0;
        }
        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            #seafile的端口,根据实际情况设置,默认是8082
            proxy_pass http://127.0.0.1:8082; #使用https链接此处也不必改成https
            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;
            proxy_request_buffering off;
        }
        location /media {
            #静态文件路径,根据实际安装路径找到/seafile-server-latest/seahub的位置
            root /seafile/seafile-server-latest/seahub;
        }
}
server {
     listen       0.0.0.0:80;
     server_name  网址.com;
     return 301 https://网址.com$request_uri;
}

保存,重启nginx

systemctl restart nginx

之后通过浏览器访问https站点,登陆,点击头像-系统管理-设置,
SERVICE_URL改为https://[domain]
FILE_SERVER_ROOT改为https://[domain]/seafhttp
分别点击对号保存,上传应该就正常了。



文章评论