Seafile server安裝手冊

Seafile server安裝手冊

 

部署 Seafile 服務器(使用 MySQL)

http://www.seafile.com/download下載最新的服務器安裝包.

部署和目錄設計

公司的名稱爲"kaiqigu",你也已經下載seafile-server_1.4.0_x86-64.tar.gz 到你的home 目錄下。 在這裏建議這樣的目錄結構:

mkdir kaiqigu

mv seafile-server_1.4.0_x86-64.tar.gz kaiqigu

#將 seafile-server_1.4.0_x86-64.tar.gz 移動到 kaiqigu 目錄下後

cd kaiqigu

tar -xzf seafile-server_1.4.0_x86-64.tar.gz

mkdir installed

mv seafile-server_1.4.0_x86-64.tar.gz installed

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

# kaiqigu

├── 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

 

這樣設計目錄的好處在於

  1:和 seafile 相關的配置文件都可以放在 kaiqigu 目錄下,便於集中管理.

 

  2:後續升級時,你只需要解壓最新的安裝包到"kaiqigu"目錄下.

 

這樣你可以重用"kaiqigu"目錄下已經存在的配置文件,而不用重新配置.

安裝 Seafile 服務器

安裝前的準備工作

系統賬號設置

安裝好 CentOS 6.5 的基本服務器,首先需要設置接下來會使用到的 admin 系統賬號,並設置好 ssh 的公鑰登錄,方便接下來的部署。

 

使用 root 賬號登錄(或者,具有 root 權限的賬號)登錄後,爲確保 sudo 已經安裝了,執行以下命令,如果提示已經安裝,則無需任何操作,如果沒有安裝,則進行安裝:

 

# yum install sudo

 

接下來,創建 admin 系統賬號:

 

# useradd admin

# mkdir /home/admin/.ssh

# chown admin:admin /home/admin/.ssh/

# chmod 0700 /home/admin/.ssh/

 

然後,在 .ssh 目錄中構建 authorized_keys 文件,方式不限,使用 vi 或者 echo 都行,之後,再設置好 authorized_keys 文件的所有者和屬性,操作如下:

# cd /home/admin/.ssh

# echo "xxxxxxx(公鑰內容)"> authorized_keys

# chown admin:admin authorized_keys

# chmod 0600 authorized_keys

爲方便接下來的操作,賦予 admin 用戶 sudo 的權限:

# echo "admin ALL=(ALL) NOPASSWD:ALL">> /etc/sudoers

更新系統軟件包

用 admin 賬號登錄後,使用 yum 機制安裝所需用到的軟件包:

$ sudo su

# yum install epel-release

# yum install zlib-devel bzip2-devel ncurses-developenssl-devel

# yum install make gcc-c++ cmake bison-devel

# yum install swig patch sqlite-devel readlinereadline-devel

# yum install rsync nload

建立自用目錄

# chown admin:admin /data

 

以 admin 賬戶登錄,執行

 

$ cd /data

$ mkdir soft

 

安裝Seafile 服務器之前,請確認已安裝以下軟件

l  Nginx

l  MySQL server

l  Python2.7

 

Web Server 部分

該部分內容,適用於需要安裝 nginx 的 Web Server 服務器上,不需要安裝 nginx 的服務器,可以忽略。

在沒有特殊需求的情況下,採用 nginx 官方發佈的預編譯版本進行安裝,方便將來的升級維護(需要訪問外網):

$ cd /data/soft

$ wgethttp://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

$ sudo yum installnginx-release-centos-6-0.el6.ngx.noarch.rpm

安裝了 nginx 軟件倉庫後,添加的文件爲:

/etc/yum.repos.d/nginx.repo

/etc/pki/rpm-gpg/RPM-GPG-KEY-nginx

 

緊接着安裝 nginx:

 

$ sudo yum install nginx

 

安裝完成後,相關的目錄和文件有:

/etc/rc.d/init.d/nginx# 自啓動腳本

/usr/sbin/nginx

/etc/nginx/# 配置文件目錄

/var/log/nginx/# 默認的日誌目錄

/var/run/nginx.pid

/var/run/nginx.lock

/var/cache/nginx/# 相關臨時文件目錄

管理 nginx :(啓動、重啓、停止和配置測試)

# service nginx start

# service nginx restart

# service nginx stop

# service nginx configtest

 

DB Server 部分

如無特殊應用,使用 centos 默認的 mysql-server (版本爲 5.1.73)安裝即可。

 

$ sudo su

# yum install mysql-server

 

啓動 mysql

 

# service mysqld start

 

修改 root 賬號密碼

 

# /usr/bin/mysqladmin -u root password'new-password'

 

修改mysql數據存放目錄

 

# /etc/rc.d/init.d/mysqld stop

 

# cd /var/lib

 

# cp -a mysql/ /data/

 

# vim /etc/my.cnf

修改datadir=/var/lib/mysql爲datadir=/data/mysql

註釋掉socket=/var/lib/mysql/mysql.sock一行,添加socket=/data/mysql/mysql.sock

 

# vim /etc/rc.d/init.d/mysqld

註釋掉datadir="$result"添加datadir="/data/mysql"

 

# vim /usr/bin/mysqld_safe

修改DATADIR="/var/lib/mysql"爲DATADIR="/data/mysql"

 

建立一個mysql.sock的鏈接

 

# ln -s /data/mysql/mysql.sock/var/lib/mysql/mysql.sock

 

# /etc/rc.d/init.d/mysqld start

 

進入mysql查看數據目錄

sudo mysql -uroot -p xxx

mysql>show variables like '%dir%';

 

查看datadir目錄是否爲/data/mysql

Python Server 部分

該部分內容,適用需要安裝 Python 來跑遊戲後端應用的服務器,不需要安裝 Python 的服務器,可以忽略。

CentOS6.5 默認安裝的是 Python 2.6.6 ,我們需要 2.7.x 系列的,尤其是 2.7.8 以上的,運行所需內存降了很多。所以,選擇手動編譯安裝 Python2.7.8 。

在有互聯網公網連接的情況下,使用 admin 賬號執行如下操作。

 

編譯安裝 Python:

$ cd /data/soft

$ wgethttps://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz

$ tar xzvf Python-2.7.10.tgz

$ cd Python-2.7.10

$ ./configure --prefix=/usr/local

$ make

$ sudo make install

 

安裝 setuptools

$ cd /data/soft

$ wgethttps://pypi.python.org/packages/source/s/setuptools/setuptools-15.2.tar.gz

$ tar xzvf setuptools-15.2.tar.gz

$ cd setuptools-15.2

$ sudo /usr/local/bin/python2.7 setup.pyinstall

iPython

安裝 pip

$ wgethttps://pypi.python.org/packages/source/p/pip/pip-6.1.1.tar.gz

$ tar xzvf pip-6.1.1.tar.gz

$ cd pip-6.1.1

$ sudo /usr/local/bin/python2.7 setup.pyinstall

使用 pip 安裝剩餘的需要的組件

$ sudo su

# /usr/local/bin/pip2.7 install redis

# /usr/local/bin/pip2.7 install M2Crypto

# /usr/local/bin/pip2.7 installbackports.ssl_match_hostname

# /usr/local/bin/pip2.7 install greenlet

# /usr/local/bin/pip2.7 installopenpyxl==1.7.0

 

# /usr/local/bin/pip2.7 install pysqlite

# /usr/local/bin/pip2.7 install readline

 

# /usr/local/bin/pip2.7 install tornadogevent psutil supervisor

# /usr/local/bin/pip2.7 install ipython

在沒有互聯網公網連接的情況,需要先在能聯網的機器上在 pypi.python.org 網站上將以上軟件的源碼包都下載下來,然後,複製過來,逐個解壓,並通過運行 setup.py 進行安裝。

安裝 MySQL-python

Python訪問 MySQL 數據庫,需要安裝相應的客戶端軟件包,通常會使用MySQL-python 這個軟件包,而這個包,需要 mysql 的開發文件。

可以採用如下的步驟進行安裝:

# yum install mysql-devel

# /usr/local/bin/pip2.7 installMySQL-python

安裝 Imaging

# wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz

# tar -xzvf Imaging-1.1.7.tar.gz

# cd Imaging-1.1.7

# /usr/local/bin/python2.7 setup.pyinstall

 

安裝seafile-server-4.1.2

cdseafile-server-4.1.2

./setup-seafile-mysql.sh  #運行安裝腳本並回答預設問題

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

                            spacer.gif

該腳本會依次詢問你一些問題,從而一步步引導你配置 Seafile 的各項參數spacer.gif

在這裏, 你會被要求選擇一種創建 Seafile 數據庫的方式:

-------------------------------------------------------

Please choose a way toinitialize seafile databases:

-------------------------------------------------------

 

[1] Create newccnet/seafile/seahub databases

[2] Use existingccnet/seafile/seahub databases

具體選擇哪項, 取決於你是否擁有根密碼.

l  如果選擇1, 你需要提供根密碼. 腳本程序會創建數據庫和用戶。

l  如果選擇2,ccnet/seafile/seahub 數據庫應該已經被你(或者其他人)提前創建。

 

 

 

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

spacer.gifspacer.gif

如果你選擇[2] Use existing ccnet/seafile/seahub databases,

你會被問到如下三個問題:

 

spacer.gif

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

spacer.gif

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

#treehaiwen -L 2

haiwen

├──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 toseafile-server-1.8.2

├──seahub-data

│   └── avatars

├──seahub_settings.py   # optional configfile

└──seahub_settings.pyc

seafile-server-latest文件夾爲指向當前Seafile 服務器文件夾的符號鏈接. 將來你升級到新版本後,升級腳本會自動更新使其始終指向最新的 Seafile 服務器文件夾..

啓動 Seafile 服務器和 Seahub 網站

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

啓動 Seafile:

./seafile.shstart # 啓動 Seafile 服務

啓動 Seahub

./seahub.shstart <port>  # 啓動 Seahub 網站 (默認運行在8000端口上)

小貼士:你第一次啓動 seahub 時,seahub.sh腳本會提示你創建一個seafile 管理員帳號

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

http://192.168.1.111:8000/

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

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

在另一端口上運行 Seahub

如果你不想在默認的 8000 端口上運行 Seahub, 而是想自定義端口(比如8001)中運行,請按以下步驟操作:

關閉 Seafile 服務器

./seahub.shstop # 停止 Seafile 進程

./seafile.shstop # 停止 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端口上)

 

關閉/重啓 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 進程

 

 

 

備份步驟

你所有的資料庫數據都存儲在 kaiqigu目錄。

Seafile 也在數據庫中存儲一些重要的元數據。數據庫的命名和存儲路徑取決於你所使用的數據庫。

對於 MySQL, 數據庫由管理員來創建,所以不同的人部署,可能會有不同的文件名。大體而言,有如下三個數據庫會被創建:

·        ccnet-db:包含用戶和羣組信息

·        seafile-db:包含資料庫元數據信息

·        seahub.db:包含網站前端(seahub)所用到的數據庫表信息

 

備份需要如下三步:

·        可選步: 如果你選擇 SQLite 作爲數據庫,首先停掉 Seafile 服務器;【這裏不介紹SQLite數據庫備份】

·        備份數據庫;

·        備份存放 Seafile 數據的目錄;

這裏假設你的 Seafile 數據位於 /data/kaiqigu目錄下,並且你想將其備份到 /backup目錄(/backup目錄可以是 NFS(網絡文件系統),可以是另一臺機器的 Windows 共享,或者是外部磁盤)。請在/backup目錄下創建如下目錄結構:

/backup

----databases/  包含數據庫備份

----data/  包含 Seafile 數據備份

備份數據庫

這裏建議你每次將數據庫備份到另一個單獨文件,並且不要覆蓋最近一週來備份過的舊數據庫文件。

MySQL

假設你的數據庫名分別爲ccnet-db, seafile-dbseahub-dbmysqldump會自動鎖住表,所以在你備份 MySql 數據庫的時候,不需要停掉 Seafile 服務器。通常因爲數據庫表非常小,所以執行以下命令備份不會花太長時間。

Mysqldump-h[mysqlhost] -u[username] -p[password] --opt ccnet-db >/backup/databases/ccnet-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`

 

mysqldump-h [mysqlhost] -u[username] -p[password] --opt seafile-db >/backup/databases/seafile-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`

 

mysqldump-h [mysqlhost] -u[username] -p[password] --opt seahub-db >/backup/databases/seahub-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`

備份 Seafile 資料庫數據

由於所有的數據文件都存儲在 /data/kaiqigu目錄, 備份整個目錄即可。你可以直接拷貝整個目錄到備份目錄,或者你也可以用 rsync 做增量備份。

直接拷貝整個數據目錄,

cp-R /data/kaiqigu /backup/data/kaiqigu-`date +"%Y-%m-%d-%H-%M-%S"`

這樣每次都會產生一個新的備份文件夾,完成後,可以刪掉舊的備份。如果你有很多數據,拷貝整個數據目錄會花很多時間,這時你可以用rsync做增量備份。

rsync-az /data/kaiqigu /backup/data

這個命令數據備份到 /backup/data/kaiqigu下。

讓拷貝和 rsync 過程成功結束是非常重要的,否則你最近的一些數據將會丟失。

注意: 因爲 ccnet/ccnet.conf文件中的 ID 值必須和 ccnet/mykey.peer中值的 SHA1 值保持一致。所以不要忘記拷貝 ccnet/mykey.peer文件。

恢復備份

如果你當前的 Seafile 服務器已經壞掉,將使用另一臺機器來提供服務,需要恢復數據:

·        假設在新機器中,Seafile 也被部署在了 /data/kaiqigu目錄中,拷貝 /backup/data/kaiqigu到新機器中即可。

·        恢復數據庫。

恢復數據庫

現在你已經擁有了數據庫備份文件,你可以按如下步驟來進行恢復。

MySQL

mysql -u[username] -p[password] ccnet-db <ccnet-db.sql.2013-10-19-16-00-05

 

Mysql-u[username] -p[password] seafile-db <seafile-db.sql.2013-10-19-16-00-20

 

mysql -u[username] -p[password]seahub-db.sql.2013-10-19-16-01-05

 


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