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

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/

Date:2021.3.11 ---- 树莓派4B && raspbian/ Debian + Apache2 + php7 + Mariadb/Mysql +owncloud搭建私有云NAS_第1张图片

                     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卡

Date:2021.3.11 ---- 树莓派4B && raspbian/ Debian + Apache2 + php7 + Mariadb/Mysql +owncloud搭建私有云NAS_第2张图片

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

                   至此,系统设置就完了

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 -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   //重启数据库

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

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 /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/


9 Nineth : 登录界面设置

     用户名:自己随意填写

     密码:自己随意填写

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

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

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

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

Date:2021.3.11 ---- 树莓派4B && raspbian/ Debian + Apache2 + php7 + Mariadb/Mysql +owncloud搭建私有云NAS_第3张图片

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 文件

找到如下代码


      Required all denied



替换为如下代码


   #  Required all denied
      Required all granted


      注意:所选择的服务器不同,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_第4张图片

 

你可能感兴趣的:(鼓捣,php,mysql)