【整理】树莓派搭建私有云服务器(Nextcloud)

buildtime:2019年7月10日

刚刚考完期末考,真的是累死。这个项目其实我去年就做过,现在想重新总结一下。最详细也最正式地\colorbox{purple}{\color{white}{\text{最详细也最正式地}}} 教授大家如何实现这个项目。

我的配置

  1. 树莓派3A+一块
  2. 聪明的脑子一个

树莓派其实可以使用其他任意版本(zerow也可以,虽然很卡但是仍可以正常使用)

请事先调试好你的树莓派确保能正常上网和连接,如有异议请点击这里入门

好的我们开始!

Step0:基础知识

首先你需要有一个总体的概念才能一步步完成这个项目

好的,首先,我们要搭建一个私有云服务器

私有云服务器说白了就是运行私有云的一个网站服务器

要搭建一个网站,就不得不提一个词:LAMP\colorbox{purple}{\color{white}{\text{LAMP}}}

何为LAMP\colorbox{purple}{\color{white}{\text{LAMP}}}

这里引用百度百科:

LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:\colorbox{brown}{\color{white}{\text{LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:}}}

  1. Linux,操作系统
  2. Apache,网页服务器
  3. MariaDB或MySQL,数据库管理系统(或者数据库服务器)
  4. PHP、Perl或Python,脚本语言

也就是说,要有LAMP环境你的那些PHP或HTML写的网站后台程序才能正常运行

其实我们还需要加入一个软件:PhpMyAdmin\colorbox{green}{\color{white}{\text{PhpMyAdmin}}}

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。

为什么还要这个呢?因为Nextcloud还需要许多php的拓展才能运行,安装phpMyAdmin能自动分析依赖包来顺带安装拓展,不喜欢这样的话就“sudo apt-get install php-拓展名称”来安装吧

关于数据库,MySQL有一个更简单的代替方案:SQLite\colorbox{green}{\color{white}{\text{SQLite}}}

你可以选用SQLite,这样配置会简单一些,而且据说速度也会更快,但SQLite是用于小型设备的,而Nextcloud是被设计在大企中运行的,所以Nextcloud会不建议你用SQLite(管他呢,我做出来就我一个人用)

这里的PHP我们将使用PHP7.3版本

所以我们需要先搭建LAMP环境,然后在将Nextcloud安装在上面运行即可

可以了,你现在应该我们的步骤是什么了

Step1:换源

换源又是什么???

好吧, 在树莓派中的/etc/apt/sources.list里面放着更新源信息,当我们用apt-get下载软件的时候,都会去文件里找去哪个服务器下载。但是树莓派是人家外国人的,更新源默认都是外国服务器,我们下载软件自然很吃力

所以我们要换成国内的服务器,这样速度会快一些

需要注意的是,不要更改系统版本,我之前就是把新系统Buster改成了stretch导致了安装软件的错误,我还大骂这个新系统怎么这么多bug,真是错怪树莓派基金会了

1
2
3
4
5
6
7
首先打开文件

sudo nano /etc/apt/sources.list

把原来的源地址删掉。然后把下面新的的源地址复制进去

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/

复制好了以后点击ctrl -x保存退出

输入下面指令更新一下

1
sudo apt-get update

完成了换源操作,其实网上还有关于换源更详细的知识

Step2:搭建LAMP环境

① Linux

你早就有了,不管

② Apache

Apache是世界使用排名第一的Web服务器软件(开放源码的网页服务器)。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一

用下面指令下载

1
sudo apt-get install apache2

关于Apache,还需要修改一个配置文件

打开文件

1
sudo nano /etc/apache2/apache2.conf

把文件中下图位置的None改成All(可以使用搜索功能)

③ MySQL抑或是SQLite

MySQL是最好的关系数据库管理系统应用软件,其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

用下面指令下载

1
2
3
4
sudo apt-get install mysql-server

#如果你跟我一样报错的话,就改用MariaDB吧,它是MySQL的一个分支,是差不多的
sudo apt-get install mariadb-server-10.0

MySQL占用内存太大,而SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用。

用下面指令下载

1
sudo apt-get install sqlite sqlite3

个人建议,SQLite而不是MySQL去丢个硬币决定最好

如果你用的是MySQL,那么现在要配置MySQL的root用户的密码(懒得弄的就用SQLite吧!)

按照下面的步骤做

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo mysql -uroot
#进入mysql

#在里面输入以指定mysql数据库
USE mysql;
#这里的123456就是要设置的密码,可以自己变通
UPDATE user SET password=PASSWORD('123456') WHERE user='root';
UPDATE user SET plugin='mysql_native_password' WHERE user='root';
#刷新信息
FLUSH PRIVILEGES;
#退出MySQL
exit

#现在我们退出了,重启MySQL
sudo systemctl restart mysql

Okay

④ PHP7.3

PHP是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。

用下面指令下载

1
2
3
sudo apt-get install php7.3 libapache2-mod-php7.3  php7.3-sqlite3 php7.3-int php-imagick php-apcu redis-server php-redis

ps:如果这条命令没有正常运行,请把7.3版本改为7.0试一下,并且把下面nextcloud的版本改为14.0.14

⑤ phpMyAdmin

这东西是什么已经说过了,不讲

输入下面指令(你会发现会安装只需安装一(a)点(lot)点(of)东西)

1
sudo apt-get install phpmyadmin

下载过程中按下图进行选择(第一个注意要按一下空格有星号表示选中!!!)\colorbox{red}{\color{white}{\text{(第一个注意要按一下空格有星号表示选中!!!)}}}

接下来这个东西按否

完成!

Step3:下载Nextcloud

NextCloud 是一款开源网络硬盘系统。任何人都可以自由的获取 NextCloud 程序,在家庭或公司构建私有且免费的网络硬盘。它是完全由你用户控制的私有、安全且功能完整的文件同步与共享解决方案。更关键的是Nextcloud在PC抑或是手机上都能访问。

用下面指令下载和完成安装

但因为Nextcloud的服务器在海外,下载很慢,建议用IDM使用32线程弄下来再用FileZilla传送上去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo wget  https://download.nextcloud.com/server/releases/nextcloud-16.0.3.zip
#下载,并且很可能龟速

sudo unzip nextcloud-16.0.3.zip -d /var/www/html/
#解压至服务器文件夹

cd /var/www/html
sudo chown -R www-data:www-data nextcloud
#所有者改为www-data,这样nextcloud就不会报权限的问题了

#下面要提供一个用于储存网盘文件的位置,可以自行设置,我提供两种比较顺眼的位置:
①在nextcloud目录里
cd /var/www/html/nextcloud
②在桌面上
cd /home/pi/Desktop

mkdir data
sudo chown -R www-data:www-data data

Step4:最后的配置

在浏览器里输入“树莓派的IP\nextcloud”并回车
(电脑手机均可)

然后就进入nextcloud的网页,我们的服务器最终成功运行了

如果是用SQLite的就直接点安装完成就可以了

如果用MySQL的还需进行配置:

进行如图的输入,数据库密码自己设的是什么就是什么

然后转那么几分钟就可以完成了(zerow可能要更久)

最终,你就可以自由使用这一网盘了!

191026更新:各种关于安全及设置警告的提醒

内存缓存未配置

通过不被信任的域名访问

删除文件时错误

PHP内存低于512M

然后就OK了。。。