Jonvy

导航

树莓派搭建web服务器

第一步:准备工作与虚拟环境

 

首先,确保你的树莓派系统(Raspberry Pi OS)是最新的,然后安装必要的软件包。

为什么需要虚拟环境? 虚拟环境(venv)就像一个独立的、干净的“小房间”,它把你的项目所需的所有 Python 库都隔离在里面。这样做的好处是:

  • 避免冲突:不同的项目可能需要同一个库的不同版本,虚拟环境可以防止版本冲突。

  • 保持系统整洁:它不会把库安装到你的系统全局目录,让你的树莓派系统保持干净。

  • 方便管理:你可以轻松地分享、备份或迁移你的项目,只需要复制虚拟环境和代码即可。

具体操作:

  1. 更新系统

    Bash
     
    sudo apt update
    sudo apt upgrade -y
    
  2. 创建项目目录

    Bash
     
    mkdir my_web_app
    cd my_web_app
    
  3. 创建并激活虚拟环境

    Bash
     
    python3 -m venv venv  # 创建名为 venv 的虚拟环境
    source venv/bin/activate  # 激活虚拟环境
    

    激活后,你的命令行提示符会多一个 (venv),表示你已进入虚拟环境。

 

第二步:安装 Flask 和编写代码

 

现在,你可以在虚拟环境里安装 Flask 库了。

  1. 安装 Flask

    Bash
     
    pip install Flask
    
  2. 编写你的第一个 Flask 应用: 在 my_web_app 目录中创建一个名为 app.py 的文件,并写入以下代码:

    Python
     
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def home():
        return 'Hello from Raspberry Pi Web Server!'
    
    if __name__ == '__main__':
        app.run(debug=True, host='0.0.0.0')
    
    • app.run(host='0.0.0.0') 这一行非常重要。host='0.0.0.0' 让你的服务器可以从树莓派的外部被访问。如果你不写这一行,服务器默认只在本地 127.0.0.1 运行,其他设备无法访问。

    • debug=True 在开发阶段很有用,当你的代码有改动时,服务器会自动重启。

 

第三步:运行 Flask 应用

 

在虚拟环境激活的状态下,运行你的应用。

Bash
 
python app.py

现在,你的树莓派 Web 服务器已经运行起来了!

如何访问? 在你的电脑或手机上,打开浏览器,输入树莓派的 IP 地址加上端口号 5000

  • 首先,你需要知道树莓派的 IP 地址,可以在树莓派上运行 hostname -Iifconfig 命令来获取。

  • 假设你的 IP 地址是 192.168.1.100,那么在浏览器中输入:http://192.168.1.100:5000

  • 如果一切顺利,你就会看到 “Hello from Raspberry Pi Web Server!” 的文本。

 

扩展和生产环境建议

 

虽然上面的方法可以让你快速启动一个服务器,但在实际生产环境中,你通常不应该直接使用 app.run()。这只是一个开发服务器,性能和安全性都有限。

更健壮的部署方式是使用一个专业的 WSGI 服务器,比如 Gunicorn,并通过 Nginx 作为反向代理来管理流量。

  1. 安装 Gunicorn

    Bash
     
    pip install gunicorn
    
  2. 用 Gunicorn 运行应用

    Bash
     
    gunicorn --bind 0.0.0.0:8000 app:app
    
    • --bind 0.0.0.0:8000 指定监听所有 IP 地址的 8000 端口。

    • app:app 的第一个 app 是你的文件名(app.py),第二个 app 是你在 app.py 中创建的 Flask 应用实例变量名。

通过这些步骤,你就可以在树莓派上搭建一个稳定、可访问的 Web 服务器了。

posted on 2025-08-18 16:35  不亮  阅读(70)  评论(0)    收藏  举报