在 RHEL/CentOS/SL 7.x/6.x 中安装带有 MySQL 数据库的 Seafile(安全云存储)
Seafile 是一款用 Python 编写的高级开源协作云存储应用程序,具有文件共享和同步支持、团队协作以及使用客户端加密的隐私保护。它构建为与在所有主要平台(Linux、Raspberry Pi、Windows、Mac、iPhone 和 Android)上运行的客户端同步的多平台文件,并且可以轻松与 LDAP 和 WebDAV 等本地服务集成,或者可以使用高级功能进行部署网络服务和数据库,如 MySQL、SQLite、PostgreSQL、Memcached、Nginx 或 Apache Web Server。
本教程将指导您在部署了 MySQL 数据库的 RHEL/CentOS/Scientific Linux 7.x/6.x 上逐步安装 Seafile Server,并启动 init > 用于在默认 Seafile 端口 (8000/TCP) 和默认 HTTP 事务端口 (80/TCP) 上运行服务器的脚本,创建必要的防火墙规则以打开所需端口。
要求
- 使用静态 IP 地址的最小 CentOS 6.5 安装。
- MySQL/MariaDB 数据库
- Python 2.6.5+ 或 2.7
- Python 安装工具
- Python-simplejson
- Python 成像
- Python-mysqldb
此安装过程在 CentOS 6.4 64 位 系统上进行了测试,但也可以在其他 Linux 发行版上使用,但不同发行版的 init 启动脚本有所不同。
第 1 步:安装 Python 模块
1. 首先进行系统更新,然后使用以下命令安装所有必需的 Python 模块。
yum upgrade
yum install python-imaging MySQL-python python-simplejson python-setuptools
2. 如果您使用 Debian 或 Ubuntu 服务器,请使用以下命令安装所有 Python 模块。
sudo apt-get update
sudo apt-get install python2.7 python-setuptools python-simplejson python-imaging python-mysqldb
第2步:安装Seafile服务器
3.安装完所有Python模块后,创建一个具有强密码的新系统用户,该用户将用于托管Seafile服务器配置及其主目录中的所有数据,然后切换到新创建的用户帐户。
adduser seafile
passwd seafile
su - seafile
4.然后登录MySQL数据库并创建三个数据库,每个Seafile Server组件一个:ccnet服务器,seafile服务器和seahub 使用单个用户访问所有数据库。
mysql -u root -p
mysql> create database `ccnet-db`;
mysql> create database `seafile-db`;
mysql> create database `seahub-db`;
mysql> create user 'seafile'@'localhost' identified by 'password';
mysql> GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@`localhost`;
mysql> GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@`localhost`;
mysql> GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@`localhost`;
mysql> FLUSH PRIVILEGES;
mysql> exit;
5.现在是时候下载并安装Seafile Server了。转到 Seafile 官方下载页面,使用 wget 命令获取适合您的服务器架构的最新 .Tar Linux 存档版本,然后将其解压到之前创建的家庭 Seafile 用户并输入 Seafile提取的目录。
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.0.4_x86-64.tar.gz
tar xfz seafile-server_3.0.4_x86-64.tar.gz
cd seafile-server_3.0.4/
6. 要使用 MySQL 数据库安装 Seafile Server,请运行 setup-seafile-mysql.sh 初始化脚本并使用以下配置选项回答所有问题,在脚本验证是否存在后所有 Python 所需的模块。
./setup-seafile-mysql.sh
- 您的服务器的名称是什么?=选择一个描述性名称(不允许有空格)。
- 服务器的IP或域名是什么?=输入您的服务器IP地址或您的有效域名。
- 您想将哪个端口用于 ccnet 服务器?=点击 [Enter] – 保留默认值 – 10001。
- 您想将 Seafile 数据放在哪里?=点击 [Enter] – 默认位置将是您的 $HOME/seafile-data 目录。
- 您想将哪个端口用于 Seafile 服务器?=点击 [Enter] – 保留默认值 – 12001。
- 您想将哪个端口用于seafile httpserver?=点击 [Enter] – 保留默认值 – 8082。
- 请选择一种初始化 Seafile 数据库的方式:=选择 1 并提供默认 MySQL 凭据:localhost、3306 和 root 密码。
- 输入seafile的MySQL用户名:=seafile(如果您创建了其他用户名,请输入该用户名)和seafile MySQL用户密码。
- 在 ccnet-server、seafile-server 和 seahub 数据库上,只需按 [Enter] 键 – 默认。
Seafile Server 成功安装后,它将生成一些有用的信息,例如需要在防火墙上打开哪些端口以允许外部连接以及要处理哪些脚本才能启动服务器。
步骤 3:打开防火墙并创建 Seafile 初始化脚本
7. 在从本地脚本启动 Seafile 服务器进行测试之前,请更改回 root 帐户并打开位于 的 iptables 防火墙文件配置/etc/sysconfig/ 系统路径并在第一个 REJECT 行之前添加以下行规则,然后重新启动 iptables 以应用新规则。
su - root
nano /etc/sysconfig/iptables
附加以下规则。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8082 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 12001 -j ACCEPT
使用以下命令重新启动 iptables 以应用规则。
service iptables restart
注意:如果您在安装过程中更改了 Seafile 标准端口,请相应更新您的防火墙 iptables 规则。
8. 现在是时候测试 Seafile 服务器了。切换到 Seafile 用户和 seafile-server 目录,并使用 seafile.sh 和 seahub.sh 脚本启动服务器。
第一次启动 seahub.sh 脚本时,请使用您的电子邮件地址为 Seafile Server 创建一个管理帐户,并为管理员帐户选择一个强密码,特别是当您在生产环境中部署此配置时。
su - seafile
cd seafile-server-latest/
./seafile.sh start
./seahub.sh start
9.服务器成功启动后,打开浏览器并使用HTTP协议导航到端口8000上的服务器IP地址或域名,然后使用您创建的管理员帐户登录在上述步骤上。
http://system_IP:8000
OR
http://domain_name:8000
10.首次配置测试后,停止 Seafile 服务器并创建一个 init 脚本,该脚本将帮助您更轻松地管理整个进程,就像任何其他 Linux 系统守护进程一样。
./seafile.sh stop
./seahub.sh stop
su - root
nano /etc/init.d/seafile
在此 init 脚本上添加以下内容 - 如果 Seafile 安装在其他系统用户上,请确保在 su – $USER -c 行上相应地更新用户和路径。
#!/bin/sh
#chkconfig: 345 99 10
#description: Seafile auto start-stop script.
source function library
. /etc/rc.d/init.d/functions
start() {
echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
su - seafile -c "seafile-server-latest/seahub.sh start"
}
stop() {
echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
su - seafile -c "seafile-server-latest/seahub.sh stop"
}
restart() {
echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
su - seafile -c "seafile-server-latest/seahub.sh stop"
echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
su - seafile -c "seafile-server-latest/seahub.sh start"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 start stop restart"
;;
esac
11.创建init文件后,确保其具有执行权限并使用start、stop 和重新启动 开关。现在您可以使用 chkconfig 命令在系统启动时添加 Seafile 服务。
chmod +x /etc/init.d/seafile
service seafile start
service seafile stop
service seafile restart
chkconfig seafile on | off
chkconfig --list seafile
12. 默认情况下,Seafile 服务器使用 8000/TCP HTTP 端口进行 Web 事务。如果您想从标准 HTTP 端口上的浏览器访问 Seafile 服务器,请使用以下 init 脚本,该脚本会在端口 80 上启动服务器(请注意,在以下端口上启动服务 < b>1024 需要 root 权限)。
nano /etc/init.d/seafile
在此 init 脚本上添加以下内容,以在标准 HTTP 端口上启动 Seafile。如果 Seafile 安装在其他系统用户上,请确保在 su – $USER -c 和 $HOME 行上相应地更新用户和路径。
#!/bin/sh
#chkconfig: 345 99 10
#description: Seafile auto start-stop script.
source function library
. /etc/rc.d/init.d/functions
start() {
echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
## Start on port default 80 http port ##
/home/seafile/seafile-server-latest/seahub.sh start 80
}
stop() {
echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
/home/seafile/seafile-server-latest/seahub.sh stop
}
restart() {
echo "Stopping Seafile process..."
su - seafile -c "seafile-server-latest/seafile.sh stop"
/home/seafile/seafile-server-latest/seahub.sh stop
echo "Starting Seafile server..."
su - seafile -c "seafile-server-latest/seafile.sh start"
/home/seafile/seafile-server-latest/seahub.sh start 80
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 start stop restart"
;;
Esac
13.如果您之前在端口 8000 上启动 Seafile,请确保所有进程都已终止,然后在端口 80 上启动服务器。
chmod +x /etc/init.d/seafile
service seafile start | stop | restart
打开浏览器并将其定向到以下地址。
http://system_ip
OR
http://domain_name.tld
14. 您还可以使用 netstat 命令验证 Seafile 正在哪些端口上运行。
netstat -tlpn
就是这样! Seafile 可以轻松取代其他云协作和文件同步平台,例如公共 Dropbox、Owncloud、Pydio、OneDrive 等在您的组织中,旨在实现更好的团队合作并通过用户空间的高级安全性完全控制您的存储。
在我即将发表的文章中,我将介绍如何在 Linux 和 Windows 系统上安装 Seafile 客户端,并向您展示如何连接到 Seafile 服务器。届时请继续关注Tecmint,别忘了提出您的宝贵意见。