摘要訊息 : Seafile 新版本安裝提示

一直以來, 我都是使用 NextCloud 的, 最近有一台新的伺服器, 於是我想在這台伺服器上使用 Seafile. 但是實際的安裝過程中, 遇到了很多問題

也很長時間沒有寫過私有雲下的文章了, 現在通過回憶重新紀錄一下

1. MySQL 下安裝 Seafile

Seafile 即使是最新的版本, 也沒有支援 MySQL 8, 所以建議大家使用 MySQL 5.7 進行安裝. 但是最新版本的 MySQL 5.7 在安裝的時候也會有問題.  MySQL 會回傳這樣一個錯誤 :

1193, "Unknown system variable 'tx_isolation'

這個是因為 tx_isolation 在最新版本的 MySQL 5.7 (也包括 MySQL 8) 已經被遺棄了

解決方案就是修改 Seafile 的程式碼, 修改之前需要進入 Seafile 的檔案夾中

cd /www/cloud

我們需要查找包含 tx_isolation 字串的檔案 :

find . | xargs grep -ril "tx_isolation"

此時, 如果 Seafile 版本比較低, 一定查找成功, 因為在 Seafile 檔案夾下有這樣一個檔案包含這個字串 :

./seafile-pro-server-6.3.11/pro/python/SQLAlchemy-1.1.3-py2.6-linux-x86_64.egg/sqlalchemy/dialects/mysql/base.py

那麼我們需要修改程式碼 :

vim ./seafile-pro-server-6.3.11/pro/python/SQLAlchemy-1.1.3-py2.6-linux-x86_64.egg/sqlalchemy/dialects/mysql/base.py

然後查找 tx_isolation

修改為 transaction_isolation

修改之後的陳述式結果為 : cursor.execute('SELECT @@transaction_isolation')

然後繼續進行安裝步驟就沒有問題了

在 MySQL 8 下也有這個問題, 不過也有其它問題. 本人嘗試過修改程式碼, 但是最終失敗. 所以想要使用 MySQL 8 安裝的話, 還需要等待 Seafile 團隊的更新

2. Seafile 6.3 下的 Nginx 配置

如果使用本網誌的安裝方法, 那麼使用的網頁伺服器為 Nginx. Seafile 6.3 對 Nginx 配置要求已經發生了改變, 最大的改變就是遺棄 FastCGI

如果大家還是使用原來的命令 ./seahub.sh start-fastcgi

可能會有這樣一個錯誤 :

Unknown command: 'runfcgi'

此時, 如果你是安裝本網誌給出的方案安裝, 那麼原來的配置檔案已經無效, 這裡呈現一份新的配置檔案 :

server {
	listen 80;
	server_name 填寫你的網域名稱;
	rewrite ^ https://$http_host$request_uri? permanent;
}
server {
	listen 443 ssl http2;
	server_name 填寫你的網域名稱;
	ssl on;
	ssl_certificate 填寫證書位置;
	ssl_certificate_key 填寫 key 位置;
	ssl_session_timeout 5m;
	ssl_session_cache shared:SSL:5m;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS';
	ssl_prefer_server_ciphers on;
	add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
	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_set_header   X-Forwarded-Proto https;
		proxy_read_timeout  1200s;
		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;
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		client_max_body_size 0;
		proxy_connect_timeout 36000s;
		proxy_read_timeout 36000s;
		proxy_send_timeout  36000s;
		send_timeout  36000s;
		proxy_request_buffering off;
	}
	location /media {
		root /www/cloud/seafile-server-latest/seahub;        #seahub 檔案夾
	}
}

Seahub 的啟動不再需要額外加 start-fastcgi

直接使用 ./seahub.sh start 就可以了

《Seafile 進階玩法》開頭部分有提到開機啟動, 腳本中也需要去掉 start-fastcgi 才行, 以下呈現最新的腳本 :

[Unit]

Description=Seafile hub

After=network.target seafile.service

[Service]

ExecStart=/www/cloud/seafile-server-latest/seahub.sh start

ExecStop=/www/cloud/seafile-server-latest/seahub.sh stop

User=root

Type=oneshot

RemainAfterExit=yes

[Install]

WantedBy=multi-user.target