手把手教你搭建一台永久运行的个人服务器

2023-11-01

ec1eeb412a74143ed256cf1c050efe48.jpeg

46e21ea7396546e9a9c576390d99d51a.png


No.1 树莓派是什么?

Raspberry Pi(中文名为树莓派,简写为 RPi,(或者 RasPi / RPI) 是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于 Linux。随着 Windows 10 IoT 的发布,我们也将可以用上运行 Windows 的树莓派。

自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是麻雀虽小,五脏俱全。

1. 用我的话理解

用我的话理解就是树莓派就是一台主机,你可以外接显示器,键盘鼠标,u盘等等外设,因为它体积很小,而且又有很多串口和外接的口,可以直接调用很多底层硬件。

2. 市面上的型号

市面上大多是 3 代 B+ 型,淘宝一搜树莓派一大堆都是,价钱纯主板(不要任何外设)在 230+ 左右,有点小贵,超过我的预算,所以我继续寻找廉价的,终于让我发现了一款 100+ 的树莓派。

3. 树莓派 zero w

树莓派 zero w 是一款 mini 的树莓派,体质只有 3b+ 的 1/3。实际到手后,你会发现它真的超级小,超级可爱。以下是我的实物图,你可以看看大小到底有多 mini。

cdcb1a8af9469fc83558af97d09a0dd9.jpeg
图片

你可以看到,最上面是一根普通的黑色签字笔,接下来是一个即插即用型的外接 wifi 网卡,然后是一个 USB 读卡器,最底下的就是我们今天的主角 zero w。它真的超级小,有木有。真的是完美的诠释了那句“麻雀虽小,五脏俱全”的话。

zero w 这款树莓派的主要参数如下:

• BCM2835 处理器,1GHz 主频,512MB RAM

• BCM43438 WiFi / BT 芯片

• micro-USB 电源接口

• micro-USB OTG 接口

• miniHDMI 端口

• 复合视频和重置扩展接口

• 脆弱的 CSI 摄像头接口

• micro-SD 卡座,存放操作系统

• 40-pin GPIO 扩展接口

• 尺寸:65mm*30mm

你别看它的 cpu 只有 1 核,内存只有 512MB,就觉得它可能什么都做不了,但是实际上它的性能还是很好的,用于跑一个网站真的是小 case。

4. 更多树莓派

关于更多树莓派型号或者使用教程你可以去树莓派实验室这个网站,上面有丰富的资源。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video

No.2 树莓派zero w安装系统

1. 准备

你可能提前需要准备的东西如下:

• 16GB or 32GB 的 SanDisk 内存卡(注意是以前那种放在手机上,很小的哦)

• 一根最普通不过的 usb 安卓数据线(not type-c)

• u 盘格式化工具(推荐使用 SDFormatter)

• 系统烧写工具(Win32DiskImager)

• 树莓派系统(可以去官网下载)

我使用的是 Raspbian Stretch Lite 这个系统镜像,这个系统是官方制作的,lite 是无桌面版的,只有黑漆漆的控制台,优点是体积小,省性能和内存。

名字带有 desktop 的是有桌面 ui 的,对不熟悉 liunx 系统的朋友可能更友好,但是体积很大,占用的性能也会更高。

21e058bfe5f90570af4943b8ce65ee75.jpeg
图片

2. 第一步下载系统镜像

下载好你需要的系统镜像后,如下图

99fce39e2814dfe8ce2d6f1f463bff1f.png
图片

一开始只有一个 zip 的压缩包,大小大概 360MB 左右,你需要把它解压,得到上图的文件夹。

2d8f1704301d8daf44f740ff1ce14c83.png
图片

然后进入文件夹可以看到一个 img 的镜像,大小为 1.7GB 左右。

ps:这个官方的 Raspbian 镜像,如果是其他第三方的镜像,可能下载后的压缩包解压后不是 img 镜像,这种情况请另行百度解决。

3. 使用 Win32DiskImager 往内存卡中写入镜像

1ebeb8b099963a7900f10b30e0262903.png
图片

把内存卡插入读卡器后,插入电脑。

打开 Win32DiskImager 软件后,选择 img 镜像,设备选择你的 U 盘,然后点击写入就可以了,写入完成后会弹出成功的提示框。

ps: 我上图没有选择设备,因为的没插入读卡器,仅仅是示范而已

4. 修改 boot 分区的文件

先别急着拔出读卡器,此时,我们电脑可以看到 u 盘中只有一个名为 boot 的分区,大小可能只有 40MB 左右,不要着急,因为 window 不识别内存卡中 liunx 系统的其他分区。

4.1 新建 ssh 文件

因为我们的 zero w 有一个 mini hdmi 的接口,但是我不需要屏幕,所以需要使用 ssh 连接到 zero w 中的系统,所以需要在第一次开机就能开启 ssh 功能。

我们进入 boot 分区内,然后新建一个名为 ssh 的文件,注意不要后缀名!!!!也不要往里面写任何东西!!

4.2 新建 wpa_supplicant.conf 文件

因为 ssh 连接是需要 ip 地址的,所以我们需要将 zero w 在第一次开机自动连接 wifi,使其和我们的电脑处于一个局域网,这样我们才可以通过 ssh 连接到 zero w 的系统。

同样的在 boot 分区内,新建一个名为 wpa_supplicant.conf 的文件,然后往里面写入如下内容后保存:

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="你的wifi名字"
    psk="你的wifi密码"
}

5. 组装我们的最小主机并连接

取出读卡器中的内存卡,然后插入到 zero w 中,使用一根 usb 安卓数据线连接电源(5V1A)即可。

等待几分钟,期间我们的 zero w 的指示灯会一直闪烁,很正常,等待指示灯常亮的时候,我们去路由器上,查看一下树莓派的 ip 地址。

ce04259aaf195e28cf3edb259c507755.jpeg
图片

可以看到我们 zero w 的 ip 为 192.168.0.104,然后使用 ssh 连接工具(推荐使用 putty)连接树莓派,初始账户为 pi,密码是 raspberry。

0654b32911c87082a589dd4db24f1e75.png
图片

连接成功,如上图所示。这样我们的系统就正确无误的安装好了。

ps: 如果是手机开启热点当做一个路由器的话,咱们手机下载一个名叫 android terminal 的 app,然后输入 ip neigh 指令,就可以查到连接到手机的设备的 ip 信息了。

6. 优化咱们树莓派的系统

6.1 修改源

因为国外的源,咱们在国内的连接过去网速很慢,所以我们需要修改为国内的源,我修改的是中科大的源。

6.1.1 修改 sources.list 文件
sudo nano /etc/apt/sources.list
--注释其他内容,添加以下:
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/raspbian stretch main contrib non-free rpi
6.1.2 修改 raspi.list 文件
sudo nano /etc/apt/sources.list.d/raspi.list
--注释其他内容,添加以下:
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian stretch main ui
6.1.3 执行更新
sudo apt-get update
sudo apt-get upgrade

6.2 修改时区

sudo dpkg-reconfigure tzdata

找到亚洲 Asia,然后选择 shanghai 就可以了。

6.3 开机自启 ssh

第一种:

sudo raspi-config

进入选择找到 interfacing option 选择,然后找到 ssh,按回车使能 enable 就可以了。

第二种:

在终端命令行中启动 SSH 服务后,如果系统重启或关机后启动,SSH 服务默认是关闭的,依然需要手动启动,为了方便可以设置 SSH 服务开机自动启动,打开 /etc/rc.local 文件,在语句 exit 0 之前加入:/etc/init.d/ssh start

建议都试试,反之我的是可以了。

7. 安装 nginx

#安装
sudo apt-get install nginx
#启动
sudo /etc/init.d/nginx start
#重启
sudo /etc/init.d/nginx restart
#停止
sudo /etc/init.d/nginx stop

打开浏览器访问 192.168.0.104(你的树莓派 ip 地址),可以看到 nginx 的页面,说明安装好了。

我这边上传了我的博客,如下图

b08464af6d7af4f3e06d45017aa23588.png
图片

可以正常的看到页面了,但是这样只能在内网(局域网中)看到,我想让所有人都可以访问怎么办?

8. 内网穿透

内网穿透,意思就是将内网(本地)的 web 应用通过 nat 穿透到公网上,从而让别人可以访问到。

内网穿透目前主要由 ngrok 和 frp 两种,都非常好用,国内 ngrok 免费的有 ittun、sunny 和 natapp,这三个都是免费的,前面两个可以自定义域名,后面的需要 vip 版本才可以自定义域名。

我这三种都试过,我发现 sunny 的 arm 版本的 ngrok 客户端在我的树莓派运行不了,ittun 的和 natpp 的 ngrok 都可以,由于需要自定义域名,我使用的是 ittun 的 ngrok_arm 版本的。

使用方法这三者官网都有详细说明,大家自行查看。

这是正常运行时的截图,访问 http://zerow.ittun.com/ 时可以...

cad0bc114f30554a1227f087f5f6bed2.png
图片
55871db95495d92541a2c4ef333b9c03.png
图片

因为需要 ngrok 在后台运行,所以我用的是 screen 会话使其可以在后台运行。但是开启自启,还没有实现,万一断电或者断网了,我必须手动去运行一下 ngrok,这是目前没有解决的痛点。

9. 更多

树莓派不仅仅只是可以用于运行一个网站,还有很多很多的功能等待你的开发,可以多去看看树莓派实验室里面,很多大神都写了很多实用的教程。

这个zero w 状态信息如下:

21842b21e5004521c47e8cdf3c6b8ace.png
图片

在上面开启了一个 nginx 和 ngrok 服务,内存剩余还有 250MB,还是很舒服的,cpu 温度也不算高,运行两天了,基本在 37-39 之间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你搭建一台永久运行的个人服务器 的相关文章

随机推荐

  • 第07课:生活中的代理模式——帮我拿一下快递

    用程序来模拟生活 从剧情中思考代理模式 代理模式的模型抽象 代码框架 类图 基于框架的实现 模型说明 代理模式的优点 代理模式的缺点 应用场景 故事剧情 八月中秋已过 冬天急速飞来 一场秋雨一场寒 十场秋雨穿上棉 在下了两场秋雨之后 Ton
  • 微信小程序精通到入门---07 tabBar和导航跳转

    一 tabBar使用 tabBar就是微信小程序底部的tab框 每个框必须指定一个对应的页面 设置步骤如下 步骤1 在images文件下创建一个nav目录 并且创建了6个图片 3个tab 每个tab的active和非acitve状态各一张
  • ChatGPT+Ai绘图【stable-diffusion实战】

    ai绘图 stable diffusion生成 还有很大的提升空间 提示词1 Picture a planet where every living thing is made of light The landscapes are bre
  • 知道两数之和,然后在数组中找到,输出数组下标

    这一个是对于在一个数组当中 这个数组是给定的然后在其数组内查找两个数相加等于目标值的数 之后输出他们的数组下标 1 首先从理解题目入手 从题目中可以看出给定的数组中有几个数 然后给出目标结果值 2 根据给定的开头 c语言版 int twoS
  • Objective-C 类,数据成员,函数成员,对象,

    一 类 在ios中 类的声明和实现时分离的 也就是说不能写在同一个文件中 声明放在 文件中 实现放在 m 文件中 在实现文件中引入 h文件 import xxx h 声明一个类 import
  • Swagger简介

    欢迎访问本人博客 http wangnan tech 欢迎关注简书 点击打开链接 欢迎关注微信公众号 前言 Swagger 是一款RESTFUL接口的文档在线自动生成 功能测试功能软件 本文简单介绍了在项目中集成swagger的方法和一些常
  • git 报错 eslint --fix found some errors. Please fix them and try committing again.

    这个问题是 git add git commit m 注释 命令输入完成后的报错 eslint报错 解决 git commit no verify m 提交时的注释
  • 发票打印不全不完整的解决方案(Win10)

    发票不管怎么设置 不是二维码缺少一点 就是金额小数点后边的数字显示不全 具体原因是打印机默认纸张上A4 实际发票纸张要比A4宽度宽一点点 原来写过一篇程序方便的打印票据的控制 终于部分解决了 NET Drawing Printing中自定义
  • MySQL-分库分表详解(六)

    作者 小刘在C站 个人主页 小刘主页 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 学习两年总结出的运维经验 以及思科模拟器全套网络实验教程 专栏 云计算技术 小刘私信可以随便问 只要会绝不吝啬 感谢CSDN让你我相遇 前言
  • python--七夕小游戏

    众所周知 我们python编程语言是可以用来做网站应用的 也可以做客户端应用的 但是客户端不懂python 就会出现很多让人奔溃的事件 但是 我们可以通过python中的第三方模块将我们的脚本转成exe文件运行 1 打开cmd 进入到终端下
  • Material Design【Android-Toolbar,滑动菜单,悬浮按钮,卡片布局,下拉刷新和可折叠式标题栏及案例】

    文章目录 Material Design 界面设计 1 Toolbar 标题栏 2 滑动菜单 3 悬浮按钮和可交互提示 4 卡片布局 5 下拉刷新 6 可折叠式标题栏 Material Design 界面设计 1 Toolbar 标题栏 1
  • Eclipse 历史版本

    url http archive eclipse org eclipse downloads index php url
  • 2023年3月27日--4月22日(ue视频教程,10小时,合计1989小时,剩余8011小时)

    目前 ue视频教程进行到了智 慧 城 市 3 13 mysql 7 1 tf1 4 11 蓝图反射 1 9 moba 1 5 webapp 2 4 mmoarpg 00A 04 fps1 8 socket 2 57 Opengl 5 9 G
  • 【C++】队列(queue)的使用

    目录 一 queue 简介 二 queue 构造函数 三 queue 赋值操作 四 queue 数据存取 五 queue 其他操作 六 queue 总结分析 如果这篇文章对你有所帮助 渴望获得你的一个点赞 一 queue 简介 C 中 st
  • 元宇宙通证-二、元宇宙无限游戏的无限正和机遇

    元宇宙无限游戏的无限正和机遇 首先 我们需要为游戏正名 在保守者看了 游戏是互联网时代的 数字毒品 让年轻人沉迷其中无法自拔 在科技进步的推动者看了 游戏并非玩物丧志 而是改变世界的手段 游戏让我们用想象力创造了一个平行宇宙 打开了一个充满
  • 对数据进行删除过程出现invalid character错误

    错误背景 在springmvc mybatis maven项目中 连接oracle对数据进行删除操作报以下错误 DEBUG 2018 12 18 23 10 47 com mchange v2 c3p0 impl DefaultConnec
  • 【HBZ分享】ES的评分score机制的原理

    score类型 基础评分boost 默认2 2 逆向文档频率值 IDF 表示该词再文档中 ES中 出现的次数越多 表示越不重要 评分越低 关键词在文档中出现的频率 TF 表示该词在文档中出现的频率 频率越高表示越重要 评分越高 注意 IDF
  • 震惊,微信小程序可以设置网络字体!真香

    准备工作 获取字体链接 还原设计稿的时候需要用到如下特殊字体 google 的 Montserrat https fonts google com specimen Montserrat 选择这个字体 下载全部字体 将本地的字体文件上传到自
  • 【Kubernetes系列】Workloads(工作负载)

    文章目录 概述 工作负载资源 工作负载生命周期 概述 工作负载是在 Kubernetes 上运行的应用程序 在 Kubernetes 中 无论你的负载是由单个组件还是由多个一同工作的组件构成 你都可以在一组 Pod 中运行它 在 Kuber
  • 手把手教你搭建一台永久运行的个人服务器

    No 1 树莓派是什么 1 用我的话理解 2 市面上的型号 3 树莓派 zero w 4 更多树莓派 No 2 树莓派zero w安装系统 1 准备 2 第一步下载系统镜像 3 使用 Win32DiskImager 往内存卡中写入镜像 4