基於apache和mysql,安裝seafile - v1.0

來源:互聯網
上載者:User

標籤:des   class   blog   code   http   tar   

seafile:下一代的開源雲端儲存
更好的檔案同步,隱私保護和團隊協作功能!
本文基於官方文檔,補充描述基於apache和mysql,安裝seafile伺服器。

原文網址:https://cloud.seafile.com/group/762/wiki/%E5%9C%A8apache%E7%8E%AF%E5%A2%83%E4%B8%8B%E9%83%A8%E7%BD%B2seafile/

修改:陳海青(http://hhrz.org)

1、準備下載安裝預裝了apache和mysql的虛擬機器(基於debain的) LAMP Stack -  Web Stack (MySQL) :項目首頁:http://www.turnkeylinux.org/lampstack:http://downloads.sourceforge.net/project/turnkeylinux/ovf/turnkey-lamp-13.0-wheezy-amd64-ovf.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fturnkeylinux%2Ffiles%2Fovf%2F&ts=1400205666&use_mirror=skylink 2、下載和安裝Seafile伺服器

1)下載

     到seafile的下載頁面(http://www.seafile.com/download)下載最新的伺服器安裝包.

2)部署和目錄選擇
 假設安裝目錄 /usr/local/seafile,建議這樣的目錄結構: mkdir -p /usr/local/seafile #將 下載的伺服器安裝包seafile-server_* 移動到 haiwen 目錄下後 mv seafile-server_* /usr/local/seafile cd /usr/local/seafile
tar -xzf seafile-server_*mkdir installedmv seafile-server_* installed 

現在,你的目錄看起來應該像這樣:

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

這樣設計目錄的好處在於

  • 和 seafile 相關的設定檔都可以放在 seafile 目錄下,便於集中管理.
  • 後續升級時,你只需要解壓最新的安裝包到 seafile 目錄下.

這樣你可以重用 seafile 目錄下已經存在的設定檔,而不用重新設定.

3)準備 MySQL 資料庫

Seafile 伺服器有三個組件需要擁有自己的資料庫:

  • ccnet server
  • seafile server
  • seahub

Seafile 伺服器組件更多資訊請看Seafile伺服器組件概覽.

有兩種方法可以初始化資料庫:

  1. 通過setup-seafile-mysql.sh指令碼建立資料庫.
  2. 自己或其他人(比如資料庫管理員)建立

我們建議採用第一種方法. 指令碼會要求你提供 MySQL 資料庫的的根密碼,之後建立:

  • ccnet/seafile/seahub 資料庫
  • 一個可以串連到這些資料庫的使用者

然而,有時你不得不使用第二種方法. 如果你沒有根密碼,你需要通過擁有這種許可權的人(比如資料庫管理員)來協助你建立三個資料庫,和一個能串連這三個資料庫的使用者. 例如,為 ccnet/seafile/seahub 分別建立如下三個資料庫:ccnet-db / seafile-db / seahub-db, 和一個可以串連這三個資料庫的 MySQL 使用者seafile:

create database `ccnet-db` character set = ‘utf8‘;create database `seafile-db` character set = ‘utf8‘;create database `seahub-db` character set = ‘utf8‘;create user ‘seafile‘@‘localhost‘ identified by ‘seafile‘;GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`;GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`;GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`; 
4)安裝 Seafile 伺服器(1)安裝前的準備工作

安裝 Seafile 伺服器之前,請確認已安裝以下軟體

  • python 2.6 or 2.7
  • python-setuptools
  • python-simplejson
  • python-imaging
  • python-mysqldb
#在Debian/Ubuntu系統下apt-get updateapt-get install python2.7 python-setuptools python-simplejson python-imaging python-mysqldb 
(2)開始設定資料庫
cd seafile-server-*./setup-seafile-mysql.sh  #運行安裝指令碼並回答預設問題 

如果你的系統中沒有安裝上面的某個軟體,那麼 Seafile初始化指令碼會提醒你安裝相應的軟體包.

該指令碼會依次詢問你一些問題,從而一步步引導你配置 Seafile 的各項參數:

參數 作用 說明

seafile server name

seafile 伺服器的名字,將來在用戶端會顯示為這個名字

3 ~ 15 個字元,可以用英文字母,數字,底線

seafile server ip or domain

seafile 伺服器的 IP 位址或者網域名稱

用戶端將通過這個 IP 或者地址來訪問你的 Seafile 服務

ccnet server port

ccnet 使用的 TCP 通訊埠

一般使用預設的10001 連接埠,如果已經被佔用,可以設定為其他的連接埠

seafile data dir

seafile 資料存放的目錄,用上面的例子,預設將是 /data/haiwen/seafile-data

seafile 資料將隨著使用而逐漸增加,請把它放在一個有足夠大空閑空間的分區上

seafile server port

seafile 伺服器 使用的 TCP 通訊埠

一般使用預設的 12001 連接埠,如果已經被佔用,可以設定為其他的連接埠

seafile httpserver port

seafile httpserver 使用的 TCP 通訊埠

一般使用預設的 8082 連接埠,如果已經被佔用,可以設定為其他的連接埠

seahub admin email

sehaub管理員的登入帳戶名稱

使用一個 email 地址

seahub admin password

seahub 管理員的密碼

 

在這裡, 你會被要求選擇一種建立 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 資料庫應該已經被你(或者其他人)提前建立。

如果選擇 [1] Create new ccnet/seafile/seahub databases,你會被問三個問題::

 

Question Description Note

mysql server host

the host address of the mysql server

the default is localhost

mysql server port

the port of the mysql server

the default is 3306. Almost every mysql server uses this port.

root password

the password of mysql root account

the root password is required to create new databases and a new user

mysql user for seafile

the username for seafile programs to use to access MySQL server

if the user does not exist, it would be created

password for seafile mysql user

the password for the user above

 

ccnet dabase name

the name of the database used by ccnet, default is "ccnet-db"

the database would be created if not existing

seafile dabase name

the name of the database used by seafile, default is "seafile-db"

the database would be created if not existing

seahub dabase name

the name of the database used by seahub, default is "seahub-db"

the database would be created if not existing

如果你選擇[2] Use existing ccnet/seafile/seahub databases, 你會被問到如下三個問題::

 

Question Description Note

mysql server host

the host address of the mysql server

the default is localhost

mysql server port

the port of the mysql server

the default is 3306. Almost every mysql server uses this port

mysql user for seafile

the user for seafile programs to use to access MySQL server

the user must already exists

password for seafile mysql user

the password for the user above

 

ccnet dabase name

the name of the database used by ccnet

this database must already exist

seafile dabase name

the name of the database used by seafile, default is "seafile-db"

this database must already exist

seahub dabase name

the name of the database used by seahub, default is "seahub-db"

this database must already exist

如果安裝正確完成,你會看到下面這樣的輸出

 

現在你的目錄結構看起來應該是這樣:

#tree seafile -L 2 seafile
├── ccnet               # configuration files│   ├── ccnet.conf│   ├── mykey.peer│   ├── PeerMgr│   └── seafile.ini├── installed│   └── seafile-server_1.8.2_x86-64.tar.gz├── seafile-data│   └── seafile.conf├── seafile-server-1.8.2  # active version│   ├── reset-admin.sh│   ├── runtime│   ├── seafile│   ├── seafile.sh│   ├── seahub│   ├── seahub.sh│   ├── setup-seafile.sh│   └── upgrade├── seafile-server-latest  # symbolic link to seafile-server-1.8.2├── seahub-data│   └── avatars├── seahub_settings.py   # optional config file└── seahub_settings.pyc 

seafile-server-latest檔案夾為指向當前 Seafile 伺服器檔案夾的符號連結. 將來你升級到新版本後, 升級指令碼會自動更新使其始終指向最新的 Seafile 伺服器檔案夾,建立方法:

#cd /usr/local/seafile

# ln  -s seafile-server-latest  symbolic link to seafile-server-1.8.2

5)啟動 Seafile 伺服器(1)啟動之前

因為 Seafile 在用戶端和伺服器之間使用持續串連,如果你的用戶端數量巨大, 你應該在啟動 Seafile 之前修改你的 Linux 檔案最大開啟數,如下:

ulimit -n 30000 
(2)啟動 Seafile 伺服器和 Seahub 網站

在 seafile-server-1.8.2 目錄下,運行如下命令

  • 啟動 Seafile:
./seafile.sh start # 啟動 Seafile 服務 
  • 啟動 Seahub
./seahub.sh start <port>  # 啟動 Seahub 網站 (預設運行在8000連接埠上) 

小貼士: 你第一次啟動 seahub 時,seahub.sh 指令碼會提示你建立一個 seafile 管理員帳號。

服務啟動後, 開啟瀏覽器並輸入以下地址

http://192.168.1.111:8000/ 

你會被重新導向到登陸頁面. 輸入你在安裝 Seafile 時提供的使用者名稱和密碼後,你會進入 Myhome 頁面,建立資料庫.

恭喜! 現在你已經成功的安裝了 Seafile 伺服器.

 

(3)在另一連接埠上運行 Seahub

如果你不想在預設的 8000 連接埠上運行 Seahub, 而是想自訂連接埠(比如8001)中運行,請按以下步驟操作:

  • 關閉 Seafile 伺服器
./seahub.sh stop # 停止 Seafile 進程./seafile.sh stop # 停止 Seahub 
  • 更改haiwen/ccnet/ccnet.conf檔案中SERVICE_URL 的值(假設你的 ip 或者網域名稱時192.168.1.100), 如下:
SERVICE_URL = http://192.168.1.100:8001 
  • 重啟 Seafile 伺服器
./seafile.sh start # 啟動 Seafile 服務./seahub.sh start 8001 # 啟動 Seahub 網站 (運行在8001連接埠上) 

ccnet.conf更多細節請看[Seafile server configuration options](Seafile server configuration options "wikilink").

(4)關閉/重啟 Seafile 和 Seahub關閉
./seahub.sh stop # 停止 Seahub./seafile.sh stop # 停止 Seafile 進程 
重啟
./seafile.sh restart # 停止當前的 Seafile 進程,然後重啟 Seafile./seahub.sh restart  # 停止當前的 Seahub 進程,並在 8000 連接埠重新啟動 Seahub 
如果停止/重啟的指令碼運行失敗

大多數情況下 seafile.sh seahub.sh 指令碼可以正常工作。如果遇到問題:

  • 使用pgrep命令檢查 seafile/seahub 進程是否還在運行中
pgrep -f seafile-controller # 查看 Seafile 進程pgrep -f "manage.py run_gunicorn" # 查看 Seahub 進程 
  • 使用pkill命令殺掉相關進程
pkill -f seafile-controller # 結束 Seafile 進程pkill -f "manage.py run_gunicorn" # 結束 Seafile 進程 
  3、在Apache環境下部署Seafile1)準備工作
  1. Ubuntu 下安裝python-flup庫:

    sudo apt-get install python-flup
  2. Ubuntu 下安裝和啟用 mod_fastcgi 和 mod_rewrite :
    debain下需要調整才能下載(參考:https://packages.debian.org/zh-cn/wheezy/libapache2-mod-fastcgi):
    您可以使用以下列表中的任何一個源鏡像只要往您的 /etc/apt/sources.list 檔案中像下面這樣添加一行:
    deb http://ftp.cn.debian.org/debian wheezy main non-free
    請使用最終確定的源鏡像替換 ftp.cn.debian.org/debian。

    sudo apt-get install libApache2-mod-fastcgisudo a2enmod rewritesudo a2enmod fastcgi
  3. 啟用 Apache proxy

    sudo a2enmod proxy_http

Windows 下, 首先下載mod_fastcgi-*.dll並將它放置在你的組件目錄下. 在 debian/raspbian 環境下安裝 fcgi 請參考這裡

2)Apache 環境下部署 Seahub/HttpServer

Seahub 是 Seafile 伺服器的網站介面. HttpServer 用來處理瀏覽器端檔案的上傳與下載. 預設情況下, 它在 8082 連接埠上監聽 HTTP 要求.

這裡我們通過 fastcgi 部署 Seahub, 通過反向 Proxy(Reverse Proxy)部署 HttpServer. 我們假設你已經將 Seahub 綁定了網域名稱"www.myseafile.com".

如果使用ip地址:則使用ip地址代替網域名稱。

首先編輯你的 Apache 設定檔.根據你的 Linux 版本, 你需要在檔案末尾增加以下語句:

Apache2.conf, for ubuntu/debian:

FastCGIExternalServer /var/www/seahub.fcgi -host 127.0.0.1:8000

httpd.conf, for centos/fedora:

FastCGIExternalServer /var/www/html/seahub.fcgi -host 127.0.0.1:8000

httpd.conf, for Windows:

LoadModule fastcgi_module modules/mod_fastcgi-2.4.6-AP22.dllLoadModule rewrite_module modules/mod_rewrite.soFastCGIExternalServer e:/seafile-server-1.7.1/seahub/seahub.fcgi -host 127.0.0.1:8000 

注意, seahub.fcgi只是一個位置標識符, 你並不需要在你的系統中建立這個檔案夾.

二, 修改 Apache 設定檔: (sites-enabled/000-default) for ubuntu/debian (vhost.conf) for centos/fedora

<VirtualHost *:80>  ServerName www.myseafile.com  DocumentRoot /var/www  Alias /media  /home/user/haiwen/seafile-server-latest/seahub/media           RewriteEngine On  #  # seafile httpserver  #  ProxyPass /seafhttp http://127.0.0.1:8082  ProxyPassReverse /seafhttp http://127.0.0.1:8082  RewriteRule ^/seafhttp - [QSA,L]  #  # seahub  #  RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]  RewriteCond %{REQUEST_FILENAME} !-f  RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]</VirtualHost>
3)修改 ccnet.conf 和 seahub_setting.py修改 ccnet.conf

你需要在/data/haiwen/ccnet/ccnet.confSERVICE_URL欄位中自訂網域名。

SERVICE_URL = http://www.myseafile.com

注意:如果你改變了 Seahub 的網域名稱,也需要同步更改SERVICE_URL.

修改 seahub_settings.py

請在seahub_settings.py新增一行,設定HTTP_SERVER_ROOT的值

HTTP_SERVER_ROOT = ‘http://www.myseafile.com/seafhttp‘
啟動 Seafile 和 Seahub
sudo service apache2 restart./seafile.sh start./seahub.sh start-fastcgi
4)升級 Seafile 伺服器注意事項

在升級Seafile時, 除了常規操作外,還需增加一步操作: ‘‘‘在 nginx/apache 配置中更新靜態檔案路徑‘‘‘. 例如, 假設你正在將伺服器從 1.3.0 升級到 1.4.0, 那麼你需要:

 Alias /media  /home/user/haiwen/seafile-server-1.4.0/seahub/media

小貼士:

你可以建立一個符號連結seafile-server-latest, 並將它指向當前 Seafile 伺服器檔案夾(在2.1.0及其後續伺服器版本中,e setup-seafile.sh指令碼程式會自動建立). 之後, 每次你運行一個升級指令碼, 指令碼都會自動為seafile-server-latest建立符號連結並將其指向最新版本伺服器的檔案夾.

通過如下語句實現:

 location /media {        root /home/user/haiwen/seafile-server-latest/seahub;    }

這樣,以後在你升級 Seafile 伺服器的時候,不必每次都去更新 Nginx 配置.

5)其他說明

閱讀Seafile伺服器組件概覽會幫你更好的理解 Seafile

查看seafile更多資訊請移至..
  • 在Nginx環境下部署Seafile / 在Apache環境下部署Seafile
  • Seafile Web在Nginx環境下啟用Https / Seafile Web在Apache環境下啟用Https
  • Seafile LDAP配置
  • Seafile伺服器配置選項

在 Seafile 伺服器端有兩個組件:Seahub 和 HttpServer. HttpServer 通過監聽 8082 連接埠處理檔案的上傳與下載. Seahub 通過監聽 8000 連接埠負責其他的WEB頁面. 但是在 https 下, Seahub 應該通過 fastcgi 模式監聽8000連接埠 (運行./seahub.sh start-fastcgi). 而且在 fastcgi 模式下, 如果直接存取http://domain:8000時,會返回錯誤頁面.

當一個使用者訪問https://domain.com/home/my/時, Apache 接受到訪問請求後,通過 fastcgi 將其轉寄至 Seahub. 可通過以下配置來實現:

## seahub#RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]RewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^/(seahub.*)$ /seahub.fcgi/$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

and

FastCGIExternalServer /var/www/seahub.fcgi -host 127.0.0.1:8000 

當一個使用者在 Seahub 中點擊檔案下載連結時, Seahub 讀取HTTP_SERVER_ROOT的值,並將其使用者重新導向到 https://domain.com/seafhttp/xxxxx/https://domain.com/seafhttpHTTP_SERVER_ROOT的值. 這裡, HTTP_SERVER 表示是 Seafile 中只負責檔案上傳與下載的的 HttpServer 組件.

當 Apache 在 https://domain.com/seafhttp/xxxxx/接收到訪問請求後, 它把請求發送到正在監聽 127.0.0.1:8082 的 HttpServer 組件, 可通過以下配置來實現:

ProxyPass /seafhttp http://127.0.0.1:8082ProxyPassReverse /seafhttp http://127.0.0.1:8082RewriteRule ^/seafhttp - [QSA,L]
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.