如何搭建一台永久运行的个人服务器?
一、前言
由于本人在这段时候,看到了一个叫做树莓派的东东,初步了解之后觉得很有意思,于是想把整个过程记录下来。
二、树莓派是什么?
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。
你可以看到,最上面是一根普通的黑色签字笔,接下来是一个即插即用型的外接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.更多树莓派
关于更多树莓派型号或者使用教程你可以去树莓派实验室这个网站,上面有丰富的资源。
三、树莓派zero w安装系统
1.准备
你可能提前需要准备的东西如下:
-
16GB or 32GB 的SanDisk内存卡(注意是以前那种放在手机上,很小的哦)
-
一根最普通不过的usb安卓数据线(not type-c)
-
u盘格式化工具(推荐使用 SDFormatter)
-
系统烧写工具(Win32DiskImager)
-
树莓派系统(可以去官网下载)
我使用的是Raspbian Stretch Lite这个系统镜像,这个系统是官方制作的,lite是无桌面版的,只有黑漆漆的控制台,优点是体积小,省性能和内存。
名字带有desktop的是有桌面ui的,对不熟悉liunx系统的朋友可能更友好,但是体积很大,占用的性能也会更高。
2.第一步下载系统镜像
下载好你需要的系统镜像后,如下图
一开始只有一个zip的压缩包,大小大概360MB左右,你需要把它解压,得到上图的文件夹
然后进入文件夹可以看到一个img的镜像,大小为1.7GB左右
ps:这个官方的Raspbian镜像,如果是其他第三方的镜像,可能下载后的压缩包解压后不是img镜像,这种情况请另行百度解决
3.使用Win32DiskImager往内存卡中写入镜像
把内存卡插入读卡器后,插入电脑。打开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=1network={
ssid="你的wifi名字"
psk="你的wifi密码"
}
5.组装我们的最小主机并连接
取出读卡器中的内存卡,然后插入到zero w中,使用一根usb安卓数据线连接电源(5V1A)即可。等待几分钟,期间我们的zero w的指示灯会一直闪烁,很正常,等待指示灯常亮的时候,我们去路由器上,查看一下树莓派的ip地址。
可以看到我们zero w的ip为192.168.0.104,然后使用ssh连接工具(推荐使用putty)连接树莓派,初始账户为pi,密码是raspberry。
连接成功,如上图所示。这样我们的系统就正确无误的安装好了。
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就可以了。另外,搜索公众号Linux中文社区后台回复“私房菜”,获取一份惊喜礼包。
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的页面,说明安装好了。我这边上传了我的博客,如下图
可以正常的看到页面了,但是这样只能在内网(局域网中)看到,我想让所有人都可以访问怎么办?
8.内网穿透
内网穿透,意思就是将内网(本地)的web应用通过nat穿透到公网上,从而让别人可以访问到。
内网穿透目前主要由ngrok和frp两种,都非常好用,国内ngrok免费的有ittun、sunny和natapp,这三个都是免费的,前面两个可以自定义域名,后面的需要vip版本才可以自定义域名。
我这三种都试过,我发现sunny的arm版本的ngrok客户端在我的树莓派运行不了,ittun的和natpp的ngrok都可以,由于需要自定义域名,我使用的是ittun的ngrok_arm版本的
使用方法这三者官网都有详细说明,大家自行查看。
这是正常运行时的截图:
因为需要ngrok在后台运行,所以我用的是screen会话使其可以在后台运行。但是开启自启,还没有实现,万一断电或者断网了,我必须手动去运行一下ngrok,这是目前没有解决的痛点。
9.更多
树莓派不仅仅只是可以用于运行一个网站,还有很多很多的功能等待你的开发,可以多去看看树莓派实验室里面,很多大神都写了很多实用的教程。
我的zero w状态信息如下:
在上面开启了一个nginx和ngrok服务,内存剩余还有250MB,还是很舒服的,cpu温度也不算高,运行两天了,基本在37-39之间。
相关文章:

如何搭建一台永久运行的个人服务器?
一、前言 由于本人在这段时候,看到了一个叫做树莓派的东东,初步了解之后觉得很有意思,于是想把整个过程记录下来。 二、树莓派是什么? Raspberry Pi(中文名为树莓派,简写为RPi,(或者RasPi / RPI) 是为学习计算机编程…...

Ant Design+react 表单只读
表单禁用,样式不好看,不符合甲方标准,看了一下文档,select、radio等都不支持只读状态。 解决方法: 利用css3的point-events属性,设置为none 在查看弹窗时,传入一个变量,当变量为true…...

推荐系统三十六式学习笔记:原理篇.近邻推荐07|人以群分,你是什么人就看到什么世界
目录 协同过滤基于用户的协同过滤背后的思想原理实践1、构造矩阵2、相似度计算3、推荐计算4、一些改进 应用场景:总结 谈及推荐系统,不得不说大名鼎鼎的协同过滤。协同过滤的重点在于协同,所谓协同,也就是群体互帮互助,…...
要改进单例模式的实现以确保线程安全并优化性能,有几种常见的方法
要改进单例模式的实现以确保线程安全并优化性能,有几种常见的方法。以下是几种改进 ThreadUtil 单例实现的方法: ### 1. 懒汉式(线程安全版) 使用同步机制来确保线程安全,但只在第一次创建实例时同步,这样…...

k8s——Pod容器中的存储方式及PV、PVC
一、Pod容器中的存储方式 需要存储方式前提:容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。 首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态&…...
Java/Golang:活用interface,增加程序扩展性
场景 在paas中间件众多的场景下,做一款用于巡检多个paas组件健康状态的工具。工具的编写需要具备一定的扩展性,便于后续新增某个paas组件巡检的功能。 管理多个paas组件,需要方便扩展新增。 思路 使用面向对象编程思想,首先对…...

SQL语句练习每日5题(四)
题目1——查找GPA最高值 想要知道复旦大学学生gpa最高值是多少,请你取出相应数据 题解: 1、使用MAX select MAX(gpa) FROM user_profile WHERE university 复旦大学 2、使用降序排序组合limit select gpa FROM user_profile WHERE university 复…...

Java排序算法汇总篇,八种排序算法
排序算法汇总: Java排序算法(一):冒泡排序 Java排序算法(二):选择排序 Java排序算法(三):插入排序 Java排序算法(四):快速排序 Java排序算法(五):归并排序 Java排序算法(六):希尔排序 Java排序算法(…...

R语言探索与分析20-北京市气温预测分析
一、序言 近年来,人类大量燃烧煤炭、天然气等含碳燃料导致温室气 体过度排放,大量温室气体强烈吸收地面辐射中的红外线,造 成温室效应不断累积,使得地球温度上升,造成全球气候变暖。气象温度的预测一直以来都是天气预…...

2024年安全现状报告
2024 年安全现状报告有些矛盾。尽管安全专业人员的道路困难重重,比如说严格的合规要求、不断升级的地缘政治紧张局势和更复杂的威胁环境,但整个行业还是在取得进展。 许多组织表示,与前几年相比,网络安全变得更容易管理。组织之间…...
OV通配符ssl证书是什么
通配符https证书的产品比较丰富,为了方便区分,可以按照验证方式将通配符https证书分为DV基础型通配符https证书和OV企业型通配符https证书两种。其中OV通配符https证书申请条件高,审核也比较严格,相比于DV基础型通配符https证书&a…...

Selenium三种等待方式的使用!
UI自动化测试,大多都是通过定位页面元素来模拟实际的生产场景操作。但在编写自动化测试脚本中,经常出现元素定位不到的情况,究其原因,无非两种情况:1、有frame;2、没有设置等待。 因为代码运行速度和浏览器…...
websockets怎么工作的呢?
WebSockets是一种在单个TCP连接上进行全双工通信的协议,使得客户端和服务器之间的数据交换变得更加简单,并允许服务端主动向客户端推送数据。下面是WebSockets的工作原理: 1. **握手阶段**: - 客户端发起一个HTTP请求到服务器&…...
栈 数组和链表实现
stack 栈 LIFO后进先出 应用 实现递归 编辑器的撤回工作(按下ctrl z) 数组实现 // 列表的插入和删除从一端实现 那么就得到了栈 // array和linked lists//stack-Array based implementation #include<stdio.h> #include<stdlib.h> #def…...

如何备份和恢复华为手机?
智能手机已成为我们日常生活中不可或缺的一部分,它们存储着大量敏感数据。因此,确保数据安全,定期备份至关重要,以防手机意外丢失、损坏或被盗。 如果您拥有华为设备,并且正在寻找如何将华为手机备份到PC的方法&#…...

微波电路S参数测量实验方案
一、实验目的 用矢量分析仪测S参数,验证电磁波,检测电磁波在波导中的传播模式。 二、实验内容 用矢量分析仪测试微波滤波器的二端口S参数, 三、基本 四、实验步骤 1对矢量网络分析仪进行参数设置 2矢量网络分析仪进行校准 单端口校准…...
SpringTask Cron表达式
Cron表达式格式 1.Cron表达式格式 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: 秒 分 时 一个月第几天 月 一个星期第几天 年 &…...
docker与docker-compose安装
1.1 安装工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm21.2 添加docker的yum库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast1.3 安装Docker sudo yum install docke…...

跨境反向海淘系统:业务流程解析与未来发展展望
随着全球化的深入发展和互联网技术的飞速进步,跨境购物已经成为越来越多消费者日常生活中的一部分。在这个过程中,反向海淘系统以其独特的优势,逐渐崭露头角,成为跨境电商领域的新星。作为一名在跨境反向海淘系统业务中耕耘了10年…...
Python语言字母:深度解析与魅力探索
Python语言字母:深度解析与魅力探索 Python,作为一种广泛使用的编程语言,其字母背后蕴含着丰富的内涵和深厚的魅力。本文将从四个方面、五个方面、六个方面和七个方面,深入剖析Python语言字母所蕴含的秘密和魅力,带您…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...