前言
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
一、準備工作
- 下載seafile-server專業版:官方下載
- Python(2.7及以上)
- 安裝MySQL :菜鳥教程(建議數據庫選擇MySQL,SQLite容易出錯)
- 安裝Nginx:菜鳥教程(非必須,7.0以上版本推薦使用,外網訪問推薦使用)
- 公網IP:非必須,通過外網訪問時需要
- 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_URL
和FILE_SERVER_ROOT
,否則無法上傳和下載文件
(三)局域網流量不走遠端服務器
如果使用內網穿透並且按照上面的設置,那麼就算在局域網內也會通過遠端服務器訪問,這樣速度就不如局域網直接訪問快了,這裏提供一個簡單的解決方法:
在上一步設置中SERVICE_URL
和FILE_SERVER_ROOT
仍然填局域網內的地址,這樣局域網就正常訪問,如果需要外網訪問時可以通過支持WebDAV的客戶端訪問。