下面我将为你提供一个从零开始的详细指南,涵盖硬件准备、软件选择(以最推荐的 LAMP/LEMP 为例)、配置、安全防护和访问方式。

树莓派搭建网站服务器
(图片来源网络,侵删)

第一部分:准备工作

在开始之前,请确保你已经具备以下条件:

硬件清单

  • 树莓派:任何型号的树莓派都可以,但 Raspberry Pi 4 或 5 性能更好,能更好地处理流量。
  • 电源适配器:确保功率足够(Pi 4 推荐 5V 3A)。
  • MicroSD 卡:建议 Class 10 或 UHS-I 速度,容量至少 16GB,推荐 32GB 或以上。
  • 网络连接:以太网连接(推荐,更稳定)或 Wi-Fi。
  • 散热:7x24 小时运行,建议加装散热片或小风扇,防止过热降频。

软件与环境

  • 操作系统:推荐使用 Raspberry Pi OS (Legacy with recommended software),这个版本预装了很多常用工具,能省去很多安装步骤。
  • 工具
    • 树莓派 Imager:用于将系统镜像烧录到 MicroSD 卡。
    • SSH 客户端:用于远程连接树莓派,Windows 10/11 已内置,macOS/Linux 系统自带。
    • VNC 客户端(可选):用于远程图形桌面连接。

初始设置

  1. 使用 树莓派 Imager 将 Raspberry Pi OS 镜像烧录到 MicroSD 卡。
  2. 烧录完成后,在 boot 分区创建一个名为 ssh 的空文件(无后缀名),以启用 SSH 服务。
  3. 将 MicroSD 卡插入树莓派,连接电源、网线和显示器(或直接通过 SSH 连接)。
  4. 首次启动,通过屏幕或路由器管理页面找到树莓派的 IP 地址。
  5. 使用 SSH 连接树莓派:
    ssh pi@<你的树莓派IP地址>

    默认密码是 raspberry,首次登录后,强烈建议立即修改密码:

    passwd

第二部分:选择服务器架构并搭建

对于网站服务器,主要有两种主流架构:LAMP 和 LEMP。

  • LAMP:Linux (操作系统) + Apache (Web 服务器) + MySQL (数据库) + PHP (编程语言)
  • LEMP:Linux (操作系统) + Nginx (Web 服务器) + MySQL (数据库) + PHP (编程语言)

Nginx (Engine X) 相较于 Apache,在处理高并发静态资源时性能更优,配置更简洁,是目前更现代的选择。我们这里重点推荐搭建 LEMP 环境。

树莓派搭建网站服务器
(图片来源网络,侵删)

步骤 1:更新系统

在开始安装任何软件之前,先更新你的系统包列表和已安装的包,确保所有软件都是最新的。

sudo apt update
sudo apt upgrade -y

步骤 2:安装 Nginx Web 服务器

Nginx 是一个高性能的 HTTP 和反向代理服务器。

sudo apt install nginx -y

安装完成后,Nginx 会自动启动,你可以通过浏览器访问你的树莓派 IP 地址,如果看到 "Welcome to nginx!" 页面,说明安装成功。

步骤 3:安装 MySQL 数据库

MySQL 用于存储网站数据,WordPress 博客的文章、用户信息等。

sudo apt install mysql-server -y

安装完成后,运行安全脚本,它会引导你设置 root 密码、移除匿名用户等,这是非常重要的安全步骤。

sudo mysql_secure_installation

根据提示操作:

  1. VALIDATE PASSWORD COMPONENT? (设置密码验证组件) -> 选择 Y (推荐)
  2. Set root password? -> 设置一个强密码并记住
  3. Remove anonymous users? -> Y (移除匿名用户)
  4. Disallow root login remotely? -> Y (禁止 root 远程登录)
  5. Remove test database? -> Y (移除测试数据库)
  6. Reload privileges tables now? -> Y (立即重载权限表)

步骤 4:安装 PHP

PHP 是一种服务器端脚本语言,用于动态生成网页内容。

sudo apt install php-fpm php-mysql -y
  • php-fpm (FastCGI Process Manager) 是 Nginx 运行 PHP 的标准方式。
  • php-mysql 允许 PHP 连接 MySQL 数据库。

安装后,PHP-FPM 也会自动启动。

步骤 5:配置 Nginx 以支持 PHP

我们需要让 Nginx 知道如何处理 .php 文件,并将其交给 PHP-FPM 处理。

  1. 创建一个网站配置文件 我们将为我们的网站创建一个独立的配置文件。

    sudo nano /etc/nginx/sites-available/mywebsite
  2. 粘贴以下配置内容 将下面的内容复制并粘贴到打开的文件中,请将 your_domain_or_ip 替换为你的域名或树莓派的 IP 地址。

    server {
        listen 80;
        server_name your_domain_or_ip; # 替换成你的域名或IP
        root /var/www/mywebsite; # 网站根目录
        index index.php index.html index.htm;
        location / {
            try_files $uri $uri/ =404;
        }
        # 将所有 .php 文件请求传递给 PHP-FPM
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 注意这里的版本号,可能是 php8.0-fpm.sock 或 php8.2-fpm.sock
        }
        # 阻止访问隐藏文件
        location ~ /\.ht {
            deny all;
        }
    }

    注意fastcgi_pass 后面的 php8.1-fpm.sock 可能需要根据你安装的 PHP 版本进行修改,你可以用以下命令查找:

    ls /var/run/php/

    看到类似 php8.1-fpm.sock 的文件名,就用那个。

  3. 启用配置并测试 创建一个符号链接来启用这个站点配置。

    sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/

    删除默认的欢迎页面配置(可选):

    sudo rm /etc/nginx/sites-enabled/default

    测试 Nginx 配置是否正确:

    sudo nginx -t

    如果显示 syntax is oktest is successful,则配置正确。

  4. 重启 Nginx 使配置生效

    sudo systemctl restart nginx

步骤 6:创建网站根目录并测试 PHP

  1. 创建网站目录

    sudo mkdir -p /var/www/mywebsite
  2. 设置正确的权限 让 Web 服务器 (Nginx) 可以读取和写入这个目录。

    sudo chown -R www-data:www-data /var/www/mywebsite
    sudo chmod -R 755 /var/www/mywebsite
  3. 创建一个 info.php 文件来测试 PHP

    sudo nano /var/www/mywebsite/info.php

    在文件中输入以下内容:

    <?php
    phpinfo();
    ?>
  4. 访问测试 在浏览器中访问 http://<你的树莓派IP地址>/info.php,如果看到一个显示 PHP 详细信息的页面,恭喜你!你的 LEMP 服务器已经成功搭建并运行了!

    安全提示:测试完成后,为了安全,应立即删除 info.php 文件,因为它会暴露服务器配置信息。

    sudo rm /var/www/mywebsite/info.php

第三部分:部署一个网站 (以 WordPress 为例)

现在服务器环境已经好了,我们可以部署一个真正的网站,WordPress。

  1. 下载并解压 WordPress

    cd /tmp
    wget https://wordpress.org/latest.tar.gz
    tar -xzvf latest.tar.gz
  2. 将 WordPress 文件移动到网站根目录

    sudo mv wordpress/* /var/www/mywebsite/
  3. 设置权限

    sudo chown -R www-data:www-data /var/www/mywebsite
  4. 创建 MySQL 数据库和用户

    sudo mysql -u root -p

    输入你之前设置的 root 密码,然后执行以下 SQL 命令(请替换 your_db_name, your_user, your_password):

    CREATE DATABASE your_db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_user'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
  5. 完成 WordPress 安装 在浏览器中访问 http://<你的树莓派IP地址>,你会看到 WordPress 的安装界面,填写数据库名、用户名、密码等信息,然后按照提示完成安装。


第四部分:让网站从公网访问 (可选)

要让你的网站能被互联网上的任何人访问,你需要进行以下设置:

端口转发 (路由器设置)

  1. 登录你的路由器管理后台。
  2. 找到“端口转发”或“虚拟服务器”设置。
  3. 添加一条规则:
    • 外部端口80 (HTTP) 或 443 (HTTPS)
    • 内部 IP 地址:你的树莓派局域网 IP 地址 (168.1.10)
    • 内部端口80443
  4. 保存设置。

动态 DNS (DDNS)

如果你的家庭网络 IP 地址是动态变化的(每次重启路由器都会变),你需要一个 DDNS 服务。

  • 服务提供商:No-IP, DuckDNS 等(很多免费)。
  • 设置:在你的 DDNS 服务商网站上注册一个域名(如 myhome.ddns.net),并安装它们提供的客户端软件在树莓派上,该客户端会自动更新你的 IP 地址到域名。

安全性 (非常重要!)

直接将服务器暴露在公网上风险很高,请务必做到:

  • 使用 HTTPS:通过 Let's Encrypt 免费获取 SSL 证书,并配置 Nginx 支持 HTTPS,这可以加密所有流量。
  • 配置防火墙:使用 ufw (Uncomplicated Firewall) 只开放必要的端口(如 80, 443),关闭所有其他端口。
    sudo apt install ufw -y
    sudo ufw allow 22/tcp   # SSH
    sudo ufw allow 80/tcp   # HTTP
    sudo ufw allow 443/tcp  # HTTPS
    sudo ufw enable
  • 定期更新:保持系统和所有软件都是最新的。
    sudo apt update && sudo apt upgrade -y

恭喜你!你已经成功地在树莓派上搭建了一个功能完整的网站服务器,现在你可以:

  • 运行个人博客、作品集网站。
  • 作为家庭媒体服务器(如结合 Plex, Jellyfin)的 Web 界面。
  • 学习和测试各种 Web 技术。
  • 甚至可以作为一个轻量级的后端服务。

树莓派的功耗很低,非常适合 7x24 小时不间断运行,是一个绝佳的个人服务器入门平台。