本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。

百度云不好用且有审查,google drive空间太小切要翻墙,我寻思着为啥不自己整一个呢?

VPS 商家推荐

云盘要求自然是存储空间大,网络不翻墙速度过得去就行。最重要的是还得便宜,这两天我试用了两个,感觉还不错,建议你先买一个月试试,好用再年付。

Hostsolutions.月付5.4刀,年付55刀,1T空间,10t流量。

优点是抗投诉,无版权,存什么都没问题,缺点是商家在罗马尼亚,ip也是罗马尼亚且不可选,我家移动网网速很差,裸连几乎不能用,所以我选择了另一家。

Crowncloud.月付5刀,年付50刀,500g存储,3T流量。

美国ip,除了晚高峰速度都是正常的,晚高峰可以用梯子解决,这样梯子的流量不会消耗很大,对于这个价格来说我觉得已经很棒了。

搭建

搭建过程其实和 Wordpress 没啥区别,但为了文章的整体性还是把整个流程写一遍。

准备

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install unzip dpkg wget -y

安装 apache2

sudo apt-get install apache2 -y

将 /var/www/html 中的 index.html 删除

配置 MySQL

使用apt命令无法直接获取最新8.0版本的MySQL,需要手动下载deb包(https://dev.mysql.com/downloads/repo/apt/)安装。 以下命令在未来可能会有所不同,自行去网站获取最新

mkdir /temp
cd /temp
wget https://dev.mysql.com/get/mysql-apt-config\_0.8.14-1\_all.deb
sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb #版本号可能会更新

运行完之后,使用命令安装配置好的 MySQL 版本
apt update
sudo apt-get install mysql-server

安装完成后查看安装好的 MySQL 用户名和密码

cd /etc/mysql
sudo cat debian.cnf

配置 PHP

sudo apt-get install php7.2 -y
sudo apt-get install libapache2-mod-php7.2
sudo apt-get install php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring
sudo apt-get install php7.2-intl php-imagick php7.2-xml php7.2-zip

service apache2 restart

安装 phpMyAdmin

官网:https://www.phpmyadmin.net 以下命令未来可能会不同

cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.1/phpMyAdmin-5.0.1-all-languages.zip
unzip phpMyAdmin-5.0.1-all-languages.zip
rm phpMyAdmin-5.0.1-all-languages.zip

解压下来的文件夹重命名为phpmyadmin。

访问 http://ip/phpmyadmin ,填入刚刚查看的用户名和密码,然后创建 nextcloud 数据库

安装 nextcloud

官网: https://nextcloud.com/ ,以下命令未来可能不同

cd /var/www/html
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.0.zip
unzip nextcloud-18.0.0.zip
rm nextcloud-18.0.0.zip

sudo chown www-data nextcloud -Rf
sudo chmod 770 nextcloud -Rf

接下来访问 http://ip/nextcloud 就安装完成了

用户和密码输入上面查看的数据库用户和密码,数据库名字填刚刚创建的nextcloud。等待初始化完成即可开始使用

一些问题的解决

Nextcloud 自带一个安全检查,检查完后会有一堆问题

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

sudo a2enmod rewrite
cd /etc/apache2
sudo vim apache2.conf
复制进去
<Directory /var/www/html/nextcloud/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted

重启
sudo service apache2 restart

后面两个 “……未正确设置以解析……..” 也会因为这个解决而被解决

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

vim /etc/php/7.2/apache2/php.ini
找到 memory_limit 改为512mb

sudo service apache2 restart

通过HTTP访问网站不安全。

需要域名,证书可以申请 Let’s Encrypt 免费 ssl 证书

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo ./certbot-auto –apache

申请完还需要,去 nextcloud 设置中添加域名
vim /var/www/html/nextcloud/config/config.php

array (
0 => ‘xxx.xxx.xxx.xxx’,
1 => ‘xxx.com’
),

HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒。

申请完证书就会有这个错误

a2enmod headers
vim /etc/apache2/sites-enabled/000-default-le-ssl.conf #文件可能有所不同
在域名的下一行添加
Header always set Strict-Transport-Security “max-age=15552000; includeSubDomains”

内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。

apt install php-apcu
service apache2 restart
vim /var/www/html/nextcloud/config/config.php

添加
‘memcache.local’ => ‘\OC\Memcache\APCu’,

数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复。

cd /var/www/html/nextcloud/
sudo -u www-data php occ db:add-missing-indices

数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。

cd /var/www/html/nextcloud/
sudo -u www-data php occ db:convert-filecache-bigint

完成

评论