安装个人网络硬盘Nextcloud
用nextcloud给自己打造一个专属于私人的网络云硬盘,拥有自己的Dropbox,Google Drive,Onedrive,百度网盘等。
安装环境:Debian 9.0
需要一个域名和一个域名解析服务:域名推荐免费域名(www.freenom.com)进行练手,域名解析国外的比如cloudflare等。
需要一个VPS,至少500MB内存,10G的硬盘空间。
因为会用到域名,所以本文会涉及到安装Apache,MariaDB,PHP7。本文在root下进行安装,普通用户自行在代码前增加sudo。
第一步,系统更新和升级
在安装之前先对Debian系统进行更新和升级,使用如下代码:
1 2 3 |
apt update apt upgrade |
第二步,安装apache网络服务器
1 |
apt install apache2 apache2-utils |
安装完成之后,运行以下代码查看是否运行正常:
1 |
systemctl status apache2 |
看到绿色的Active(Running)表明apache已安装成功
最好也能设置apache开启自启动:
1 |
systemctl enable apache2 |
查看apache的安装版本号:
1 |
apache2 -v |
应显示:
Server version: Apache/2.4.25 (Debian)
Server built: 2017-07-18T18:37:33
如果安装了防火墙,则需要设立防火墙规则,详见此文。
现在如果输入VPS的公共IP地址,应该看到如下图示:
如果不知道IP地址,可用以下代码显示:
1 2 |
apt install curl curl http://icanhazip.com |
如果nextcloud是安装在本地电脑上,则在浏览器地址栏里输入127.0.0.1
或者localhost
接下来,需要把www-data(apache用户)设置成网站拥有root权限的用户,因为初始设置的时候默认的是vps的root用户:
1 |
chown www-data:www-data /var/www/html/ -R |
第三步,安装MariaDB数据库服务器
1 |
apt install mariadb-server mariadb-client |
安装完成后MariaDB应该会自动运行,可以用以下代码查看状态:
1 |
systemctl status mariadb |
系统应该返回如下结果:
● mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2017-08-13 03:05:17 UTC; 1min 37s ago
Main PID: 16127 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
└─16127 /usr/sbin/mysqld
如果系统没有自动运行,可以用以下代码启动:
1 |
systemctl start mariadb |
可以让系统开机自启动:
1 |
systemctl enable mariadb |
运行以下代码安装安全程序:
1 |
mysql_secure_installation |
MariaDB会问你root密码,因为尚未设置,直接按回车键
按如下截图回答问题:
记下刚才设置的root密码。
使用如下代码检测MariaDB是否安装成功:
登陆MariaDB数据库:
1 |
mariadb -u root |
退出数据库:
1 |
exit; |
检查MariaDB数据库的版本号:
1 |
mariadb --version |
第四步,安装PHP7
使用如下代码进行安装:
1 |
apt install php7.0 libapache2-mod-php7.0 php7.0-mysql php-common php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline |
打开apache php7.0模块,并重启网络服务器:
1 2 |
a2enmod php7.0 systemctl restart apache2 |
安装完成后,可使用如下代码查看是否安装成功:
1. 查看php的版本号:php --version
2. 在web root目录下新建info.php文件:nano /var/www/html/info.php
a. 在文件里输入:
1 |
<?php phpinfo(); ?> |
保存退出,在浏览器里输入vps IP地址/info.php, 如果是本地安装,则vps IP替换为127.0.0.1或者localhost。
当见到如图所示的页面后,说明php已经安装成功:
安全起见,看到该页面后,需要把info.php从vps里删掉:
1 |
rm /var/www/html/info.php |
这样LAMP就装好了,下面开始讲安装nextcloud。
第五步,下载nextcloud
首先去https://nextcloud.com/install/
页面,在Get Cloud Server
下点击Download
,在弹出的页面上右键点击Download Nextcloud
,选择复制链接地址
或Copy Link Location
。
在ssh下输入以下代码,链接地址使用自己复制的nextcloud链接地址:
1 |
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.5.zip |
需要用unzip将包解压到/var/www/
目录下:
1 2 |
apt install unzip #安装unzip unzip nextcloud-*.zip -d /var/www/ #使用通配符*,这样可以不用输入后面的版本号 |
接下来把前面第二步设的apache用户www-data设置成/var/www/nextcloud/
这个文件夹的所有人:
1 |
chown www-data:www-data /var/www/nextcloud -R |
第六步,在MariaDB里新建数据库和数据库用户
登陆MariaDB数据库:
1 |
mariadb -u root |
给数据库取名,可以取任意名字,这里取名nextcloud:
1 |
create database nextcloud; |
新建一个数据库用户,可取任何名字,这里取名nextclouduser,及其密码,并赋予其nextcloud的所有权力,可以自己定义上述参数:
1 |
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password'; |
然后末尾添上两句,把参数冲掉:
1 2 |
flush privileges; exit; |
第七步,设置binary登陆MariaDB
编辑MariaDB的配置文件:
1 |
nano /etc/mysql/mariadb.conf.d/50-server.cnf |
找到[mysqld]
字位,并将以下三行全部替代:
1 2 3 |
log-bin = /var/log/mysql/mariadb-bin log-bin-index = /var/log/mysql/mariadb-bin.index binlog_format = mixed |
binary日志的格式必须是mixed。保存退出设置文件,然后重启MariaDB:
1 |
systemctl restart mariadb |
第八步,为nextcloud创建一个apache虚拟host文件
在/etc/apache2/sites-available
目录下新建nextcloud.conf
文件:
1 |
nano /etc/apache2/sites-available/nextcloud.conf |
将以下代码贴到上面的文件中,将第三行nextcloud.your-domain.com替换为自己注册的域名:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<VirtualHost *:80> DocumentRoot "/var/www/nextcloud" ServerName nextcloud.your-domain.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud Satisfy Any </Directory> </VirtualHost> |
保存退出文件后,运行以下代码使设置文件生效:
1 |
a2ensite nextcloud |
同时需要设置一些apache模块:
1 |
a2enmod rewrite headers env dir mime setenvif ssl |
以及php模块:
1 |
apt install php7.0-common php7.0-mysql php7.0-gd php7.0-json php7.0-curl php7.0-zip php7.0-xml php7.0-mbstring |
最后重启apache,以使安装的模块生效:
1 |
systemctl restart apache2 |
这时候可以用浏览器访问你的域名了,不出问题网页将显示nextcloud界面。
为了确保网站安全,可以给它做上ssl证书,即自带https协议。
第九步,安装ssl证书
先安装cerbot:
1 2 3 |
wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto apt install certbot python-certbot-apache |
然后运行如下代码:
1 |
certbot --authenticator webroot --webroot-path /var/www/nextcloud --installer apache |
–webroot-path /var/www/nextcloud即为第八步设的nextcloud储存地址。安装时会询问是否允许http和https两种访问方式或者默认https访问,看自己喜好选择哪种。
如果不灵,参考该文档,选择apache和自己安装的系统。
安装完成后,如果输入你的域名就会发现网址自动加上https协议。
最后一步,给nextcloud设置用户名
设立管理员账号,需要新建一个文件夹,作为网盘文件夹。
(可选,因为发现安装时nextcloud路径下已经有data文件夹)安全起见,文件夹不应放在网盘root路径下,比如可以放在/var/www/nextcloud-data路径下,可用以下代码实现:
1 |
mkdir /var/www/nextcloud-data/ |
用apache的root用户(www-data)(见第二步)将新建的文件夹设置成可写权限:
1 |
chown www-data:www-data /var/www/nextcloud-data -R |
然后用第六步设立的数据库名,数据库用户名,数据库用户密码填入网页相关栏里,新建admin管理员用户和密码,登陆后,nextcloud就创立完成了,以后可以直接以管理员用户登陆。
nextcloud还有网页和手机客户端,这时我们就真正具备了一个自己私人的网络硬盘了。
本文参考以下两篇英文文章: