如何使用服务器快速给自己搭建Nextcloud私人网盘?
本文最后更新于 2023年9月17日 上午
前言
有时候,我们需要团队合作一同处理文件;虽然有腾讯文档之类的在线写作平台,但是如果我们想协同处理视频该怎么办?又或者,我们只想建立一个家庭私有云,存一些生活点滴照片,且不希望被限速?也许,你可以试试自己搭建Nextcloud网盘,尤其是自己有台服务器,想充分利用的情况下。
本篇教程,同步发布于:
什么是NextCloud
Nextcloud是owncloud的一个分支版本,同样基于PHP
语言构建,相对于owncloud,Nextcloud提供更多个性化,当然也会相对更占用一些资源。Nextcloud主要提供的功能:
- 多人协同合作
- 云盘存储,支持密码和设置分享失效时间
- 多平台App支持(iOS、Android等)
同时,你也可以用Nextcloud建立直接的家庭影院,比如:
基础前提
首先,Nextcloud是搭建在自己个人服务器上(当然,你也可以搭建在本地树莓派设备,方法差不多,本文讲部署在轻量级服务器),所以需要一台服务器。
如果你并没有Linux设备,需要一个Linux设备来练手,强烈推荐:
另外,为大家争取到优惠*(੭ˊᵕˋ)੭ଘ:
软件方面支持,考虑到大部分人用Linux少,网站环境LEMP
配置不方便,所以本文使用宝塔面板部署
视频教程
和以前一样,我们觉得有用、有必要录个视频的内容,我们还是会花时间做个视频:
感觉有用,可以给视频投个币么?( ´▽`):视频原链接
服务器搭建宝塔面板
虽然腾讯云有提供宝塔面板版本系统镜像,但是还是推荐系统选择Debian/Ubuntu
或者Centos
这样大众化的Linux镜像:
在你本地SSH连接服务器后,本地访问宝塔官网,根据自己服务器系统,即可安装宝塔面板:
之后,你还需要做:
- 腾讯云轻量服务器后台放行宝塔端口(默认:8888)
- 更改宝塔面板密码和账号(终端输入bt即可更改)
另外,建议腾讯云轻量服务器后台端口放行全部端口,因为宝塔也自带防火墙。
安装LAMP环境
安装好并打开宝塔后,即可安装LEMP(Linux、Nginx、Mysql和PHP),但是如果你想安装高版本Nextcloud,需要:
Mysql
选择8.0以上版本PHP
选择7.2以上版本
本文安装的Nextcloud版本为最新版本(v20),所以使用Mysql8.0+PHP7.3
Mysql8.0
安装高占内存,如果你的内存,并没有4G,且CPU性能不是很强劲。可以试试适当增加snap虚拟内存,来临时提升内存。
添加/创建网站
其中:
- 数据库选择Mysql(也就是刚刚安装的Mysql8.0+)
- PHP版本选择非静态(也就是选择刚刚安装的PHP7.2+)
- 如果没域名解析到服务器,可以填IP
- 大陆服务器要绑定域名记得域名备案
安装Nextcloud
之后,我们进入Nextcloud的下载页面下载Nextcloud的打包文件:Nextcloud下载地址
并上传到网站根目录:
之后,我们使用宝塔面板自带的解压功能,解压文件并移动至网站根目录:
初始化Nextcloud
之后,根据前文所设置的域名或IP端口,浏览器访问即可进入Nextcloud初始化页面,设置管理员用户和之前创建的数据库信息即可:
初始化完成,即可使用Nextcloud了:
如果你的初始化频繁出现502 Nginx错误,且刷新网站后,有让你重新输入用户名和密码、数据库信息来初始化,一般是因为PHP连接超时(CPU处理过慢,导致连接时间过长,PHP以为程序未响应提前中断连接导致Nextcloud建立数据库表未完全)。解决办法:
- 删除已经创建的数据库表
- 到PHP设置内,将超时限制调大(默认是100秒就超时断开连接);并重载PHP配置
- 重新初始化
如果你是宝塔面板安装的PHP,超时限制可以在这里进行调整:
但是接下来进入设置查看:
这些是Nextcloud的自检,可以不用处理,但是为了提升体验和安全性,最好处理一下。
内部错误和警告的解决方法
一些常见Nextcloud内部错误解决方法,建议使用浏览器搜索功能进行定位
通过HTTP访问网站不安全。强烈建议您将服务器设置成要求使用HTTPS协议
这个问题最好解决,同时也可能是无法解决问题:
服务器绑定域名,并配置SSL证书,域名解析到服务器即可
但是:国内服务器需要绑定备案的域名
,若无备案域名,则只能使用IP访问Nextcloud,那么该条警告无法去除。
一些文件没有通过完整性检查. 了解如何解决该问题请查看我们的文档. (无效的文件列表… / 重新扫描…)
你的无效的文件列表和我的可能不一样,但是方法是一样的,打开(无效的文件列表… / 重新扫描…)
这个链接:
上面提示的这些文件需要删除,所以打开nextcloud的安装地址,也就是Nginx所代理的网站更目录,删除“提示的无效文件“即可:
如果你使用宝塔面板,可以进入宝塔面板后台,然后使用宝塔的图形界面删除无效文件。如果你熟悉Linux命令,可以使用rm
命令删除:
PHP configuration option output_buffering must be disabled
其实这个很好解决,PHP默认是有4096字节缓冲的。但是Nextcloud希望你关闭。如果你是自己安装的PHP,在你安装PHP的路径下,打开PHP配置文件(php.ini),将要
1 |
|
改为:
1 |
|
;
为PHP的注释符号
如果你是根据上文,使用宝塔安装配置的php,更简单了。在宝塔面板,依次打开:软件商店
-已安装
-PHP7.3设置
-配置文件
查找文本output_buffering
,并在前面加上;
注释:
之后,可能需要重载PHP配置或者重启PHP服务才能生效。再次查看Nextcloud概述,就没有这条警告了。
您的数据目录和文件可以从互联网直接访问。.htaccess文件不起作用。强烈建议您配置Web 服务器,以便数据目录不再可访问,或者您可以将数据目录移动到 Web服务器文档根目录。
这个其实是Nginx的问题,为了进一步提升安全性,我们打开Nginx网站设置:
在location内的禁止访问目录内,加入data目录。
PHP 的安装似乎不正确,无法访问系统环境变量。getenv(“PATH”) 函数测试返回了一个空值
这个处理方法很简单;如果你是自己安装配置的PHP,一般不会出现这个问题,当时如果是使用宝塔安装,一般都会有这个问题,解决方法很简单:
在宝塔面板,依次打开:软件商店
-已安装-PHP7.3设置
-FPM配置文件
在文末添加:
1 |
|
之后,可能需要重载PHP配置或者重启PHP服务才能生效。
您的网页服务器未正确设置以解析****。更多信息请参见文档
这个处理方法很简单,简单地说,设置Nginx即可。如果你的Nginx是宝塔安装的,那么打开网站的Nginx:
之后追加以下内容:
1 |
|
之后保存即可
PHP模块问题
PHP模块问题包括:
- 未找到PHP的”fileinfo”模块。强烈推荐启用该模块,从而获得更好的MIME类型探测结果。
- 内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见文档。
- PHP的OPcache模块未载入。推荐开启获得更好的性能。
安装如下模块:
同时,因为使用Redis作为缓冲,所以我们需要打开Nextcloud的配置文件,追加以下内容:
1 |
|
数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复
这个因为我之前修复了,所以我的警告和错误列表没有提示。如果你有报这条警告,直接运行:
1 |
|
但是注意文件夹所属的用户组,比如:你Terminal上使用的是root或者Ubuntu用户,那么就需要用sudo提权
1 |
|
优化内容
文件扫描
有时候,我们直接使用Linux命令,如:wget
、curl
等命令直接下载文件到服务器内Nextcloud里的用户目录,但是用户登录Nextcloud却并没有显示,怎么办?
我们可以使用PHP配合Nextcloud命令,来自动扫描文件:
1 |
|
其中:
- 命令使用需要在Nextcloud根目录下
- 需要使用
sudo -u
命令提权到www用户(即:Nginx用户)
后台任务优化
Nextcloud的后台任务,默认是使用Ajax异步方法进行后台任务:
即在每次访问Nextcloud任意页面都会通过AJAX
的方式发起定时任务的执行请求,这种方式如果没有自己的独立服务器或者VPS的话还是比较方便省心的
但官方推荐使用Cron
,和Nginx或Apache等WEB服务独立开来,互不影响:
为了使用Cron,我们需要用到Linux的定时任务。
SSH连接服务器后,输入:
1 |
|
创建一个Cron任务,并使用正则表达式:
1 |
|
保存即可。
当然,如果你用宝塔面板,也可以直接使用宝塔自带的控制面板,设置定时任务: