WeAir

搭建Nextcloud

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

准备

提前安装Nginx、MySQL、PHP,Nginx可参考Nextcloud官方文档配置,MySQL需要创建数据库,PHP需要开启Fileinfo。

安装Nextcloud

进入网站目录并下载安装Nextcloud

1
cd /home/wwwroot/ && wget https://download.nextcloud.com/server/releases/nextcloud-13.0.12.zip && unzip nextcloud-13.0.12.zip

设置Nextcloud文件夹权限

1
chown -R www:www nextcloud/

PS:nextcloud文件夹下有两个文件.htaccess.user.ini,如果要移动文件夹下的文件,请务必复制这两个,不然会报文件完整性错误。

输入IP或域名进行访问配置,填入账号、密码,数据库用户、数据库密码、数据库名,完成安装。

PS:注意配置好防火墙,放行对应端口,以及数据库可单独创建一个用户并赋予相应权限。

常见问题

1. 访问界面为英文且无法更改为中文

修改php.ini配置,重启PHP。

1
sed -i '/disable_functions =/{s/scandir,//}' /usr/local/php/etc/php.ini

2. PHP的设置似乎有问题,无法获取系统环境变量。使用getenv(\”PATH\”)测试时仅返回空结果。

修改php-fpm.conf添加如下配置,重启PHP。

1
2
3
4
5
6
7
cat >> /usr/local/php/etc/php-fpm.conf <<EOF
env[HOSTNAME] = \$HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
EOF

3. 您正在通过HTTP访问该站点, 我们强烈建议您按照安全提示中的说明配置服务器强制使用HTTPS。

可以通过Let’s Encrypt申请一个免费的证书,配置Nginx以支持HTTPS。

4. PHP无法访问/dev/urandom, 由于安全原因, 这是强烈不推荐的。

修改Nginx配置文件fastcgi.conf,重启Nginx。

1
sed -i 's#open_basedir=$document_root/:/tmp/:/proc/#open_basedir=$document_root/:/tmp/:/proc/:/dev/urandom#' /usr/local/nginx/conf/fastcgi.conf

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

PHP添加如下配置,重启PHP。

1
2
3
4
5
6
7
8
9
10
11
cat >> /usr/local/php/etc/conf.d/opcache.ini <<EOF
[Zend Opcache]
zend_extension="opcache.so"
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
EOF

6. 内存缓存未配置。如果可用,请配置 memcache 以增强性能。

安装并运行redis,设置redis开机自启。

1
2
3
4
yum install -y epel-release
yum update -y
yum install -y redis
systemctl start redis && systemctl enable redis

PHP官网下载并编译安装phpredis组件。

1
2
3
4
5
6
wget https://pecl.php.net/get/redis-4.3.0.tgz -O /usr/local/src/redis-4.3.0.tgz 
tar -zxvf /usr/lcoal/src/redis-4.3.0.tgz -C /usr/local/src/
cd /usr/local/src/redis-4.3.0/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

PHP添加如下配置,重启PHP。

1
2
3
4
cat >> /usr/local/php/etc/conf.d/redis.ini <<EOF
[redis]
extension="redis.so"
EOF

编辑nextcloud的配置文件config.php,添加如下配置。

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

如有其它问题,查询Nextcloud官方文档