Seafile Pro 7.x 安裝和使用遇到的問題

一直想要一個私人的雲存儲,目前主流解決方案都無法滿足我隨時隨地登陸使用和數據自有的需求。經過對比幾個開源雲存儲解決方案,我最終選擇了中國大陸團隊開發的 Seafile。在安裝和使用 Seafile 的過程中不可避免的遇到了一些問題,本着 儘量不使用一鍵腳本 和 儘量搞懂每條命令背後作用 的初衷,將我個人的搭建過程和遇到的問題及解決方法記錄如下,以供日後參考和學習。

我使用的是一臺配置爲 1C 2G 30M 的騰訊雲 Lighthouse 莫斯科 VPS,操作系統爲 CentOS 8 x86_64。

Step 1 安裝 aaPanel 與 LNMP 環境

雖然使用 aaPanel 有悖我 儘量不使用一鍵腳本 的初衷,但是 aaPanel 實在是太方便了()。

yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh

然後通過 aaPanel 安裝需要的基礎環境:Nginx 1.19.2 + MySQL 5.7.31 + PHP-7.4 + phpMyAdmin 5.0。

Step 2 安裝 Java 環境

這裏有一個坑。
從 Seafile Pro 7.0 版本開始 Elasticsearch 更新到了 5.6 版,Elasticsearch 5.6 需要 Java 8 環境。原先安裝的時候按照常規方法安裝 Java 後啓動 Seafile 出現嚴重故障,表現爲 CPU 和 RAM 反覆飈至 100%。查詢資料得知,為了安全起見,Java 8 不能以 root 用戶運行,需要更改啟動 Seafile 的用戶。這個 Java 8 特性的坑 Seafile 文檔暫未標明。

yum install java-1.8.0-openjdk

Step 3 安裝 Python 環境

# on CentOS 8
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

這裏又有一坑。
Centos 8 運行這段命令會報錯,起初我並不明白這段錯誤的原因,看報錯內容以爲是 Python3 和 pip3 的版本問題,嘗試升級 Python3 和 pip3 仍未解決。
求助大佬,大佬給出的解決方法是:

vim ~/.pip/pip.conf 

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn 

curl https://bootstrap.pypa.io/get-pip.py | python3.6

可能是 pip 更新不完全的問題。使用清華源完全更新後不再報錯,成功執行。

Step 4 安裝 Seafile Pro

這部分參考 Seafile 官方文檔即可,我將 Seafile 安裝至 /opt/seafile 路徑下。

mkdir /opt/seafile
mv seafile-pro-server_* seafile
cd /opt/seafile
#将 seafile-pro-server_* 移动到 /opt/seafile 目录下后
tar -xzf seafile-pro-server_*
mkdir installed
mv seafile-pro-server_* installed

現在,安裝目錄看起來應該像這樣:

# tree . -L 2
.
├── installed
│   └── seafile-server_1.4.0_x86-64.tar.gz
└── seafile-server-1.4.0
    ├── reset-admin.sh
    ├── runtime
    ├── seafile
    ├── seafile.sh
    ├── seahub
    ├── seahub.sh
    ├── setup-seafile.sh
    └── upgrade

這樣設計目錄的好處在於:

  • 和 seafile 相關的配置文件都放在 seafile 目錄下,便於集中管理。
  • 後續升級時,你只需要解壓最新的安裝包到 seafile 目錄下。

受 Java 8 影響,需要新建一個 seafile 或者任何非 root 用戶。

useradd --system --comment "seafile" seafile --create-home --home-dir /home/seafile

修改 Seafile 安裝目錄和 Seafile data 目錄的屬主和屬組為 seafile

cd
chown -R seafile:seafile /opt/seafile

切換爲 seafile 用戶

su - seafile
cd /opt/seafile
cd seafile-pro-server-*
./setup-seafile-mysql.sh

運行安裝腳本並回答預設問題。在 seafile-server-latest 目錄下:

./seafile.sh start # 啟動 Seafile 服務
./seahub.sh start # 啟動 Seahub 網站 (默認運行在127.0.0.1:8000端口上)

第一次啟動 seahub 時,seahub.sh 腳本會提示創建一個 seafile 管理員帳號。
7.0.x 版本之後,8000端口默認監聽在127.0.0.1地址上,這意味著無法直接通過8000端口訪問 Seafile 服務。建議配置 Nginx 反向代理。

Step 5 設置 Seafile 隨系統自行啓動

新建 seafile.service 文件。填入內容:

nano /etc/systemd/system/seafile.service

[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
# 如果沒有使用 memcached 則去掉 memcached.service
After=network.target mariadb.service memcached.service mysql.service
[Service]
Type=oneshot
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
# 如果 seahub 使用了 nginx 反代,請修改為 ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start-fastcgi
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
RemainAfterExit=yes
# User 和 Group 如果未建立 seafile 用戶和用戶組,則修改為 root,否則無法啟動。
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.target

使 systemctl 配置生效

systemctl daemon-reload

systemctl start seafile #啟動seafile
systemctl stop seafile #停止seafile
systemctl enable seafile #設置seafile隨系統啟動
systemctl is-enabled seafile #檢查seafile是否已經設置為自啟動
systemctl disable seafile #關閉seafile隨系統啟動

至此,Seafile 已經可以正常使用。其他遇到的坑將在今後進一步補充。

其他

低配置服務器在運行 Seafile Pro 時會發現內存和 Swap 佔用極高,如果硬盤 io 受限會導致系統運行極其緩慢,這是由於搜索功能基於 Elasticsearch 服務,這是一個 Java 進程。Java 運行會消耗大量內存,要修改 Java 堆内存大小,可以通过修改 jvm 配置文件来修改 Elasticsearch 使用的内存大小空间。例如,修改为 512m 内存空间。修改 seafile-server-latest/pro/elasticsearch/config/jvm.options 文件的以下配置项:

-Xms512m # 最小使用內存空間
-Xmx512m # 最大使用內存空間
### 建议将以上两个配置项的值设置为一样大小。

重啓服務後生效。通過修改以上參數可以緩解內存和 Swap 被沾滿導致的系統運行緩慢問題。如果不需要搜索和其他相關服務,可以進入 seafevents.conf 關閉。


參考資料
https://cloud.seafile.com/published/seafile-manual-cn/home.md
https://www.jianshu.com/p/46b39e59d2c0
https://bbs.seafile.com/t/seafile-for-centos7/1451

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.