在VPS上安装宝塔面板和部署LNMP套件并搭建Nextcloud私有云存储网盘的图文教程

2016伴随着国家净网行动的影响下,国内网盘市场进行了一次大撤退,UC网盘、新浪微盘、腾讯微云、迅雷快盘(原金山快盘)、华为网盘(原DBank数据银行)、360云盘等相继宣布退出个人云存储市场,115网盘关闭分享功能,沦为私有云盘,以会员制和内部分享模式运营,据传已经成为了看“小姐姐”的专属影院,一时间国内云盘市场一片哀嚎。其背后原因还是盈利不模式不清晰,持续的亏损让巨头也不堪重负,遂弃用户而去。坚持运营至今的有百度网盘、天翼云盘、和彩云、永硕E盘、蓝奏云和城通网盘等,还有后起之秀的坚果云,主打文件同步和协同办公。百度网盘背靠百度这棵大树而一枝独秀,占据了绝对的市场霸主地位;天翼云盘、和彩云都是国家队,前者主打企业级市场而表现不俗,后者基本可以忽略;永硕E盘是非常持久的一家中小型数据存储公司,应该是众网盘中活的最久远的了;蓝奏云盘算是百度网盘的一个很好的主打分享功能的替代品,主打小文件分享,不限速,用户下载体验很好;城通网盘靠广告模式一直活着,不过很坑爹,非常不推荐使用。与此同时,国外云存储市场确实依然稳步发展,比如出名的有DropBox、Box、Google Drive和OneDrive(原微软SkyDrive) 等,但国内用户访问非常不友好,只有OneDrive偶尔还可以访问,但是也极不稳定。伴随硬件技术和云计算的发展,2018年底原已退出市场的云存储服务商又相继重新杀入了个人云存储市场,但是很少有用户再买单了,因为已经对他们失去了最基本的信任。家庭私有云和NAS的云存储方案逐渐为大众所接受,并逐渐进入了人们的视野,大有成为未来主流的趋势。本文就介绍如何在VPS上安装宝塔面板和部署LNMP套件并搭建Nextcloud私有云存储网盘。

1、Nextcloud简介

(1)Nextcloud是什么?

Nextcloud官网:https://nextcloud.com/

Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Mac、Android、iOS、Linux 等各种平台,也提供了网页端以及 WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。

Nextcloud也提供了许多应用安装,包括但不限于Markdown在线编辑、OnlyOffice(需另外部署服务端)、思维导图、日历等,你可以自行选择以丰富个人网盘的功能。

(2)Nextcloud和ownCloud是什么关系?

Nextcloud源自于ownCloud,是自ownCloud商业化之后的一个100%开源免费的分支,修复了很多bug,并开发了很多的新功能,可以说是比ownCloud更强大。

(3)优秀的开源云存储网盘项目还有哪些?

Nextcloud开源云存储网盘项目天生不凡,但是除此之外,还有Seafile可道云(KodExplorer)Cloudreve,都是非常优秀的开源云存储网盘项目。Nextcloud是全能型选手,功能强大,而Seafile和KodExplorer开源版本对功能限制稍多;Seafile主打文件同步和协同办公,是国内团队的非常优秀的作品;可道云(KodExplorer)是国产的轻量级云存储网盘,主打私有云存储和协同办公,界面和操作方式均与Windows资源管理器一致,小白也可以轻松上手,而且只依赖PHP既可运行,不需要数据库,跨平台可移植性非常强悍,无可匹敌;Cloudreve助您以最低的成本快速搭建公私兼备的网盘系统,因为是国人开发的,比较符合国人操作习惯,比Nextcloud要轻量易用,主要特色就是支持多家第三方云存储,比如七牛、又拍云、阿里云OSS、AWS S3、Onedrive等

2、如何在VPS上搭建Nextcloud私有云存储网盘?

对于一个全新的Linux系统来说(以 Debian9服务器、宝塔面板7.1.0和Nextcloud18进行演示),部署的流程如下:安装BT宝塔面板 –> 安装LNMP/LAMP运行环境 –> 部署Nextcloud云存储服务 –> 配置Nextcloud服务器,跟搭建常规网站几乎是一样的。当然,你也可以不安装宝塔面板,但是对于我这种小白来说,我是比较喜欢安装宝塔面板,这样更易于操作和维护。(如果你是对技术一点都不懂的纯小白或者懂一点的灰白,那么推荐你用Vultr的一键部署应用功能,轻松快捷地安装部署Nextcloud,无需你进行任何其他的配置操作,但是你需要购买Vultr的VPS才行。

(1)安装宝塔面板

首先使用 SSH 连接工具,如使用Xshell连接到您的 VPS Linux 服务器后,根据系统执行相应命令开始安装(大约2分钟完成面板安装):

Centos安装脚本:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

Ubuntu/Deepin安装脚本:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

Debian安装脚本:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

Fedora安装脚本:

wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

当宝塔面板安装完成之后,会自动生产宝塔面板Web端登录地址、用户名和密码,我们需要先保存下来。如下图所示:

(2)安装LNMP套件运行环境

登录宝塔面板的Web后台管理界面,第一次登录会弹出安装LNMP/LAMP集成环境的提示,我们这里以安装LNMP为例演示,如下图所示:

对于各组件的版本,一般保持默认即可,我推荐MySQL5.6,内存太小就用MySQL5.5,推荐PHP7.2,然后点击“编译安装”或“极速安装”,“极速安装”会比较快,“编译安装”需要对LNMP组件重新编译后安装,速度非常慢,稳定性较好,一般情况下,“极速安装”也是非常稳定的。点击安装按钮之后,我们需要等待组件安装完毕,一般需要10分钟到几个小时不等。

(3)创建Nextcloud私有云存储网盘网站

当LNMP环境安装完毕后,我们就可以创建Nextcloud云存储网站了。首先我们需要先创建网站,点击宝塔面板后台左侧的“网站”菜单,然后点击“添加站点”,填写详细网站域名和数据库信息,建议你同时开启SSL并启用“强制HTTPS”访问。如下图所示:

(4)上传Nextcloud程序源码到网站空间

Nextcloud程序源码下载地址:https://nextcloud.com/install/#instructions-server

网盘分流下载:https://pan.baidu.com/s/1FzrCwSjLkzhZBz2Zvt7iqw(提取码: 924v)

首先,我们需要把Nextcloud程序源码上传到网站根目录,有以下三种方法:

方法1:将Nextcloud程序源码下载到本地计算机,然后再上传到网站服务器;

方法2:使用Nextcloud的 Web Installer 远程安装;

方法3:使用Nextcloud官方提供的VM虚拟机技术Appliances方式安装,其实就是使用一键脚本远程安装Nextcloud预先封装好的系统镜像,直接安装到Linux系统就可以直接使用Nextcloud云存储服务了。

我们这里使用方法1跟宝塔面板“远程下载”相结合的方式进行安装,首先我们进入网站根目录,然后点击“远程下载”。如下图所示:

稍等片刻,Nextcloud程序源代码会自动下载到网站根目录,然后解压到Nextcloud云存储网站根目录下即可。解压完毕后,将所有源码文件移动到Nextcloud网站根目录,如“wwwroot/nextcloud.iyideng.com/index.php”这样的层级结构,然后就可以访问域名进行安装了。

注意事项:如果使用宝塔面板安装Nextcloud,由于宝塔在创建网站的时候会自动生成 .htaccess 和 .user.ini 两个文件,所以我们需要先删除上述两个文件后,再上传Nextcloud包中的全部内容。必须确保 .htaccess 和 .user.ini 两个文件的对所有者“www”的权限是777(一定要可执行),宝塔默认是使用root账户,不是“www”用户权限!!!我是建议在正式安装之前,把整个Nextcloud网站目录权限全部设置对“www”用户的权限是777,安装完成后,再全部设置为755即可,这样可以避免后续出现很多的问题。

(5)安装Nextcloud程序

首先,我们先对域名nextcloud.iyideng.com开启SSL加密,然后直接访问https://nextcloud.iyideng.com进入安装向导页面,如下图所示:

在上图中点击“Next”进入网站配置页面,然后设置Nextcloud管理员账号信息和数据库,完成后进入网站管理后台页面,如下图所示:

至此,我们的Nextcloud网盘的基本搭建就完成了。

(6)配置Nextcloud服务器环境

1)添加SWAP虚拟缓存

依次选择“宝塔面板”-“软件商店”-“系统工具”-“Linux工具箱”,设置SWAP值为 1024;

2)安装PHP拓展

依次选择“宝塔面板”-“软件商店”-“运行环境”-“PHP 7.2”(选择你安装的PHP版本),安装扩展phpinfo、fileinfo、opcache、redis、imagemagick,其中phpinfo是默认安装的。如下图所示:

3)设置PHP配置文件

“宝塔面板”-“软件管理”-“php-7.2管理”-“配置文件”,添加以下配置(大约在第1910行前后):

opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

重启PHP后生效。效果如下图所示:

4)设置“PHP上传限制”、“超时限制”和“配置修改”

“PHP-7.2管理”的“上传限制”设置为10240M,“超时限制”设置为3600秒,“配置修改”如下图所示:

5)配置内存缓存

依次选择“宝塔面板”-“文件”-“/www/wwwroot/你的域名/config/config.php”-“编辑”,在最后一个“ ); ”之前添加如下代码:

'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),

添加后,效果如下图所示:

当执行完以上操作后,我们重启PHP,然后去检测“系统和安全问题”,具体操作步骤:点击最右上角的“圈A”图标,然后选择“设置”,找到左侧主菜单“管理”的子菜单“概览”,稍等片刻即可看到“安全及设置警告”的检测结果。如下图所示:

上图是未对Nextcloud详细配置时,检测“系统和安全问题”后的“安全及设置警告”截图。

3、配置Nextcloud的常见问题及解决方法

(1)PHP 内存限制低于建议值 512MB。

(2)内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见文档

(3)未找到 PHP 的 “fileinfo” 模块。强烈推荐启用该模块,从而获得更好的 MIME 类型探测结果。

(4)PHP 的 Opcache 模块未载入。推荐开启获得更好的性能。

(5)该实例缺失了一些推荐的 PHP 模块。为提高性能和兼容性,我们强烈建议安装它们。

  • imagick

(6)PHP 的组件 OPcache 没有正确配置。 为了提供更好的性能,我们建议在 php.ini中使用下列设置:

opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

上述1-6的问题,我们在前面配置Nextcloud过程中已经处理好了,然后我们还要对7-13的问题进行逐个解决。

(7)您的数据目录和文件可以从互联网直接访问。.htaccess 文件不起作用。强烈建议您配置 Web 服务器,以便数据目录不再可访问,或者你可以将数据目录移动到 Web 服务器文档根目录。

解决方法:修改Nextcloud网站配置文件,添加Nextcloud常用目录禁止访问即可,加入下列代码:

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}

效果如下图所示:

(8)PHP 的安装似乎不正确,无法访问系统环境变量。getenv(“PATH”) 函数测试返回了一个空值。 请参照安装说明文档 ↗中的 PHP 配置说明查阅您服务器的PHP配置信息,特别是在使用 php-fpm 时。

解决方法:依次选择“宝塔面板”-“文件”,找到/www/server/php/72/etc/php-fpm.conf,在其尾部添加如下代码:

env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin

保存后重启,成功解决问题。效果如下图所示:

(9)HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒。为了提高安全性,建议参照security tips 中的说明启用HSTS。

解决方法:通过宝塔面板在站点配置文件增加以下代码:

add_header Strict-Transport-Security "max-age=63072000;";

效果如下图所示:

(10)您的网页服务器未正确设置以解析“/.well-known/caldav”。更多信息请参见文档

您的网页服务器未正确设置以解析“/.well-known/calddav”。更多信息请参见文档

解决方法:以上两个问题可以在一起解决,你只需要在宝塔面板的Nextcloud网站伪静态添加以下两行代码:

rewrite /.well-known/carddav /remote.php/dav permanent;
rewrite /.well-known/caldav /remote.php/dav permanent;

效果如下图所示:

(11)数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复。您可以在 Nextcloud 运行时通过命令行手动执行 “occ db:add-missing-indices” 命令修复丢失的索引。索引修复后会大大提高相应表的查询速度。

  • 在数据表 “oc_calendarobjects_props” 中无法找到索引 “calendarobject_calid_index”。
  • 在数据表 “oc_schedulingobjects” 中无法找到索引 “schedulobj_principuri_index”。

解决方法:上述问题是由于数据库的一些索引丢失导致的,用OCC修复一下即可。OCC是Owncloud的命令行,而Nextcloud是基于owncloud开发的分支,所以用OCC来修复丢失的数据库索引即可。由于必须用“www”用户执行修复命令,所以执行sudo命令切换至“www”用户执行OCC命令修复。修复命令为:

sudo -u www php occ db:add-missing-indices

首先需要SSH连接到服务器的Nextcloud根目录(如”/www/wwwroot/nextcloud.iyideng.com/”),并执行上述修复命令,如下图所示:

(12)数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。您可以通过命令行手动执行 “occ db:convert-filecache-bigint” 命令以应用挂起的更改。该操作需要当整个实例变为离线状态后执行。查阅相关文档以获得更多详情。

  • mounts.storage_id
  • mounts.root_id
  • mounts.mount_id

解决方法:上述问题也是由于数据库的问题,按照上述提示,用OCC修复一下即可。OCC是ownCloud的命令行,而Nextcloud是基于ownCloud开发的分支,所以用OCC来修复丢失的数据库缺失问题。由于必须用“www”用户执行修复命令,所以执行sudo命令切换至“www”用户执行OCC命令修复。用SSH连接到服务器Nextcloud根目录(如”/www/wwwroot/nextcloud.iyideng.com/”),然后执行修复命令:

sudo -u www php occ db:convert-filecache-bigint

程序会询问是否继续执行这项操作,可能需要几个小时,具体取决于文件数量!输入y,回车,继续转换~程序会在后台自动转换,不用担心,如下图所示:

(13)Your Data directory is invalid 请确保文件根目录下包含有一个名为“.ocdata”的文件。

这个问题是Nextcloud网站在安装的时候权限不足导致的,所以在网站正式安装之前,将所有文件对“www”用户的权限设置为777,然后再安装,安装完毕之后全部调回755,是不会出现这个问题的。

我们已经完美处理完所有的问题,并再次检测“系统和安全问题”,“安全及设置警告”中显示“所有检查已通过”,结果如下图所示:

至此,教程结束。如果你有什么不解、疑惑或者建议,都可以留言交流。

发表评论

电子邮件地址不会被公开。 必填项已用*标注