超詳細 Seafile 7.0.X 專業版搭建教程 配置nginx解決網頁無法訪問

前言

在這裏插入圖片描述
Seafile是一個開源、專業、可靠的雲存儲平臺;使用Seafile我們可以搭建屬於自己的私有云,實現隨時隨地訪問自己的文件。
seafile的最大優勢:

直接通過本地 S 盤來訪問雲端文件,不佔用本地存儲。爲電腦提供服務器的海量存儲空間。同操作系統無縫集成,還可以離線修改文件。

Seafile官方文檔:https://cloud.seafile.com/published/seafile-manual-cn/home.md
注意:7.0.x 版本之後,8000端口默認監聽在127.0.0.1地址上,這意味着您無法直接通過8000端口訪問Seafile服務。建議您配置nginx反向代理。
本文安裝環境爲CentOS 7

一、準備工作

  1. 下載seafile-server專業版:官方下載
  2. Python(2.7及以上)
  3. 安裝MySQL :菜鳥教程(建議數據庫選擇MySQL,SQLite容易出錯)
  4. 安裝Nginx:菜鳥教程(非必須,7.0以上版本推薦使用,外網訪問推薦使用)
  5. 公網IP:非必須,通過外網訪問時需要
  6. Frp:Github地址(非必須,內網穿透工具,本地沒有公網IP時配合有公網IP的服務器使用)

二、安裝Seafile 服務器

(一)安裝依賴

1. 安裝epel

yum -y install epel-release

在這裏插入圖片描述

2. 安裝pip

yum -y install python-pip

3. 安裝依賴

yum -y install python-imaging MySQL-python python-memcached python-ldap python-urllib3 ffmpeg ffmpeg-devel

pip install pillow moviepy

(二)安裝Seafile 服務器

1. 創建文件夾

mkdir -p /usr/local/seafile-server

2.解壓

tar -zxvf seafile-pro-server_7.0.9_x86-64.tar.gz -C /usr/local/seafile-server/

進入解壓後的文件夾

 cd /usr/local/seafile-server/seafile-pro-server-7.0.9/

3.執行安裝腳本

./setup-seafile-mysql.sh

初始化腳本會檢查是否滿足安裝的條件,條件滿足後按回車鍵繼續
該腳本會依次詢問你一些問題,從而一步步引導你配置 Seafile 的各項參數,直接敲回車爲使用默認配置
在這裏插入圖片描述
輸入服務器名稱
在這裏插入圖片描述
輸入服務器ip或域名
在這裏插入圖片描述
設置文件存放的目錄,也就是要共享的主目錄,這個目錄必須之前不存在
在這裏插入圖片描述
設置文件服務端口,可使用默認設置
在這裏插入圖片描述
選擇創建數據庫的方式,通常情況下選1

  • 如果選擇1, 你需要提供根密碼. 腳本程序會創建數據庫和用戶。
  • 如果選擇2, ccnet/seafile/seahub 數據庫應該已經被你(或者其他人)提前創建。
    在這裏插入圖片描述
    輸入數據庫的地址,數據庫安裝在本機時可使用默認設置
    在這裏插入圖片描述
    輸入數據庫端口號
    在這裏插入圖片描述
    輸入數據庫root用戶的密碼
    在這裏插入圖片描述
    輸入數據庫seafile用戶的用戶名,如果用戶不存在則創建該用戶,可使用默認設置
    在這裏插入圖片描述
    輸入剛纔輸入的用戶的密碼
    在這裏插入圖片描述
    設置數據庫名,可使用默認設置
    在這裏插入圖片描述
    確認配置無誤後按回車鍵繼續
    在這裏插入圖片描述
    稍作等待,安裝完成
    在這裏插入圖片描述

(三)配置Nginx

我們需要根據官方文檔的配置稍作修改,以符合自己的實際情況

1.打開Nginx配置文件

vim /usr/local/webserver/nginx/conf/nginx.conf

2.Nginx配置文件

可以參考配置:
注意:中文註釋地方是需要根據實際情況修改的地方


#user  nobody;
user www www;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log /data/logs/nginx/error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    client_max_body_size 0;
    send_timeout 180;
    #gzip  on; 
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_connect_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
    proxy_connect_timeout 18000;
    proxy_send_timeout 18000;   
    proxy_read_timeout 18000;  

    server {
        listen       80;
        server_name  localhost;
        proxy_set_header X-Forwarded-For $remote_addr;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
             #seahub端口,根據實際情況設置,默認是8000
             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;
        }
        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            #seafile的端口,根據實際情況設置,默認是8082
            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;
            proxy_request_buffering off;
        }
        location /media {
            #靜態文件路徑,根據實際安裝路徑找到/seafile-server-latest/seahub的位置
            root /usr/local/seafile-server/seafile-server-latest/seahub;
        }	
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }     
}

3.檢查Nginx配置文件正確性

nginx -t

這裏我已經把nginx的目錄添加到環境變量中了,所以可以直接使用nginx命令,如果沒有設置環境變量需要進入nginx的目錄執行./nginx -t
在這裏插入圖片描述
出現test is successful代表校驗通過

4.讓Nginx重新加載配置

 nginx -s reload

(三)啓動seafile-server

進入seafile-server-latest目錄

cd ../seafile-server-latest/

1.啓動seafile

./seafile.sh start

在這裏插入圖片描述

2.啓動seahub

./seahub.sh start

第一次啓動需要設置admin賬戶和密碼
在這裏插入圖片描述
稍等片刻,啓動成功
在這裏插入圖片描述

3.進入網頁

在瀏覽器輸入http://ip:port進入網頁(ip爲機器IP,port爲nginx監聽端口)
如果機器有防火牆,需要先開放nginx監聽的端口
可以參考:linux防火牆查看狀態firewall、iptable
在這裏插入圖片描述

三、使用客戶端訪問

在這裏插入圖片描述
客戶端下載
可以使用Windows 掛載盤客戶端掛載爲本地硬盤使用
在這裏插入圖片描述

四、開啓WebDAV

一種基於 HTTP 1.1協議的通信協議,開啓後可以使用支持該協議的第三方客戶端訪問文件。
開啓方法:官方文檔
以下爲使用Nginx的教程

1. 編輯seafdav.conf文件

vim ../conf/seafdav.conf

port爲WedDAV監聽端口,可自行設置

[WEBDAV]
enabled = true
port = 8080
fastcgi = true
share_name = /seafdav

2. 修改Nginx配置

在server裏添加以下內容(中文註釋處需要根據實際修改)

location /seafdav {
            #此處端口號改爲剛纔設置的WedDAV監聽端口
            fastcgi_pass    127.0.0.1:8080;
            fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
            fastcgi_param   PATH_INFO           $fastcgi_script_name;    
            fastcgi_param   SERVER_PROTOCOL     $server_protocol;
            fastcgi_param   QUERY_STRING        $query_string;
            fastcgi_param   REQUEST_METHOD      $request_method;
            fastcgi_param   CONTENT_TYPE        $content_type;
            fastcgi_param   CONTENT_LENGTH      $content_length;
            fastcgi_param   SERVER_ADDR         $server_addr;
            fastcgi_param   SERVER_PORT         $server_port;
            fastcgi_param   SERVER_NAME         $server_name;            
            client_max_body_size 0;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
            proxy_send_timeout  36000s;
            send_timeout  36000s;            
            # This option is only available for Nginx >= 1.8.0. See more details below.
            proxy_request_buffering off;
        }

3. 使Nginx配置生效

nginx -t
nginx -s reload

4. 重啓seafile

./seafile.sh restart

5. 使用WebDAV

在瀏覽器輸入http://ip:port/seafdav,登錄後可訪問文件
在這裏插入圖片描述
還可以使用其他第三方支持WebDAV的客戶端,請自行摸索

五、設置外網訪問

(一)情況分析

通過外網訪問需要有公網IP,目前大致可分爲三種情況:

1. 本機有公網IP

適用情景:在VPS提供商(例如阿里雲等)購買VPS,並用該機器搭建SeafileServer。
解決方案:在安裝的時候填入本機的公網IP即可

2. 路由器有公網IP

適用情景:跟運營商py後拿到公網IP,搭建SeafileServer的機器連接到該路由器上
解決方案:在安裝時填入公網IP,路由器設置端口轉發即可

3. 本地沒有公網IP,但有 有公網IP的VPS

適用情景:在VPS提供商(例如阿里雲等)購買VPS,但由於空間太小或其他原因不想把SeafileServer搭建在VPS上
解決方案:使用內網穿透,把本地Nginx端口映射到有公網IP的VPS上。可以使用frp,簡單易用,參見中文文檔

(二)系統設置

在按照以上方法設置好公網IP後還需要管理員登錄網頁,進入系統管理-設置,設置SERVICE_URLFILE_SERVER_ROOT,否則無法上傳和下載文件
在這裏插入圖片描述

(三)局域網流量不走遠端服務器

如果使用內網穿透並且按照上面的設置,那麼就算在局域網內也會通過遠端服務器訪問,這樣速度就不如局域網直接訪問快了,這裏提供一個簡單的解決方法:
在上一步設置中SERVICE_URLFILE_SERVER_ROOT仍然填局域網內的地址,這樣局域網就正常訪問,如果需要外網訪問時可以通過支持WebDAV的客戶端訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章