Preface: 想法的诞生--起源--初衷

一个同事的手机不小心掉厕所了,里面重要的数据无法恢复。想起自己上次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


Let's begin!

1 First: 给树莓派装系统

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卡

2 Second :系统的初步配置

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.listsudo 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 updatesudo apte-get upgrade -y

至此,系统设置就完了

3  Third:安装Apache2 网页服务器

sudo apt-get install apache2

4 Fourth:安装php 及其依赖模块

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

5 Fifth: 安装Mariadb数据库

<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 

6 Sixth : 使用root用户登录Mariadb,创建新用户,创建新的数据库,设置密码,权限

1 sudo mysql -u root -p2 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   //重启数据库

7 Seventh: 下载安装owncloud

<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.zipsudo 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

8 Eighth: 挂载三星固态硬盘,并设置为存储盘

<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 /mntsudo mkdir datasudo 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/

9 Nineth : 登录界面设置

用户名:自己随意填写

密码:自己随意填写

存储:设置所上传的数据存储位置,本案例设置到了固态硬盘上,也就是  /mnt/data 位置

数据库名,用户,密码:写自己创建的那个

端口号写自己预留的:localhost :XXXX

回车,大功告成,赶紧登录试试吧

10 Tenth: 添加防火墙规则

由于服务器需要长时间开启,我们可以添加一些规则防止一些恶性攻击和信息泄露

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

11 Eleventh : 开放外网访问

<1> 设置Apache可以接受外部请求

找到Apache.conf 文件

找到如下代码<directory />Required all denied
<directory>替换为如下代码<directory />#  Required all deniedRequired all granted
<directory>

注意:所选择的服务器不同,Apache版本不同修改方式有差异

<2> 给owncloud添加信任域

sudo nano /var/www/html/owncloud/config/config.php

找到trust domain  里面添加自己端口映射或花生壳等内网穿透的域名

这下就彻底OK了。

Finally:爬坑指南

<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>  一定要注意兼容问题,支持问题,匹配问题

最后,有问题大家一块沟通解决,个人的力量有限的,团队的力量是强大的,无限的。

成品图:

Date:2021.3.11 ---- 树莓派4B raspbian/ Debian + Apache2 + php7 + Mariadb/Mysql +owncloud搭建私有云NAS相关推荐

  1. 树莓派4b入门之开发RFID系统—简介、搭建MFRC522-SPI环境

    树莓派4b入门之开发RFID系统-简介.搭建MFRC522-SPI环境 一.系统简介 二.模块连接 1.引脚定义 2.接口对应关系 三.搭建接口环境 1.开启SPI 2.模块功能设计 3.安装SPI ...

  2. 树莓派4B Raspbian系统常用Linux 命令及快捷键

    2021SC@SDUSC 命令在哪里输入? 通过 SSH 客户端登录你的树莓派,或者进入树莓派的桌面运行终端程序,接下来就可以输入命令了. 什么是 sudo 命令? 在一行命令之前加上 sudo,表示 ...

  3. 【软件安装】结合树莓派4B(4G)和Ubuntu20.04的GitLab服务器搭建和使用

    目录 树莓派简单介绍 选择树莓派(型号/内存/SD卡) 选择Ubuntu系统(20.04) 树莓派烧录Ubuntu系统 Ubuntu环境配置 查看系统版本信息 软件源修改 软件更新(update&am ...

  4. 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125188715 红胖子(红模仿)的博文大全:开发技术集 ...

  5. 2022 2 11 树莓派4B 截屏方法+SCIM输入法配置(三)

    1.树莓派上截屏的方法 右击选区区域 https://blog.csdn.net/jiangchao3392/article/details/77006443 2.SCIM输入法更改热键 点击全局设置 ...

  6. 移动硬盘加上密码_树莓派+Seafile+移动硬盘搭建私有云

    大家好,我是Victor278,好像好久没更新了,绝对不是我偷懒.(其实是的) 为了自己再也不用给百度云充会员了,自己索性就搭了个私有云来备份自己手机里,电脑里的照片. 1.前期文件准备 树莓派3B+ ...

  7. 树莓派4b主板特点_【树莓派4B主板使用总结】充电|功耗|接口|散热片_摘要频道_什么值得买...

    树莓派4B主板使用总结(充电|功耗|接口|散热片) 之前看到新闻说树莓派 4 在搭载的 USB-C 接口上翻车了,导致带有 E-marked 标记的线缆,因其内置芯片严格遵守握手通信,树莓派 4 连上 ...

  8. 树莓派--搭建nextcloud私有云

    树莓派–搭建nextcloud私有云 网上已有很多的教程是关于nextcloud或owncloud的私有云的搭建,但是都是零零碎碎,并不完整,这里以树莓派raspbain 10 buster系统为例, ...

  9. 树莓派4B原生系统Raspbian(Buster)安装ROS(Melodic)

    树莓派4B原生系统Raspbian(Buster)安装ROS Melodic 官方教程 1 设置ROS存储库 1.1 安装密钥 $ sudo sh -c 'echo "deb http:// ...

  10. 树莓派4b安装win11/10过程全教程(附蓝屏inaccessible boot device解决办法)

    由于之前树莓派跑的win11越来越慢,我就想着重装一下系统,在选择系统方面,网上找了好多资料,有推荐Raspbian的(已经装了一张tf卡了),Ubuntu的(体验超级差),还有Debian的.Cen ...

最新文章

  1. laravel 文件上传
  2. Exercise: Logistic Regression and Newton's Method
  3. 2. getline()和get()
  4. OpenSSL 编程 - RSA 加密解密
  5. javascript,jquery 操作 dropdownlist ,select
  6. 【iCore3 双核心板】例程三十五:HTTP_IAP_ARM实验——更新升级STM32
  7. python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用
  8. metasploit渗透测试指南_Metasploit渗透测试环境搭建与使用
  9. python wmi 显卡型号_python - wmi模块学习(windwos硬件信息获取)
  10. mysql复合语句声明开始于_mysql8 参考手册--BEGIN ... END复合语句
  11. 微信开发经常会用到的一些方法
  12. 在ASP.NET MVC应用程序中随机获取一个字符串
  13. svn版本备份和恢复注意事项
  14. oracle讲师视频教程,赵强老师:Oracle数据库系列视频课程
  15. Light OJ 1138
  16. iOS GUI 规范
  17. Git入门基础-Chivalrous-专题视频课程
  18. 高数 | 【无穷级数】证明:绝对收敛一定收敛
  19. 课件动画做的牛不牛,看你有它没它!
  20. 天嵌i.mx6q--1

热门文章

  1. 【Python百日进阶-Web开发-Feffery】Day429 - fac实例:dash多页面相互点击状态保存
  2. 入门激光雷达点云的3D目标检测
  3. IEC101 可变结构限定词、传送原因、ASDU公共地址和传送原因
  4. Apostrophe not preceded错误
  5. 【赛后总结】第十三届服务外包创新创业大赛总结——A14
  6. 引导过程(修复MBR故障和GRUB鼓掌及破解密码)
  7. 学习浙江大学Photoshop设计精讲精练过程中的重难点及内容收获
  8. 周鸿祎:35告老的大富豪
  9. 4星|《经济学通识课》:深入浅出的经济学思想发展简史
  10. org.apache.ibatis.binding.BindingException: Type interface com.chen.dao.PersonDao is not known to th