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/
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相关推荐
- 树莓派4b入门之开发RFID系统—简介、搭建MFRC522-SPI环境
树莓派4b入门之开发RFID系统-简介.搭建MFRC522-SPI环境 一.系统简介 二.模块连接 1.引脚定义 2.接口对应关系 三.搭建接口环境 1.开启SPI 2.模块功能设计 3.安装SPI ...
- 树莓派4B Raspbian系统常用Linux 命令及快捷键
2021SC@SDUSC 命令在哪里输入? 通过 SSH 客户端登录你的树莓派,或者进入树莓派的桌面运行终端程序,接下来就可以输入命令了. 什么是 sudo 命令? 在一行命令之前加上 sudo,表示 ...
- 【软件安装】结合树莓派4B(4G)和Ubuntu20.04的GitLab服务器搭建和使用
目录 树莓派简单介绍 选择树莓派(型号/内存/SD卡) 选择Ubuntu系统(20.04) 树莓派烧录Ubuntu系统 Ubuntu环境配置 查看系统版本信息 软件源修改 软件更新(update&am ...
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125188715 红胖子(红模仿)的博文大全:开发技术集 ...
- 2022 2 11 树莓派4B 截屏方法+SCIM输入法配置(三)
1.树莓派上截屏的方法 右击选区区域 https://blog.csdn.net/jiangchao3392/article/details/77006443 2.SCIM输入法更改热键 点击全局设置 ...
- 移动硬盘加上密码_树莓派+Seafile+移动硬盘搭建私有云
大家好,我是Victor278,好像好久没更新了,绝对不是我偷懒.(其实是的) 为了自己再也不用给百度云充会员了,自己索性就搭了个私有云来备份自己手机里,电脑里的照片. 1.前期文件准备 树莓派3B+ ...
- 树莓派4b主板特点_【树莓派4B主板使用总结】充电|功耗|接口|散热片_摘要频道_什么值得买...
树莓派4B主板使用总结(充电|功耗|接口|散热片) 之前看到新闻说树莓派 4 在搭载的 USB-C 接口上翻车了,导致带有 E-marked 标记的线缆,因其内置芯片严格遵守握手通信,树莓派 4 连上 ...
- 树莓派--搭建nextcloud私有云
树莓派–搭建nextcloud私有云 网上已有很多的教程是关于nextcloud或owncloud的私有云的搭建,但是都是零零碎碎,并不完整,这里以树莓派raspbain 10 buster系统为例, ...
- 树莓派4B原生系统Raspbian(Buster)安装ROS(Melodic)
树莓派4B原生系统Raspbian(Buster)安装ROS Melodic 官方教程 1 设置ROS存储库 1.1 安装密钥 $ sudo sh -c 'echo "deb http:// ...
- 树莓派4b安装win11/10过程全教程(附蓝屏inaccessible boot device解决办法)
由于之前树莓派跑的win11越来越慢,我就想着重装一下系统,在选择系统方面,网上找了好多资料,有推荐Raspbian的(已经装了一张tf卡了),Ubuntu的(体验超级差),还有Debian的.Cen ...
最新文章
- laravel 文件上传
- Exercise: Logistic Regression and Newton's Method
- 2. getline()和get()
- OpenSSL 编程 - RSA 加密解密
- javascript,jquery 操作 dropdownlist ,select
- 【iCore3 双核心板】例程三十五:HTTP_IAP_ARM实验——更新升级STM32
- python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用
- metasploit渗透测试指南_Metasploit渗透测试环境搭建与使用
- python wmi 显卡型号_python - wmi模块学习(windwos硬件信息获取)
- mysql复合语句声明开始于_mysql8 参考手册--BEGIN ... END复合语句
- 微信开发经常会用到的一些方法
- 在ASP.NET MVC应用程序中随机获取一个字符串
- svn版本备份和恢复注意事项
- oracle讲师视频教程,赵强老师:Oracle数据库系列视频课程
- Light OJ 1138
- iOS GUI 规范
- Git入门基础-Chivalrous-专题视频课程
- 高数 | 【无穷级数】证明:绝对收敛一定收敛
- 课件动画做的牛不牛,看你有它没它!
- 天嵌i.mx6q--1
热门文章
- 【Python百日进阶-Web开发-Feffery】Day429 - fac实例:dash多页面相互点击状态保存
- 入门激光雷达点云的3D目标检测
- IEC101 可变结构限定词、传送原因、ASDU公共地址和传送原因
- Apostrophe not preceded错误
- 【赛后总结】第十三届服务外包创新创业大赛总结——A14
- 引导过程(修复MBR故障和GRUB鼓掌及破解密码)
- 学习浙江大学Photoshop设计精讲精练过程中的重难点及内容收获
- 周鸿祎:35告老的大富豪
- 4星|《经济学通识课》:深入浅出的经济学思想发展简史
- org.apache.ibatis.binding.BindingException: Type interface com.chen.dao.PersonDao is not known to th