五步架设专属于你的Seafile云服务器
如今,云计算是热门词汇;大家都在纷纷向云迁移,哪怕大多数人甚至不知道云的实际含义。在我看来,云是个虚幻的地方,处理和存储我的数据;在此过程中,将我从存储数据的某一个设备解放出来。有了“云”,我就可以从任何联网的设备访问自己的数据。
实际上发生的是,我的数据从本地机器转移到了远程机器或者远程机器集群,数据就在那些机器进行存储和处理。
数据的这种“转移”显著改变了情况。如果我并不“拥有”那些远程机器,拥有远程机器的人也就成了我数据的“共同拥有者”。“共同拥有者”可以扫描我的私密数据,查看它有没有侵犯任何版权,可能因众多说不清道不明的原因,阻止我访问自己的数据。
过去曾发生了一起事件,微软在某用户的秘密文件夹中发现了一些令人不快的内容后,据说该公司阻止这个用户访问其自己的数据。我想知道微软在私有文件夹中做了什么?
问题是,我并不信赖第三方云提供商,诸如此类的事件进一步加强了我不信任它们的观念。
这就是为何我把自己的所有私密数据放在由我本人运行和控制的云上。我用过几种开源文件同步和存储解决方案,包括ownCloud,最近日渐了解了Seafile,它很快成了我的心头好。
几周前,我将Seafile安装到服务器上,让它成为了我的主要云。既然开源的宗旨在于分享,我就分享一下将Seafile安装到服务器上的具体步骤。
我的服务器
我在虚拟专用服务器(VPS)上运行Seafile,该服务器运行的操作系统是全面打上补丁的Ubuntu 14.04。所以给自己弄一台Ubuntu或Debian机器,不妨开始上手。
第一步:安装和保护MariaDB
我并不使用MySQL,强烈建议使用MariaDB。为了将最新版本的MariaDB即10.x(我不建议使用5.x分支版本)安装到Ubuntu上,你需要启用额外的软件库。访问该页面,即可了解为操作系统添加相应软件库的说明步骤。由于我使用Ubuntu 14.04,按照下列步骤添加了软件库:
sudo apt-get install software-properties-common sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudo add-apt-repository ‘deb http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.0/ubuntu trusty main’
更新软件库,安装MariaDB:
sudo apt-get update sudo apt-get install mariadb-server
安装过程中,MariaDB会要求输入数据库的根密码,这个根密码不同于系统根密码。输入所需的密码,才能继续下一步。
安装过程中,MariaDB会要求输入数据库的根密码,这个根密码不同于系统根密码。
现在我们需要保护数据库,但是我们先要终结数据库服务器守护进程,之后才能进入到下一步,否则你会遇到错误:
sudo killall mysqld
现在运行下面这个命令:
sudo mysql_install_db
一旦它成功运行,启动数据库服务器:
sudo service mysql start
然后运行这个命令:
sudo mysql_secure_installation
它会要求你提供根密码。在下一步,它会询问你想不想更改数据库的根密码:回答no。在其余步骤,统统回答“yes”。要是一切正常,你会看到这个信息:
Thanks for using MariaDB!(感谢使用MariaDB!)
第二步:安装Apache
现在可以安装Web服务器,并启动所需的模块了。在该服务器上,我运行Apache以及FastCGI。由于FastCGI无法通过默认的软件库来获得,于是我们只好启用Multiverse软件库。在大多数情况下,multiverse软件库出现在源列表中,但是已被注释掉(具体取决于你的VPS提供商)。打开源列表文件,去掉注释:
sudo nano /etc/apt/source.list
如果软件库不在source.list文件中,那就从Ubuntu维基的这个页面(https://help.ubuntu.com/lts/serverguide/configuration.html)添加它们。
默认的Ubuntu软件库看起来就像下面这些,不过你可能想找到更靠近你服务器的镜像,以获得更好的性能:
deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
一旦multiverse软件库被启用,运行更新,安装两个程序包:
sudo apt-get update sudo apt-get install apache2 libapache2-mod-fastcgi
然后启用这些模块:
a2enmod rewrite a2enmod fastcgi a2enmod proxy_http
第三步:配置Vhost
在我们继续下一步之前,先创建Web目录,到时我们要把Seafile程序包下载到这里。在Ubuntu上,它应该在/var/www/下。
sudo mkdir -p /var/www/directory_name
示例:
sudo mkdir -p /var/www/sea
现在我们得为seafile服务器创建一个vhost文件:
nano /etc/apache2/sites-available/your_vhost_name.conf
示例:
nano /etc/apache2/sites-available/sea.conf
该vhost文件应该看起来就像下面这样:
<VirtualHost *:80> ServerName www.your-domain-name.com # Use "DocumentRoot /var/www/html" for Centos/Fedora # Use "DocumentRoot /var/www" for Ubuntu/Debian DocumentRoot /var/www/your-directory/ Alias /media /var/www/your-directory/seafile-server-latest/seahub/media RewriteEngine On # </Location> <Location /media> Require all granted </Location> # seafile fileserver 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>
在你的vhost中,你得更改三个部分:体现URL的ServerName或你服务器的DocumentRoot;提供我们上面创建的目录的路径:Alias /media /var/www/your_directory_path/seafile-server-latest/seahub/media。
打开apache.conf文件:
nano /etc/apache2/apache2.conf
在末尾处添加这一行(别忘了更改目录的路径):
FastCGIExternalServer /var/www/your_directory_path/seahub.fcgi -host 127.0.0.1:8000
第四步:安装Seafile
先安装Seafile所需的程序包:
apt-get install python2.7 python-setuptools python-imaging python-mysqldb python-flup
现在不妨使用“cd”命令,进入到刚创建的用来安装Seafile的目录:
cd /var/www/sea/
使用wget命令将最新的Seafile程序包装入到该目录(你应该访问下载页面:http://www.seafile.com/en/download/,获得最新版本):
sudo wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_4.0.5_x86-64.tar.gz
解压缩文件:
tar xzvf seafile-server*
然后使用cd命令,进入到解压缩的“seafile-server”目录:
cd seafile-server*
运行该脚本,它会为Seafile服务器创建所需的数据库和目录:
./setup-seafile-mysql.sh
该脚本会引导你安装使用MySQL的Seafile服务器。第3步到第6步选择默认选项:
按回车键继续
1: 赋予服务器名称
2: 服务器IP或域名
3: 默认端口
4: 你想把seafile数据放在哪里?
5: 你想为seafile服务器使用哪个端口?
6: 你想为seafile文件服务器使用哪个端口?
7: 创建用户(如果你没有用户,那就选择选项[1],这会自动创建数据库和用户。)
如果你选择了选项 [1]以创建数据库,就会遇到下列选项:在选项4中,创建一个新用户,而不是使用“root”作为Seafile数据库的根用户。我在本文中创建了一个名为“seau”的用户。其余的保持原状。
1 What is the host of mysql server? [ default “localhost” ] 2 What is the port of mysql server? [ default “3306” ] 3 What is the password of the mysql root user? [ root password ] verifying password of user root … done 4 Enter the name for mysql user of seafile. It would be created if not exists. [ default “root” ] seau 5 Enter the password for mysql user “seau”: [ password for seau ] 6 Enter the database name for ccnet-server: [ default “ccnet-db” ] 7 Enter the database name for seafile-server: [ default “seafile-db” ] 8 Enter the database name for seahub: [ default “seahub-db” ]
一旦完成,脚本会显示所执行任务的摘要。
现在,我们得编辑两个配置文件了:ccnet.conf和seahub_settings.py。这些文件驻留在文档根目录中。
用所需的编辑工具打开ccnet.conf,我使用nano:
sudo nano /var/www/your-directory/ccnet/ccnet.conf
在该文件中,检查“SERVICE_URL”指向正确的域。
SERVICE_URL = http://www.your_domain.com:8000
现在,编辑第二个配置文件:
sudo nano /var/www/your-directory/seahub_settings.py
并在DATABASES前面添加下面这一行:
FILE_SERVER_ROOT = ‘http://www.your-domain.com/seafhttp’
第五步:启动服务器
首先我们要运行脚本,它将启用我们在第三步:配置Vhost进行的apache2配置里面所配置的网站。
a2ensite your_vhost_name.conf
在本文中它是:
a2ensite sea.conf
然后重启apache:
service apache2 restart
现在不妨运行Seafile服务器:
/var/www/your-directory/seafile-server-latest/./seafile.sh start /var/www/your-directory/seafile-server-latest/./seahub.sh start-fastcgi
第二个命令会要求你为Seafile服务器创建管理员帐户,这将是现有的电子邮件ID和密码。该电子邮件ID和密码将用于登录进入到你的服务器。
就是这样。一切都搞定了。
打开任何Web浏览器(建议使用Chrome),输入网站URL或服务器的IP地址。
示例:
www.seafile.com
或
10.20.11.11
打开Seafile服务器的登录页面。
这会打开Seafile服务器的登录页面。输入你在上面创建的用户名和密码,你就会登录进入到完全属于你自己的Seafile服务器!再见了,Dropbox!
Seafile服务器使用入门
Seafile使用不同的模式。不像Dropbox或ownCloud,这里的一切都是库。可以把这些库当成是目录。这些库是可使用桌面客户软件在不同的机器之间同步的内容。
你可以在默认的“My Library”里面创建所需的文件夹,也可以创建新的库,如果你在同步方面想要更灵活的话。我完全删除了默认的“My Library”,创建了几个库,比如Images、Documents、eBooks、Music和Movies等。关于Seafile的好消息就是,你可以直接从Web浏览器加密这些库。
接下来为你的操作系统下载桌面客户软件。第一次运行客户软件后,它会询问你喜欢客户软件将文件保留在哪个位置。
Seafile桌面客户软件
输入服务器的帐户详细信息。然后右击你想与这台机器同步的那个库。
Seafile桌面客户软件上的文件同步
客户软件为你提供了选项,为该文件选择所需的位置。
客户软件为你提供了选项,为该文件选择所需的位置。这是我最喜欢Seafile的一个地方,因为那样我可以将与文件夹同步的不同库放在不同的分区上。