Techeek's Studio.

Nextcloud 搭建个人网盘

字数统计: 2.9k阅读时长: 11 min
2018/10/22

Nextcloud是一套用于创建网络硬盘的客户端-服务器软件。其功能与Dropbox相近,但Nextcloud是自由及开放源代码软件,每个人都可以在私人服务器上安装并运行它。与Dropbox等专有服务相比,Nextcloud的开放架构让用户可以利用应用程序的方式在服务器上新增额外的功能,并让用户可以完全掌控自己的数据。同时,Nextcloud可与在Windows、macOS或是多种Linux散布版上运行的客户端同步。Nextcloud用户可以管理日历、联系人、计划工作与流媒体。此外,用户也可以在Nextcloud上使用基于浏览器的文本编辑器、书签服务、缩略网址服务、相册、RSS阅读器与文件查看器。因为有良好的扩展性,Nextcloud可以透过鼠标点一下即可完成安装的应用程序强化其功能,并可连线至Dropbox、Google云端硬盘与Amazon S3等产品。

这款产品十分优秀,今天,我们就教大家使用腾讯云的CVM服务器来部署Nextcloud服务,并使用腾讯云的文件存储服务来存储我们的数据。为什么不用云硬盘来存储数据呢?文件存储服务有以下优点,CFS 兼容 POSIX 接口 ,可跨平台访问,并保证文件数据的一致性。用户的 CVM 实例可通过标准 NFS 协议访问 CFS 文件系统。CFS 文件系统的存储容量可弹性扩展、且不影响应用或服务。同时,文件系统的性能会随存储容量线性增长,提供高可靠、高性能的服务。CFS 可以动态分配容量而无需提前预购,您只需按实际使用量付费。CFS 的可多端共享特性也使用户无需重复购买其他的存储。CFS 标准文件存储为 3 份冗余,具有极高的可用性和可靠性。CFS 可以通过用户隔离,网络隔离,以及来访白名单来限制客户端的操作权限。在低频存储来说,CFS的优势很明显,所以我们使用CFS来存储数据。

连接服务器

首先检查你的服务器安全组设置,确保其开放SSH使用的22和HTTP访问使用80端口。然后我们通过SSH软件登录服务器,如果你本地电脑是Windows情况下可以使用putty等软件,Linux及MacOS请使用终端进行连接。

我这里以MobaXterm的终端软件为例,点击左上角的Session按钮,选择以SSH方式连接,在Remote host输入你的服务器的公网IP地址,Specify username输入你的用户名,如果你的服务器是Ubuntu系统,请输入ubuntu如果是CentOS系统则输入root。这里我们是ubuntu系统,所以我们输入ubuntu

1540179105949

点击OK后,输入你设置的密码(默认不显示),即可连接到你的服务器,你会看到类似下面的页面。

1540179191301

这样,你就进到你的服务器的页面了。

安装LNMP集成环境

LNMP是Linux+Nginx+MySql+PHP的简称,安装LNMP的步骤比较冗长,具体详细步骤可以参考如何搭建 LNMP 网站服务环境自己动手搭建,本文只简述基础安装步骤。

首先我们安装Nginx,具体命令如下

1
2
sudo apt-get update
sudo apt-get install nginx -y

安装完Nginx后,我们就可以继续安装MySQL服务了,请按照下面步骤继续

1
sudo apt-get install mysql-server -y

安装程序将要求你输入你的数据库root用户的密码,如图。

img

这里请输入你想为root用户设定的密码,我这里输入passwd为例。自己设置的时候请设置较复杂的密码。输入完成后按下回车,系统将要求你再次输入一遍刚才设定的密码,同样,输入完成后我们按下回车。安装完成mysql后,我们就可以继续安装php开发环境了。这里我们安装php-fpm、php-mysql相关软件。

1
sudo apt-get install php php-fpm php-mysql -y

这里注意,你的php版本一定要是7.0以上版本,如果使用的是Ubuntu 16.04.1 LTS系统的话,按照本教程安装的php是7.0版本。最后一步,我们需要配置Nginx支持PHP,可以按照下面的步骤继续。首先我们需要进入Nginx配置目录。在/etc/nginx/conf.d/这个目录下。

1
2
ubuntu@VM-0-7-ubuntu:~$ cd /etc/nginx/conf.d/
ubuntu@VM-0-7-ubuntu:/etc/nginx/conf.d$

接下来我们要新建一个名为default.conf的配置文件,你可以使用任意编辑器来编写,这里我使用nano编辑器进行编写,可以使用下面的命令。

1
sudo nano default.conf

然后复制下面的配置到编辑器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
listen 80;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
try_files $uri $uri/ =404;
}

location ~ .php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
# 如果你的php版本低于7.0,请将unix:/run/php/php7.0-fpm.sock;替换为127.0.0.1:9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

然后按下键盘上的Ctrl+O键然后按下回车保存,然后按下Ctrl+W退出。接下来我们需要删除nginx默认的配置文件,不然我们定义的这个文件运行会报错。首先打开/etc/nginx/sites-available目录,然后删除默认的default的文件。具体操作如下:

1
2
cd /etc/nginx/sites-available
sudo rm default

然后我们需要重启nginx以确保其正常运行,可以使用sudo service nginx restart这个命令。

1
sudo service nginx restart

没有报错证明系统一切正常,我们可以继续部署Nextcloud了。

新建CFS服务

我们可以通过在腾讯云控制台新建CFS服务。点击新建按钮,然后填下你CFS服务的名称,地域(建议与你CVM部署在同一地域下),比如你服务器部署在成都,则地域填写成都即可。

1540185382024

点击确定后,我们就可以开始使用CFS服务啦!

1540185561939

我们点击系统分配给你服务的ID,获取其他连接信息。

1540185710661

接下来,我们就可以在我们的服务器上挂载CFS服务啦,不过我们要安装一个名为nfs-common的服务。使用下面的命令进行安装。

1
sudo apt-get install nfs-common -y

安装完成后,我们需要进行挂载,首先创建一个文件夹,名称可以自定义,我这里以qcloud-cfs为例,目录创建在ubuntu用户的根目录下,为了方便数据写入,我给这个目录赋予可写入权限。

1
2
3
4
5
cd /home/ubuntu/
mkdir qcloud-cfs
sudo chown www-data:www-data qcloud-cfs
cd qcloud-cfs
pwd

执行完pwd命令,系统输出/home/ubuntu/qcloud-cfs/,这就是你当前创建的需要挂载的目录,接下来我们进行挂载,使用mount命令即可,具体如下

1
sudo mount -t nfs -o vers=4 10.**.**.33:/ /home/ubuntu/qcloud-cfs/

/home/ubuntu/qcloud-cfs/是你在本地自己创建的目录,/是指你在CFS文件系统里面创建的根目录。10.**.**.33是腾讯云CFS系统分配给你的IP。执行完成后,你的CFS系统将会自动被挂载在/home/ubuntu/qcloud-cfs/目录下,后面我们配置Nextcloud将数据全部保存在/home/ubuntu/qcloud-cfs/目录,也就是会自动保存在腾讯云CFS上。CFS并非免费产品,其是收费产品,具体计费情况如下表,如果你数据较少,我推荐你用CVM自带的云硬盘,如果数据较大,还是推荐使用CFS产品。目前CFS还是有免费优惠的,截止到 2018 年 10 月 31 日,每个 CFS 的用户(主账户和协作者账户视为一个用户 - 相同 APPID)可以享受 10 GB 的免费存储量(不区分是 NFS 文件系统还是 CIFS/SMB 文件系统),每个计费周期内若用量超出免费额度,超出部分将按阶梯价格收取费用。

地区 中国大陆 香港
阶梯价格 0 ~ 10TB 0.35 元/GB/月 (0.00048611 元/GB/时) 1 TB 以内 0.63 元/GB/月 (0.00087500 元/GB/时)
10 TB以上 0.33 元/GB/月 (0.00045833 元/GB/时) 1 TB - 10 TB 0.58 元/GB/月 (0.00080556 元/GB/时)
10 TB - 50TB 0.52 元/GB/月 (0.00072222 元/GB/时)
50 TB 以上 0.46 元/GB/月 (0.00063889 元/GB/时)

部署Nextcloud

LNMP环境搭建完成及新建CFS服务后,就可以部署Nextcloud网盘服务啦~!

下载Nextcloud

在上一步中,我们已经获取到了上传Nextcloud所需要的FTP服务账户及密码,接下来,就是下载安装Typecho的安装文件了,我们点击这里下载,点击Download Nextcloud按钮即可开始下载,本文撰写时,最新版是14.0.3版本。

1540177344486

接下来,将文件解压到本地,我们就可以继续下一步了。

上传Nextcloud

这一步,我们将Nextcloud安装包通过MobaXterm终端上传到服务器,操作很简单,只需要点击上传按钮,然后选择你的Nextcloud即可。

1540180344420

上传完成后,我们需要将刚上传的文件解压到你在LNMP中设置的root目录,我们这里定义的目录是/usr/share/nginx/html,解压完成后,我们需要将源码文件从nextcloud中抽取出来,并给你的网站目录赋予可执行权限。

1
2
3
sudo unzip nextcloud-14.0.3.zip -d /usr/share/nginx/html
sudo mv /usr/share/nginx/html/nextcloud/* /usr/share/nginx/html/
sudo chown -R www-data:www-data /usr/share/nginx/html

接下来,我们就可以访问你的服务器IP地址来安装Nextcloud了。

安装Nextcloud

当我们尝试访问你部署的服务器http://你的服务器IP/index.php,我们发现Nextcloud会报错,需要我们安装PHP zip、PHP dom、PHP XMLWriter、PHP XMLReader、PHP libxml、PHP mb multibyte、PHP GD、PHP SimpleXML、PHP cURL这些模块,具体如下。

1540181129044

我们可以使用下面的命令安装这些模块。

1
sudo apt-get install php7.0-zip php7.0-xml php7.0-curl php7.0-gd php7.0-mbstring -y

安装完成后,我们就可以正常打开http://你的服务器IP/index.php继续安装了,系统要求你提供管理账户、密码、数据库用户名、数据库密码、数据库名、及数据库地址。管理用户名及密码自定义,但一定要记清楚,这里以adminpasswd为例。数据目录就是存放你文件的目录,这里填写我们映射CFS文件的目录/home/ubuntu/qcloud-cfs/。数据库用户名填写root密码填写你安装数据库时候设置的密码。数据库名自定义,我这里以nextcloud为例。数据库地址默认localhost即可。

下载

设置完成后,点击安装完成按钮,即可完成安装。接下来,我们就可以使用Nextcloud服务啦!

1540192286913

总结

当然,这只是手动部署Nextcloud,步骤比较繁琐,适合一些不常用的系统,搭建也是一种乐趣~如果你使用的是Ubuntu系统,可以通过snap工具一键搭建Nextcloud。关于snap搭建,我推荐你去腾讯云开发者实验室进行现场的实验学习。如果想部署的更加简便更加可迁移,可以通Docker来快速搭建,这个同样可以去腾讯云开发者实验室进行学习搭建。

CATALOG
  1. 1. 连接服务器
  2. 2. 安装LNMP集成环境
  3. 3. 新建CFS服务
  4. 4. 部署Nextcloud
    1. 4.1. 下载Nextcloud
    2. 4.2. 上传Nextcloud
    3. 4.3. 安装Nextcloud
  5. 5. 总结