预备条件
- 树莓派(我的型号的3b+),电源线
- 内存卡 class10 8g以上
- 一台有ssh连接的电脑或者显示器、键鼠
最终实现功能
- 开机自动挂载外接硬盘
- Samba(局域网文件共享)
- 开启ftp连接
- Nginx
- Mariadb数据库(与MySQL相同)
- Docker
- 内网穿透
- Aria2下载机
安装系统
下载镜像
从官网下载自己想要的镜像,一般就下载树莓派的默认Raspbian
系统就行了,有桌面版和无桌面版。自行选择所需系统下载即可。
输入内存卡
推荐使用软件balenaEtcher
这个软件,这个有windows版本和macos版本,所以还是很方便的。
选择我们下载镜像的安装位置,选择要刷的设备这里就是我们的内存卡,然后点击确认即可。
系统配置
在刷完系统后拔出读卡器,然后再插入电脑,此时可以看到一个boot
分区。以下文件都保存在这个分区里面。
-
设置SSH访问
写一个空白的文件,命名为
ssh
,大小写无所谓,注意ssh就是文件的全部名称不要有后缀。 -
设置WIFI
如果有网线,可以先使用网线连接,后面再考虑这一步。
写一个命名为
wpa_supplicant.conf
的文件,这里面写wifi的配置信息。主要有以下几个属性:
- ssid:WiFi的名称
- psk: 密码
- key_mgmt:WIFI的加密方式
- priority:连接的优先级,数字越大优先级越高,不可以是负数
- scan_ssid:连接隐藏的wifi时需要将这个指定为1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
# WiFi配置 network={ ssid="WiFi-A" psk="12345678" key_mgmt=WPA-PSK priority=1 } # 连接隐藏的WiFi network={ ssid="WiFi-B" psk="12345678" key_mgmt=WPA-PSK priority=2 scan_ssid=1 } # 无密码时候的配置 network={ ssid="你的无线网络名称(ssid)" key_mgmt=NONE } # WiFi 使用WEP加密 network={ ssid="你的无线网络名称(ssid)" key_mgmt=NONE wep_key0="你的wifi密码" } # WiFi 使用WPA/WPA2加密 network={ ssid="你的无线网络名称(ssid)" key_mgmt=WPA-PSK psk="你的wifi密码" }
开机重置密码
如果有屏幕和键鼠就直接连接即可。
如果没有屏幕,需要先知道树莓派的ip,到路由器上查看树莓派的ip利用ssh软件连接到这个ip即可。
默认的用户名与密码是pi
,raspberry
。登录后可以重置密码。
输入passwd
,然后根据提示输入新密码即可。
树莓派默认是锁住root用户的,如果需要可以执行以下命令进行解锁:
|
|
然后我们可以对系统执行一下更新:
|
|
开机挂载硬盘
由于树莓派使用的是内存卡,并把它当做存储系统,所以存储大小就取决于内存卡的大小,所以我将树莓派挂载了一个外接硬盘。并且设置了开机自动挂载,这样就不用每次执行挂载命令了。但是要注意的是可能供电不足,如果遇到这种情况需要给移动硬盘额外供电,不过我没出现这种情况。
1.为了在windows和mac上都能使用,所以先将硬盘转换为ExFAT
格式并安装所需软件
|
|
2.在树莓派上插上硬盘,查看设备编号。
|
|
3.建立挂载目录
|
|
4.挂载
挂载的时候我遇到了一个问题就是硬盘里面有东西就挂载不进去,所以我将内容备份了一下,重置了后又重新挂载的。
|
|
5.开机挂载
编辑/etc/fstab
文件,在最后一行添加:
/dev/sda1 /media/yingpan exfat rw,defaults,nofail 0 0
/dev/sda1
是你要自动挂载的硬盘
/media/yingpan
是你要挂载到的地方
nofail
是很重要的一个参数,如果连接了硬盘就实现自动挂载,如果没连接硬盘也能正常启动。
我就在填了这个文件后启动报错了,然后我连接上屏幕将这个文件又重新修改了后才能开机,所以这个配置文件很重要,如果填错了就开不了机了。一定要注意跟自己的硬盘格式是不是一致,如果错了也不要怕,连上屏幕使用root用户把这个文件再修改回来就好了。
6.热插拔挂载
在/etc/udev/rules.d/
新建10-usbstorage.rules
文件,会自动在/meida/yingpan/
目录下挂载。
[ruby] view plaincopy
KERNEL!="sd*", GOTO="media_by_label_auto_mount_end"
SUBSYSTEM!="block",GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_TYPE}=="", GOTO="media_by_label_auto_mount_end"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k"
ACTION=="add", ENV{mount_options}="relatime,sync"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="iocharset=utf8,umaskk=000"
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", ENV{mount_options}="iocharset=utf8,umaskk=000"
ACTION=="add", RUN+="/bin/mkdir -p /mnt/yingpan/", RUN+="/bin/mount -o $env{mount__options} /dev/%k /mnt/yingpan/"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /meida/yingpan/}", RUN+="//bin/rmdir /meida/yingpan/"
LABEL="media_by_label_auto_mount_end"
Samba(局域网文件共享)
使用树莓派挂载移动硬盘后,如果需要在其他机器上访问移动硬盘,可以在树莓派上安装samba开启局域网的文件共享
首先我们需要安装samba
软件
|
|
安装完成后修改配置文件:sudo vim /etc/samba/smb.conf
,在配置文件最后追加这些信息:
[NAS] # 文件夹的名称,在局域网中以这个名称展示
comment = Public Storage # 文件夹说明
path = /path # 共享文件的路径,要把这个文件夹的权限修改成 777
create mask = 0777 #创建文件的权限
directory mask = 0777 #创建文件夹的权限
guest ok = yes # 游客访问,不需密码。
# valid users = pi # 需要登录后查看,登录的用户名
browseable = yes # 允许浏览
read only = no # 是否可读
如果配置了访问的用户,这个用户与系统用户还不一致,需要自行添加用户到samba系统
|
|
然后我将上面没有的[printers]
删掉了,并对[homes]
进行了修改,最终[homes]
的配置如下:
[homes]
comment = Home Directories
browseable = no
read only = no
create mask = 0777
directory mask = 0777
valid users = %S
这样登录后即可访问[homes]
的文件夹下内容了。
这时打开mac系统的访达就可以看到我设置的[NAS]
文件夹,登录后就可以看到[homes](/home/pi)
文件夹下的内容。
配置ftp
有时候还会使用到ftp操作,所以安装了vsftpd。
|
|
然后再进行修改配置文件,配置文件在/etc/vsftpd.conf
,主要修改为以下的内容:
|
|
然后开启服务sudo service vsftpd start
。
我们就可以使用ftp软件连接到树莓派了。
安装编译nginx
具体文章可以参照我的这篇文章nginx编译安装
安装、配置Mariadb
安装
|
|
配置
|
|
这时已经进入mysql的命令行,对root修改密码并且授权远程访问
|
|
然后还需要修改mysql的配置文件/etc/mysql/mariadb.conf.d/50-server.cnf
,将其中的bind-address = 127.0.0.1
给注释掉即可。
Docker
自己的电脑上也能安装docker,但是运行时会有些卡顿,所以我就将docker装在了树莓派上面
具体安装和使用文章可以看我的这篇文章:Docker
内网穿透
我仅仅使用过花生壳与frp两种方案,还有很多其他的解决方案。
花生壳
首先贴出官方文档地址,一般看这个文档按照这个执行就可以完成了:http://service.oray.com/question/2680.html
但是这个毕竟是人家公司的服务项目,所以我们申请后只有1m的带宽,限制也挺多。但是刚刚开始使用时也是不错的解决方案。
frp
这个方案就是使用自己的服务器做中转,所以我们就需要一台自己的服务器。
具体实现方案可以看我的这篇文章:内网穿透
Aria2下载机
有了NAS和外接硬盘,我们可以做一个下载机。
安装
|
|
配置
创建配置文件夹和配置文件、会话文件
|
|
然后配置文件的内容可以照着这样写:
|
|
启动:
aria2c --conf-path=/home/pi/.config/aria2/aria2.config
下载web管理页面
我这里使用的是AriaNg
,官网地址是https://github.com/mayswind/AriaNg/releases,可以下载最近的版本,之前已经安装过nginx了,就直接下载解压到nginx的html下,然后访问树莓派ip/aria-ng
显示如下的页面。
设置开机启动
创建ststemctl service文件
|
|
编写脚本文件,里面的配置文件路径修改为自己的路径
|
|
然后重载服务并设置开机启动
|
|
参考文章: