• Nextcloud是一套用于创建网络硬盘的客户端-服务器软件。其功能与Dropbox相近,但Nextcloud是自由及开放源代码软件,每个人都可以在私人服务器上安装并运行它。

  • 优势与不足
    优势:高速(直链下载速度起飞,与服务器带宽有关);私密(自己全权管理所有文件);稳定(不存在服务商关闭网盘服务的问题);实现了PC、iPhone、iPad三端自动同步;可以直接编辑云端的文件(代码文件也直接查看编辑)

    不足:私有云盘需要自己维护(出现各种问题就很糟心);服务器的硬盘容量通常不大(多为几十G,不适合做仓库盘)

    小伙伴搭建完,进入设置会提示各种警告,强迫症的我们怎么能忍受,下面提升体验和安全性,我们一 一来解决。基于本次搭建基于宝塔环境

1.1 PHP configuration option output_buffering must be disabled

因为PHP默认是4096字节缓冲,但是NextCloud希望你关闭缓冲。

在宝塔面板打开软件商店-已安装-PHP-7.3-设置-配置文件,查找文本output_buffering = 4096,在前面加上注释掉即可。

重载PHP配置或者重启PHP服务才能生效。

1668912908742.png

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

打开网站的配置文件,在”#禁止访问的文件或目录”内添加data即可。

1
2
3
4
5
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|data)
{
return 404;
}

1.3 PHP 的安装似乎不正确,无法访问系统环境变量。getenv(“PATH”) 函数测试返回了一个空值

在宝塔面板,依次打开:软件商店-已安装-PHP7.3设置-FPM配置文件

在文末添加:

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

重载PHP配置或者重启PHP服务才能生效。

1.4 您的网页服务器未正确设置以解析****。

打开网站 > 你的域名 >伪静态,添加以下语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
location = /.well-known/webfinger {
return 301 $scheme://$host:$server_port/index.php/.well-known/webfinger;
}

location = /.well-known/nodeinfo {
return 301 $scheme://$host:$server_port/index.php/.well-known/nodeinfo;
}
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}

location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}

1.5 PHP模块问题

  • 未找到 PHP 的 “fileinfo” 模块。强烈推荐启用该模块,从而获得更好的 MIME 类型探测结果。
  • 未加载 PHP OPcache 模块。[为了更佳性能,建议将其加载到你的 PHP 安装。
  • 该实例缺失了一些推荐的 PHP 模块。为提高性能和兼容性,我们强烈建议安装它们。
    • gmp
    • imagick

安装如下模块:


1668913360839.png

1.6 PHP内存限制低于建议值512MB

这个也是直接进入php的配置修改,修改memory_limit这一项的值大于512M即可。

1.7 通过 HTTP 不安全访问站点。强烈建议你将服务器设置为要求 HTTPS

这个问题是因为我没有绑定域名,如果有域名就可以给服务器绑定域名配置SSL证书域名解析到服务器就可以了。

1.8 内存缓存未配置。为了提升性能,请尽量配置内存缓存。

这个问题是指php的缓存模块没有安装,NextCloud支持APCuMemcachedRedis等模块,选择安装Memcached、Redis。

修改nextcloud的配置文件config.php,在arraydatadiretory之间添加以下语句:

1
2
3
4
5
'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),

写在最后

以上就是NextCloud大致的部署和优化过程,其他NextCloud功能由大家自行摸索。

1
由于能力有限,若有错误或者不当之处,还请批评指正。