用树莓派构建一台服务器,永久运行网站

news/2024/5/9 14:46:04/文章来源:https://blog.csdn.net/qq_36189144/article/details/103625731

点击上方“阿拉奇学Java”,选择“置顶或者星标

优质文章第一时间送达!


推荐阅读 |微服务 2.0 技术栈选型手册

No.1前言

由于本人在这段时候,看到了一个叫做树莓派的东东,初步了解之后觉得很有意思,于是想把整个过程记录下来。

No.2树莓派是什么?

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. 更多树莓派

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

No.3树莓派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=CNctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_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 updatesudo 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 的页面,说明安装好了。
我这边上传了我的博客,如下图

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

8. 内网穿透

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

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

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

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

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

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

9. 更多

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

我的 zero w 状态信息如下:

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

本文原载于 SegmentFault 社区作者:彭小呆 链接:https://mp.weixin.qq.com/s/Hbf0bh-TH4ZPGvas0IH9vg

看到这里啦,说明你对这篇文章感兴趣,帮忙转发一下或者点击文章右下角在看。感谢啦!关注公众号,回复「进群」即可进入无广告技术交流群。同时送上250本电子书+学习视频作为见面礼!有你想看的精彩 微服务 2.0 技术栈选型手册一篇文章说清楚 Linux 应急响应技巧字节跳动如何用7年, 成为腾讯最可怕的对手?Java 里的 for (;;) 与 while (true),哪个更快?Java网络编程总结,看了都说好!IntelliJ IDEA 2019.3 发布,启动更快,性能更好(新特性解读)你还在费力的从零搭建项目吗?细思极恐,你真的会写java吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_809862.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建议收藏:2020年,给你8个程序员接私活的网站

点击上方“阿拉奇学Java”,选择“置顶或者星标”每天早晨07点28分, 与你相约!推荐阅读 | 一个退休程序员,用高中几何方法,让百年数学难题逼近极限2019互联网圈不好混,不是每个公司都能像腾讯云每人一部iPhone 11&…

别总写代码,这 130个网站比涨工资都重要

点击上方“阿拉奇学Java”,选择“置顶或者星标”每天早晨00点00分, 与你相约!往日回顾:干货| 今日头条、抖音推荐算法原理全文详解!搞学习知乎:www.zhihu.comTED(最优质的演讲):http…

jwt单点登录_了解前端,爱上前端 | 网站各种登录方式对比

传统网页登录最简单的登录方式,是在每一次使用系统的时候进行身份的鉴定,一旦认证信息过期了,便跳出登录界面,让用户输入用户名和密码。将用户名和密码通过加密处理后,发到后端进行登录认证。后端会依据此次会话的时间…

这么多编程学习网站,总有一个适合你吧

点击上方“阿拉奇学Java”,选择“置顶或者星标” 每天早晨00点00分,与你相约!往日回顾:Java 处理 Exception 的 9 个最佳实践,你做对了吗?前 言今天分享几个适用于编程开发自学的学习网站,主要涉及编程学习…

近期你已经授权登录过_原来你的qq授权登录过这么多的网站 一键查出撤销了吧...

现在好多网站都支持社交账号登录,而我每次习惯直接点击QQ的一键登录,然后QQ就会提示授权给该网站,时间一长,根本不记得自己的QQ账号究竟注册过哪些网站了。而且有些网站还会时不时的给你推送一些消息,很是烦人&#xf…

用 Nginx 禁止国外 IP 访问我的网站..

来源:toutiao.com/i6860736292339057156/先来说说为啥要写这篇文章,之前看了下 Nginx 的访问日志,发现每天有好多国外的 IP 地址来访问我的网站,并且访问的内容基本上都是恶意的。因此我决定禁止国外 IP 来访问我的网站。想要实现…

怎样给一个php网站搬家

PHP网站分为网站程序和数据库两部分,因此搬家时要分2部分考虑:一是程序,二是数据。 程序部分: 比如旧空间是discuz3.4版本,那么新空间也要安装一个全新的discuz3.4版本。注意版本要一致,后期导入数据库才不…

洛奇英雄传老福单机版服务器不显示,洛奇英雄传:永恒官方网站-这一次让经典成为永恒...

公会教学:玩法套路全领悟2017年02月27日今天跟大家分享下《洛英:永恒》的公会玩法,一个决定了在游戏里是当一个万人敬仰的大佬还是一条躺尸的咸鱼的玩法。小伙伴们等级到达十一级之后,游戏就会开启公会玩法了。此时大家会面临两个…

基于django的视频点播网站开发-step14-数据总览功能

数据总览功能,是对网站中产生的数据进行一个统计,统计出视频数、发布数、用户数、评论数,等等。让管理者对网站数据有一个清晰的认识,做到心中有数。 在本站中,笔者一共列举了下面几种数据:视频数、发布中未…

小浩算法网站上线啦!

小浩算法的配套学习网站上线了,虽然还很简陋,虽然内容还没有完全整编进去,虽然还没对每道题目都加上各语言的代码。但是,我还是让它上线啦。http://www.geekxh.com这不是我第一次做网站了,好多年前就用 WordPress 搭建…

全宇宙著名网站中使用的编程语言

为什么80%的码农都做不了架构师?>>> 全宇宙最流行也就是访问巨大的网站有个共同之处,那就是动态的网站。下面看看这些宇宙之最网站所使用的编程语言: 转载于:https://my.oschina.net/766/blog/211248

如何制作出吸引潜在用户的网站?

我们都知道企业建网站目的得到更多的潜在用户,那么现在建出企业需求的、吸引潜在用户的网站呢? 下面搜客建站就来和大家说说:如何制作出吸引潜在用户的网站? 一、网站页面的风格设计 设计网站就好比我们平时评论一个女人美不美…

网站软件开发规范(某门户网站的)

网站软件开发规范(某门户网站的) --------------------------------------------------------------------------------1数据库使用规范1.1服务器上有关数据库的一切操作只能由服务器管理人员进行。1.2程序中访问数据库时使用统一的用户、统一的连接文件访问数据库。1.3原则上…

【前端】低版本IE浏览器访问网站一片空白

最近在客户那里,发现一个奇葩的问题,系统上IE浏览器访问网站一片空白,显示无法访问。 但是相同的网站系统,在我们的电脑上又可以访问且IE浏览器版本相同,没法只有,装虚拟模拟客户环境复现一下了。 发现在客…

DNS与网站访问流程

1:dns与网址url简介 DNS是域名系统(DomainNameSystem)的缩写,域名系统是一中庞大而复杂的系统,但我们这里讲解重心并不是这个系统,而是指本地电脑dns是什么 讲到dns,我们就不得不讲讲网址和域名,我们经常会…

Apache网站的概述

一:Web服务概述 在Internet应用中,Web服务无疑是最为主流的应用系统,有了web站点,企业可以充分展示自己的产品,公司,宣传自己的企业形象,提供各种网上交流,业务平台,电子…

Apache网站的部署

一:Apache部署 方法一: https://www.apache.org/在网站 https://www.apache.org/ 中下载软件包 点击download 下载 找到httpd-2.4.46.tar.gz,右键复制链接 wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.46.tar.gz …

四:Tomcat自定义默认网站目录

1&#xff1a;自定义默认网站目录 《1》&#xff1a; mkdir -pv /web/webapp 创建 《2》&#xff1a; vim /web/webapp/index.jsp 编写文件 《3》&#xff1a;写入&#xff1a; <% page language"java" import"java.util.*" pageEncoding"UTF…

GitHub代下载(文件加速)网站列表

本文作者: 峡州仙士 原文链接: https://cjh0613.github.io/blog/githubproxy.html 声明: 如文章有更新&#xff0c;将先在本网站&#xff08;峡州仙士之页&#xff09;发布&#xff01;&#xff08;可百度&#xff09;| 本网站所有文章除特别声明外&#xff0c;均采用 BY-NC-SA…

您与所提供的网站有什么关系? 告诉我们一些关于您的业务的情况。

您与所提供的网站有什么关系? 告诉我们一些关于您的业务的情况。谁是您的客户&#xff0c;他们为您支付了什么&#xff1f;这两个怎么填? 老是说无效文本&#xff1f; 答&#xff1a;很多朋友在注册payoneer账户的时候&#xff0c;资金入账前&#xff0c;填写全球支付服务问…