一个同事的手机不小心掉厕所了,里面重要的数据无法恢复。想起自己上次U盘热插拔烧毁,数据全部遗失的悲痛。最近手机内存经常告满卡死。百度云限速。千兆光纤入户,家庭每天产生数据量太多,未来5G时代和物联网时代会有更多海量数据。便下定决心做一个家庭云NAS。
个人云盘的种类有很多,比如owncloud/ nextcloud , seafile, 可道云,有道云,Syncthing.........,选择一款自己喜欢的适合自己的就好。这里我选择了owncloud。考虑到稳定性,免费,开源决定采用经典的LAMP组合。考虑到家里有台10年前的旧电脑,就利用起来吧。没用几周旧电脑主板就挂了,蓝瘦香菇。而且电费每月多100多,功耗真的大。考虑到树莓派4B刚发布了,看了看参数,有了USB3.0,千兆网卡,瞬间一个树莓派4B+固态的想法就诞生了,而且最关键的它的功耗很小,初步估算每个月仅仅需要10元电费。
最终定版:
硬件方面:树莓派4B+三星970固态硬盘1TB+硬盘盒
软件方面:OS采用Raspbian的Buster版本+ Apache 2 +PHP7 + Mariadb + owncloud
1 利用软件SDFormatter 格式化 Micro SD 卡,这个工具可以去官方下载或者问商家要资料
<1> SDFormatter官网地址:https://www.sdcard.org/downloads/formatter/
2 下载树莓派镜像
<1> 官网地址:https://www.raspberrypi.org/
关于镜像:树莓派能装好多种的系统比较常用的有Arch Linux Arm、 Ark OS 、FreeBSD 、Kali Linux、NetBSD 、NOOBS、openSUSE、Puppy Linux、Raspbian、Ubuntu mate、windows 10 物联网核心版等等。
<2> 下载好后解压到本地,镜像是后缀名为IMG的文件
3 利用软件win32DiskImager 来烧录系统镜像
<1> 官网下载链接: https://sourceforge.net/projects/win32diskimager/
注意:虽然叫 win32diskimager , 但是也能烧录64位的系统,只是一个单纯的向MicroSD 卡中烧录的工具而已
<2> 烧录上一步解压的后置名是IMG格式的镜像到SD卡,之前需要格式化SD卡
1 建立SSH链接
在烧录完成后的系统BOOT的根分区目录下新建一个名为SSH的空白文档,树莓派ssh登录默认密码为raspberry
2 登录路由器管理界面查看树莓派获得的IP地址例如为 10.0.0.33
使用此IP地址登录树莓派(同一个局域网下)
登录格式为:
ssh pi@ 10.0.0.33
然后输入密码 raspberry ,即可成功登录
3 设置静态IP
例如固定如下IP: 10.0.0.222
网关:10.0.0.1
<1> 使用如下命令编辑文件dhcpcd.conf
sudo nano /etc/dhcpcd.conf
<2> 然后再dhcpcd.conf 文件里的最下方添加如下代码
interface eth0
static ip_address=10.0.0.222/24 //注释IP地址后面必须跟上24
static routers=10.0.0.1
static domain_name_servers=10.0.0.1
完毕,Ctrl + O 保存,回车确定, Ctrl + X 退出编辑模式
注意:设置静态IP前需要确认路由器当前所连设备没有分配到该地址,否则会地址冲突,两台设备都无法上网,最好将DHCP地址池设置分配范围不包含10.0.0.222在内
4 修改时区
树莓派的默认时区是世界协调时,UTC时间,需要更改为中国东八区 CST时间
<1> 安装ntp模块
sudo apt-get install ntpdate
<2> 安装完成后输入如下命令选择时区
tzselect
<3> 依次输入数字回车确定选择,然后
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或者输入如下命令通过数字提示来设置时区也行,但是有的时候系统版本不一样会出不来
sudo dpkg -reconfigure tzdata
<4> 设置完成敲入 date 命令查看当前时间是否变更正确
5 更新系统的镜像源
这里以阿里云的源为例
<1> 使用命令分别打开文件sourse.list 和 raspi.list
sudo nano /etc/apt/sources.list
sudo nano /etc/apt/sources.list.d/raspi.list
<2>将源文件里的代码全部注释掉,更换为以下代码
deb http://mirrors.aliyun.com/raspbian/raspbian/buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/buster main contrib non-free rpi
<3> 最后保存退出,执行更新源和列表
sudo apt-get update
sudo apte-get upgrade -y
至此,系统设置就完了
sudo apt-get install apache2
1 安装PHP7.1
sudo apt-get install php7.1
2 安装PHP7.1依赖模块
sudo apt-get install php7.1-gd php7.1-mysql php7.1-intl php7.1-xml php7.1-zip php7.1-mbstring php7.1-mcrypt php7.1-curl
<1>
sudo apt-get install mariadb-server
中间会询问是否继续,输入Y继续即可
<2> 完成后就可以通过命令连接到MariaDB
sudo mysql
<3> 先设置root密码
注意:每句话结尾必有风号 ;
use mysql;
update user set password=password('password') where user='root'; //设置root用户密码
update user set plugin='mysql_native_password' where user = 'root'; //设置加密方式
flush privileges; //刷新权限
exit; //退出
<4> 重启Mariadb
sudo systemctl restart mariadb
<5> 重启完成后,试用密码进行mariadb登录,验证是否修改成功
sudo mysql -u root -p
1 sudo mysql -u root -p
2 create database owncloud; //新建名为owncloud的数据库
3 grant all privileges on owncloud.*to 'userName' @localhost identified by'userPassword';
//在owncloud数据库中新建用户名为userName,密码为userPassword的用户,并赋予所有权限
4 flush privileges; //刷新权限
5 exit; //退出
6 sudo systemctl restart mariadb //重启数据库
<1> 切换到apache主页目录 /var/www/html
cd /var/www/html
<2> 从owncloud官网下载并解压缩owncloud,耐心等待即可
owncloud官网网址:https://owncloud.com/
sudo wget https://download.owncloud.org/community/owncloud-10.4.1.zip
sudo unzip owncloud-10.1.1.zip
<3> 更改所属组和权限
chown -R www-data:www-data /var/www/html/owncloud/
sudo chown -R www-data:www-data config
sudo chown -R www-data:www-data apps
<1> 将固态硬盘插入硬盘盒通过USB3数据线插到树莓派U口上,使用命令查看硬盘情况
重点查看 /dev/sda1 ,有的是 /dev/sda2 或者 /dev/sdb3 等等
下面以 /dev/sda1 为例
sudo fdisk -l
<2> 将硬盘格式化为ext4 格式
sudo mkfs -t ext4 /dev/sda1
<3> 在 /mnt/ 下新建文件夹 data , 将固态挂载到data下
cd /mnt
sudo mkdir data
sudo mount /dev/sda1 /mnt/data
<4> 查看挂载情况
df -h
<5> 添加开机自动挂载
sudo nano /etc/fstab
/dev/sda1 /mnt/data ext4 rw,defaults 0 0
注意 : NTFS格式的硬盘不能更改owner
<6> 修改data的所属组和权限
sudo chown -R www-data:www-data /mnt/data/
用户名:自己随意填写
密码:自己随意填写
存储:设置所上传的数据存储位置,本案例设置到了固态硬盘上,也就是 /mnt/data 位置
数据库名,用户,密码:写自己创建的那个
端口号写自己预留的:localhost :XXXX
回车,大功告成,赶紧登录试试吧
由于服务器需要长时间开启,我们可以添加一些规则防止一些恶性攻击和信息泄露
1 sudo apt-get install ufw //安装防火墙
2 sudo ufw enable //启用防火墙
3 sudo ufw diable //禁用防火墙
4 sudo ufw allow 80 //允许外部访问80端口
5 sudo ufw delete allow 80 //禁止外部访问80 端口
6 sudo ufw allow from 192.168.1.1 //允许此IP访问所有的本机端口
7 sudo ufw deny smtp //禁止外部访问smtp服务
8 sudo ufw delete allow smtp //删除上面建立的某条规则
9 ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port
//要拒绝所有的流量从TCP的10.0.0.0/8 到端口22的地址192.168.0.1
<1> 设置Apache可以接受外部请求
找到Apache.conf 文件
找到如下代码
Required all denied
替换为如下代码
# Required all denied
Required all granted
注意:所选择的服务器不同,Apache版本不同修改方式有差异
<2> 给owncloud添加信任域
sudo nano /var/www/html/owncloud/config/config.php
找到trust domain 里面添加自己端口映射或花生壳等内网穿透的域名
这下就彻底OK了。
<1> 数据库安装等问题比较繁琐,如果遇到重大麻烦就可以将其完全卸载重新安装
1 sudo apt-get remove mysql-* //彻底删除数据库
2 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
//清理数据库残留,跳出一个对话框,你选择yes就好了
<2> Mysql 8 最新版本采用了caching_sha2_password 认证方式,注意兼容问题
<3> owncloud 10 必须使用PHP7.0以上版本
<4> 外挂移动硬盘作为存储盘一定要采用独立供电,尤其是3.5英寸的机械硬盘,否则容易烧板子,不建议更改树莓派U口电流大小
<5> 轻量级的服务器可以选用Nginx,加载php-fpm模块来支持PHP,而且Nginx 加载PHP内容比Apache更快,Nginx做网页服务器更好,当然还有别的。
<6> 一定要注意兼容问题,支持问题,匹配问题
最后,有问题大家一块沟通解决,个人的力量有限的,团队的力量是强大的,无限的。
成品图: