0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你如何手搓一个树莓派网络服务器!

上海晶珩电子科技有限公司 ? 2025-07-12 08:23 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

使用树莓派的定义和好处

网络服务器是指利用HTTP及其他协议进行数据传输,处理通过万维网提交的客户端请求的软硬件组合。网络服务器的主要功能是存储、处理并向客户端(通常是网页浏览器)传送网页。客户端与服务器之间的交互遵循客户端-服务器模型。

HTTP是用于在互联网上传输超文本请求和信息的协议。它是网络上任何数据交换的基础,用于在客户端和服务器之间传输超文本请求和响应。

HTTPS是HTTP的安全版本,其中客户端和服务器之间的通信使用传输层安全(TLS)前身为安全套接层(SSL)进行加密。

最常见的网络服务器包括Apache、Nginx和微软的互联网信息服务(IIS)。

树莓派操作系统是基于Debian的操作系统,为许多开发者提供了熟悉的环境,并支持广泛的编程语言和框架。

使用树莓派进行网络托管的主要优势之一在于其成本效益。相比传统服务器硬件,树莓派价格显著更低,为小型项目、个人网站或开发环境提供了经济实惠的解决方案。我们推荐使用较新型号,如配备四核CPU和8GB内存的树莓派。

应用场景

本地网络

仅在家庭或小型办公室等本地网络内访问网络服务器。

6622de46-5eb6-11f0-9cf1-92fbcf53809c.jpg

外部网络

在本地网络中发布网络服务器,以便从任何地方进行远程访问。

662f6db4-5eb6-11f0-9cf1-92fbcf53809c.jpg

开发者部署

在本地网络中配置一个或多个网络服务器,与开发团队共同开发,并在生产网络服务器上发布网站,以便远程访问。

663a85e6-5eb6-11f0-9cf1-92fbcf53809c.jpg

实施步骤

在树莓派上选择Apache还是Nginx作为网络服务器时,了解各自的优缺点以及它们在树莓派等资源有限硬件上的表现至关重要。

Apache

66460ef2-5eb6-11f0-9cf1-92fbcf53809c.png

优点:

成熟与普及:Apache是最古老、最广泛使用的网络服务器之一。它文档齐全,拥有庞大的社区。

灵活性:Apache高度可配置,支持动态模块加载,允许根据需要启用或禁用功能。

兼容性:Apache与多种应用程序兼容,包括许多流行的内容管理系统(CMS),如WordPress、Joomla和Drupal。

htaccess支持:Apache支持.htaccess文件,允许进行目录级别的配置。

缺点:

资源消耗:与Nginx相比,Apache可能更消耗资源,这在CPU和内存有限的树莓派上可能是一个问题。

性能:在高负载下,Apache的性能不如Nginx高效,尤其是在提供静态内容时。

Nginx

6653d3ac-5eb6-11f0-9cf1-92fbcf53809c.png

优点:

性能:Nginx的特点之一是处理速度快,CPU资源消耗低。它能够高效处理大量并发连接,是高流量网站或Web应用程序的理想选择。

事件驱动架构:Nginx采用事件驱动、异步架构,比Apache的基于进程的模型更具可扩展性和效率。

静态内容:Nginx擅长快速高效地提供静态内容(如图像、CSS、JavaScript)。

反向代理和负载均衡:Nginx经常用作其他网络服务器或应用程序的反向代理和负载均衡器,以分配流量并提高性能。

缺点:

配置复杂性:与Apache相比,Nginx的配置对初学者来说可能不太直观。然而,一旦掌握,它既强大又灵活。

缺乏.htaccess支持:Nginx不支持.htaccess文件。所有配置必须在主配置文件中完成,这对某些用户来说可能不太方便。

树莓派上的性能表现:

虽然Apache能够在树莓派上运行,但由于其资源消耗较高,在高负载下可能表现不佳。它更适合中小型项目或当与特定应用程序的兼容性是首要考虑因素时。

Nginx因其内存占用低且能够高效处理静态内容,通常是树莓派的首选。它更适合需要高并发和低延迟的高流量网站或应用程序。

应用场景

请选择Apache,如果需要广泛的应用程序兼容性、使用.htaccess进行目录级别配置,或者已经熟悉其配置和模块系统。

请选择Nginx,如果需要轻量级、高性能的网络服务器,能够处理大量并发连接并高效提供静态内容,它也是设置反向代理或负载均衡器的不错选择。

Nginx

安装与基本配置

1.将Raspberry Pi Imager下载并安装到带有SD卡读卡器的计算机上。将您要用于树莓派的SD卡插入读卡器,并启动Raspberry Pi Imager。

https://www.raspberrypi.com/software/

2.选择树莓派设备。

3.选择Raspberry Pi OS,并将系统写入您的树莓派。

4.将SD卡插入树莓派并通电启动。

5.打开终端并运行以下命令更新系统:

sudoapt updatesudo apt upgrade

6. 安装 Nginx:

sudoapt install nginx

7.在网页浏览器中导航到树莓派的IP地址,查看Nginx欢迎页面以进行检查。

树莓派“定居”完全指南:一键设置静态IP,稳定又高效!

8.您可以在以下文件夹和文件中启动Web服务器项目:

● /etc/nginx/nginx.conf: File with Nginx configurations

● /etc/nginx/sites-available/: Folder with websites configurations

● /etc/nginx/sites-enabled/: Folder with websites enable to access.

9.要从本地网络外部访问您的网络服务器,您需要在路由器上设置端口(80:HTTP或443:HTTPS)转发,并使用网页浏览器访问:http://<您的树莓派IP>。

监控

1.启用Nginx状态页面

Nginx内置了一个状态模块,可用于监控基本指标。要启用它:

sudo nano/etc/nginx/sites-available/default

在服务器块内添加:

location /nginx_status { stub_status; allow 127.0.0.1;# Only allow requests from localhost deny all;# Deny all other requests}

测试配置并重启Nginx:

sudonginx -tsudo systemctl restart nginx

您现在可以通过访问http://<您的树莓派IP>/nginx_status来查看状态页面。

2.监控工具

使用htop和top:这些工具提供系统资源的实时监控:

sudoapt install htophtop

设置日志监控:

Nginx记录请求和错误,可以使用tail等工具进行监控:

tail-f /var/log/nginx/access.logtail-f /var/log/nginx/error.log

安全考虑

要进行安全设置,请编辑Nginx配置文件:nano /etc/nginx/nginx.conf或网站配置文件:nano /etc/nginx/site-available/example.conf

配置Nginx使用SSL

使用Let’s Encrypt获取免费SSL证书:

sudo apt-getinstall certbot python3-certbot-nginxsudo certbot--nginx

按照提示为您的域名设置SSL。这将自动配置Nginx使用HTTPS。

限制请求大小

通过限制客户端请求大小来防止某些类型的攻击:

server{ client_max_body_size1M;}

● 隐藏Nginx版本

编辑Nginx配置以隐藏版本号:

http{ server_tokensoff;}

● 基本安全头

在Nginx配置中添加安全头:

server{ add_headerX-Content-Type-Options nosniff; add_headerX-Frame-Options"SAMEORIGIN"; add_headerX-XSS-Protection"1; mode=block";}

性能优化

要进行性能优化设置,请编辑Nginx配置文件:nano /etc/nginx/nginx.conf

● 使用高效日志记录

减少日志记录以节省CPU和磁盘I/O。您可以关闭访问日志或降低日志级别:

http{ access_logoff; error_log/var/log/nginx/error.logcrit;}

● 启用Gzip压缩

启用Gzip压缩可减小响应大小:

http { gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;}

● 缓存静态内容

设置静态内容缓存以减少负载:

http{ includemime.types; default_typeapplication/octet-stream; sendfileon; tcp_nopushon; tcp_nodelayon; keepalive_timeout65; types_hash_max_size2048; include/etc/nginx/conf.d/*.conf; include/etc/nginx/sites-enabled/*; open_file_cachemax=1000inactive=20s; open_file_cache_valid30s; open_file_cache_min_uses2; open_file_cache_errorson;}

● 优化缓冲区和超时

调整缓冲区大小和超时以更好地适应树莓派有限的内存:

http{ client_body_buffer_size10K; client_header_buffer_size1k; client_max_body_size8m; large_client_header_buffers21k; send_timeout2; client_body_timeout10; client_header_timeout10; keepalive_timeout55; }

● 限制连接速率

通过限制新连接的速率来保护服务器免受攻击:

nginxhttp { limit_conn_zone$binary_remote_addrzone=addr:10m; server{ limit_connaddr20; }}

实际应用示例

文件共享和备份服务器

使用树莓派作为简单的文件服务器,共享文件和备份重要数据。示例:在树莓派上运行Samba服务器,提供网络附加存储(NAS)功能。示例:Nextcloud

665da760-5eb6-11f0-9cf1-92fbcf53809c.png

物联网数据记录

收集和可视化来自各种物联网设备和传感器的数据。示例:一个气象站项目,使用在Nginx下运行的Domoticz将温度、湿度和其他环境数据记录到在树莓派上运行的网络服务器上。

6673d198-5eb6-11f0-9cf1-92fbcf53809c.jpg

个人网站或博客

在树莓派上托管个人网站或博客。这是展示作品或分享想法的好方法,无需依赖第三方托管服务。示例:使用Nginx和Wordpress在树莓派上托管使用HTML/CSS构建的个人作品集网站。

668422be-5eb6-11f0-9cf1-92fbcf53809c.jpg

结论

将树莓派设置为网络服务器是一种经济高效且多功能的解决方案,适用于各种项目。无论您是托管个人网站、管理物联网数据还是开发应用程序,树莓派都提供了一个强大的平台,可以根据您的需求进行定制。通过遵循本指南中概述的步骤,您可以成功配置和优化服务器,以实现性能和安全性。充分利用树莓派的灵活性,探索它在网络托管及其他领域提供的无限可能性。

原文地址:

https://www.sunfounder.com/blogs/news/how-to-set-up-a-raspberry-pi-web-server-a-comprehensive-guide

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    7173

    浏览量

    125862
  • 网络服务器
    +关注

    关注

    0

    文章

    33

    浏览量

    11195
  • 树莓派
    +关注

    关注

    122

    文章

    2031

    浏览量

    107663
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    网络服务器的工作原理是什么?

    如果通过启动任务使系统支持了网络服务器功能,则系统可提供网络数据服务器或串口服务器功能;
    发表于 10-21 09:14

    LoRaWAN网络服务器有哪些应用

    LoRaWAN是什么?LoRaWAN网络服务器有哪些应用?为何要使用扩频技术?
    发表于 09-24 13:19

    是否可以更改stm32H743网络服务器上的html文件以便能够访问其他类似的网络服务器呢?

    我有带有 LWIP 的 stm32H743 网络服务器,在显示数据的 dhcp 上工作正常。是否可以更改网络服务器上的 html 文件以便能够访问其他类似的
    发表于 12-15 08:41

    ESP访问网络服务器失败的原因?

    通过网络服务器方法将更新的草图传输到 ESP 模块,如这里所述 o 网络服务器正在 PC 上运行。这是工作。我可以访问它并从智能手机下载更新文件问题:o ESP 无法访问 PC 上的网络服务器。错误代码
    发表于 02-27 07:34

    怎样使用与softAP相同的ESP32来连接网络服务器呢?

    我有使用 PainlessMesh 库设置的网格,还有使用 espAsyncWebServer 的网络服务器。我可以通过路径中的路由
    发表于 03-02 07:31

    如何从网页控制多个网络服务器

    在另一个论坛上有关于如何从网页控制多个网络服务器的问题。 解决方法很简单。
    发表于 04-28 07:32

    网络服务器,网络服务器工作原理是什么?

    网络服务器,网络服务器工作原理是什么? 网络服务器是指在网络环境下运行相应的应用软件,为网上用户提供共享信息资源和各种服
    发表于 03-22 11:22 ?1.5w次阅读

    基于OPNET实现跨层网络服务器模型的构型

    由于当前网络规模以及网络数据复杂度的逐步增大,给网络服务器性能带来了严峻的挑战,网络拥塞以及服务器超载等问题亟待解决。为解决上述问题,本文在
    发表于 11-05 11:08 ?5次下载
    基于OPNET实现跨层<b class='flag-5'>网络服务器</b>模型的构型

    关于网络服务器的安全维护技巧

    网络服务器的恶意网络行为包括两方面:是恶意的攻击行为,如拒绝服务攻击,网络病毒等等,这些行
    发表于 09-04 17:30 ?1050次阅读

    服务器网络服务器之间的区别是怎样的

    很多人对网络服务器的概念比较模糊,所以想知道网络服务器是不是云服务器。所以今天小编给大家说说网络服务器和云服务器有何区别?
    的头像 发表于 07-02 17:58 ?6113次阅读

    基于网络服务器的物联网门锁系统

    电子发烧友网站提供《基于网络服务器的物联网门锁系统.zip》资料免费下载
    发表于 11-09 09:34 ?0次下载
    基于<b class='flag-5'>网络服务器</b>的物联网门锁系统

    用ESP32制作网络服务器

    电子发烧友网站提供《用ESP32制作网络服务器.zip》资料免费下载
    发表于 11-25 11:53 ?1次下载
    用ESP32制作<b class='flag-5'>网络服务器</b>

    IzoT 网络服务器数据表

    IzoT 网络服务器数据表
    发表于 02-03 19:33 ?0次下载
    IzoT <b class='flag-5'>网络服务器</b>数据表

    IzoT 网络服务器数据表

    IzoT 网络服务器数据表
    发表于 07-04 20:05 ?0次下载
    IzoT <b class='flag-5'>网络服务器</b>数据表

    LoRaWAN网关与常见网络服务器的协议

    。ChirpStack是开源的LoRaWAN网络服务器,用于管理和处理LoRaWAN设备和数据。在LoRaWAN网络中,网关与ChirpStack
    的头像 发表于 09-15 08:22 ?1134次阅读
    LoRaWAN网关与常见<b class='flag-5'>网络服务器</b>的协议