树莓派LNMP + wordpress简易搭建

? 目标:

  • 使用 32GB microSD 卡(无需 SSD,但会优化性能)
  • 安装 轻量级系统 + 高效 Web 服务
  • 部署 WordPress 博客(主流、易用)
  • 通过 cpolar 内网穿透实现外网访问
  • 全程图形化或简单命令操作,适合新手

? 第一步:准备工作

所需硬件

  • 树莓派 4B(4GB)
  • 32GB 或更大 microSD 卡(建议 Class 10 / A2 级别,如 SanDisk Ultra)
  • 读卡器(用于电脑写入系统)
  • 电源(5V/3A 官方电源最佳)
  • 网线(推荐有线连接,更稳定)

所需软件(在 Windows 电脑上操作)

  1. Raspberry Pi Imager (官方烧录工具)
    ? 下载地址:https://www.raspberrypi.com/software/
  2. SD 卡格式化工具(可选)
    ? https://www.sdcard.org/downloads/formatter/

? 第二步:烧录轻量系统到 SD 卡

我们选择 Raspberry Pi OS Lite(64位) ------ 无图形界面,节省内存和 CPU。

操作步骤:

  1. 格式化 SD 卡(可选但推荐)

    • 插入 SD 卡 → 打开 SDFormatter → 选择"Overwrite format" → 格式化
    • 如果写入失败,多使用quick format,按照提示操作多试几遍

  2. 打开 Raspberry Pi Imager

    • Device选择:** raspberrypi Pi 4**
    • 点击 CHOOSE OS
    • 选择:Raspberry Pi OS (other) → Raspberry Pi OS Lite (64-bit)
  3. 点击 存储设备CHOOSE STORAGE → 选择你的 SD 卡

  4. 关键:

    • 勾选:
      • ? 启用 SSH 和配置 Wi-Fi(可选)
      • ? Set hostname : raspberrypi-blog
      • ? Enable SSH : 选择 Use password authentication
      • ? Set username and password :
        • 用户名:lnh(或其他你喜欢的,如 admin
        • 密码:设置一个强密码(记住!)
      • ? Configure wireless LAN (如果你不用网线)
        • SSID: 你的 Wi-Fi 名称
        • Password: Wi-Fi 密码
        • Country: China
  5. 点击 SAVE → 开始写入

    • 等待 5~10 分钟,完成后弹出 SD 卡

如果WIFI 无法连接,执行以下操作:修改wifi

  1. 配置树莓派:sudo raspi-config
  2. 配置国家: Localisation options -> WLAN country
  3. 确认无线模块是否使能nmcli radio wifi,如果没有使能,将无线模块使能nmcli radio wifi on
  4. 查找wifi信号nmcli dev wifi list
  5. 连接wifisudo nmcli --ask dev wifi connect <example_ssid>
  6. 输入密码

?? 第三步:首次启动树莓派并更新系统

  1. 将 SD 卡插入树莓派,接通电源和网线(或 Wi-Fi)
  2. 等待 1~2 分钟启动完成
  3. 在电脑上用 SSH 工具 (如 Windows 自带的 PowerShell 或 PuTTY)连接:
bash 复制代码
ssh lnh@raspberrypi-blog.local
# 或直接用 IP(可在路由器后台查看,如 192.168.1.100)
ssh lnh@192.168.1.100

输入你设置的密码。

  1. 更新系统(重要!)
  • 更换软件源
bash 复制代码
sudo nano /etc/apt/sources.list.d/debian.sources
# 将deb.debian.org 为 mirrors.aliyun.com
  • 更新系统
bash 复制代码
sudo apt update && sudo apt upgrade -y
sudo apt install -y vim git curl wget ufw
  1. 设置时区(可选但推荐)
bash 复制代码
sudo timedatectl set-timezone Asia/Shanghai

? 第四步:安装轻量 Web 环境(LEMP)

LEMP = Linux + Nginx + MariaDB + PHP

比 Apache 更省资源!

1. 安装 Nginx

bash 复制代码
sudo apt install -y nginx
sudo systemctl enable nginx

2. 安装 MariaDB(数据库)

  • 有些OS的数据库操作不同,查看OS版本信息cat /etc/os-release
安装数据库
bash 复制代码
# 安装MariaDB
sudo apt install -y mariadb-server
# 启动并启用服务
sudo systemctl enable --now mariadb
# 直接以 root 身份登录(无需密码,因默认使用 unix socket 认证)
sudo mysql -u root
sudo mysql -u root -p
MariaDB 安全配置
sql 复制代码
-- 删除匿名用户
DELETE FROM mysql.user WHERE User='';
-- 禁止 root 远程登录(安全!)
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
-- 删除测试数据库
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
-- 刷新权限
FLUSH PRIVILEGES;
-- (可选)为 root 设置密码(非必须,但建议)
-- 如果你希望以后能用密码登录 root,取消下面注释:
-- ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码';
EXIT;

3. 安装 PHP(含必要扩展)

bash 复制代码
sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip

4. 配置 Nginx 支持 PHP

编辑默认站点配置:
bash 复制代码
sudo nano /etc/nginx/sites-available/default
找到 location ~ \.php$ 部分,取消注释并修改为:
nginx 复制代码
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;  # 注意版本号,可用 ls /run/php/ 查看
}

保存(Ctrl+O → Enter → Ctrl+X)

测试配置并重启:
bash 复制代码
sudo nginx -t
sudo systemctl reload nginx
确认Nginx 正常运行
bash 复制代码
sudo systemctl status nginx

确认 Nginx 正常运行显示 active (running)

没有红色错误(如 failed、cannot bind to port)

? 此时访问 http://树莓派IP 应看到 "Welcome to nginx!"

  • 如果打不开:
    1. 检查树莓派和电脑是否在同一局域网
    2. 运行 ip a 查看树莓派 IP(通常是 eth0 或 wlan0 下的 inet 192.168.x.x)
    3. 检查防火墙:sudo ufw status(如果启用了,确保放行 80 端口)
检查 PHP-FPM 是否运行
bash 复制代码
# 查看php版本
php --version # 或 ls /etc/php/

sudo systemctl status php8.4-fpm    # 注意:版本可能是 8.4 或 8.3

确认 PHP-FPM 正常运行显示 active (running)

没有红色错误(如 failed、cannot bind to port)

测试 Nginx + PHP 能否协同工作
  • 排查错误
bash 复制代码
# 查看 PHP-FPM 实际 socket 路径
sudo ls /run/php/
# 或者
sudo find /run -name "*fpm.sock" 2>/dev/null
# 通常类似:php8.4-fpm.sock
  • 排查 Nginx 配置
    sudo nano /etc/nginx/sites-available/default # 找到server { ... }确保关键部分: 注意location的最后一个大括号}
Nginx 复制代码
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.4-fpm.sock;  # ← 这里必须匹配你的实际 socket!
}
  • 测试 Nginx 配置并重载:
bash 复制代码
# 检查语法是否正确
sudo nginx -t

正常输出:

bash 复制代码
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  • 重载配置:

    sudo systemctl reload nginx

  • 测试 PHP

    echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php

?浏览器访问:http://你的树莓派IP/test.php,预期结果:

显示 PHP 信息页面(包含 PHP 版本、模块列表等)

页面中有 mysql, mysqli, pdo_mysql, gd, mbstring 等模块(说明扩展已加载)

? 如果显示"File not found"或下载文件:

→ 说明 Nginx 没正确处理 .php 请求,回到第四步检查 Nginx 配置(特别是 fastcgi_pass 的 socket 路径是否匹配)。

  • 测试完记得删除:
bash 复制代码
sudo rm /var/www/html/test.php

? 第五步:安装 WordPress 博客

1. 创建数据库

用 root 登录
bash 复制代码
sudo mysql -u root

? 能直接进入 MariaDB [(none)]> 提示符 → 成功!

创建 WordPress 数据库
sql 复制代码
-- 创建数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '你的强密码';
-- 给用户授权
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
-- 查看数据
SELECT User, Host FROM mysql.user WHERE User = 'wpuser';
-- 查看用户权限
SHOW GRANTS FOR 'wpuser'@'localhost';
EXIT;
用 wpuser 测试连接(模拟 WordPress 行为)
bash 复制代码
mysql -u wpuser -p wordpress

→ 输入你设置的密码

? 预期结果:

成功进入 MariaDB 命令行

提示符显示 MariaDB [wordpress]>

输入 EXIT; 退出。

? 如果提示"Access denied":

→ 回到数据库步骤,重新检查:

sql 复制代码
-- 确保用户存在
SELECT User, Host FROM mysql.user WHERE User = 'wpuser';
-- 确保权限正确
SHOW GRANTS FOR 'wpuser'@'localhost';
检查文件权限(WordPress 安装必需),

WordPress 需要写入 /var/www/html 目录。

bash 复制代码
ls -ld /var/www/html

? 预期结果:

复制代码
drwxr-xr-x 2 www-data www-data 4096 ...

如果不是 www-data:www-data,修复:

bash 复制代码
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

?? 不要设 777!755 + 正确属主足够安全。

? 如果以上检查全部成功,恭喜你!LEMP 环境已完美就绪。

2. 下载 WordPress

bash 复制代码
cd /var/www/html
sudo rm index.html # 删除 nginx 默认页
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz --strip-components=1
sudo chown -R www-data:www-data /var/www/html

3. 访问安装向导

  • 检查 Nginx 是否配置了 index.php 为首页
bash 复制代码
sudo nano /etc/nginx/sites-available/default
# 检查index关键字
index index.php index.html index.htm;   # ← 必须有 index.php 在前面!
  • 保存后重载 Nginx:
bash 复制代码
sudo nginx -t && sudo systemctl reload nginx
  • 在电脑浏览器打开: ? http://树莓派IP

按提示填写:

  • 数据库名:wordpress
  • 用户名:wpuser
  • 密码:你刚才设的密码
  • 数据库主机:localhost
  • 表前缀:默认 wp_

然后设置网站标题、管理员账号(不要用 admin!)、邮箱等。

? 安装完成!你现在有了一个本地可访问的博客。


在树莓派(Raspberry Pi)上"打开 FTP 端口"分两步

  1. 让 FTP 服务真正跑起来(安装并启动 vsftpd 或 proftpd)。
  2. 让系统防火墙(nftables/ufw)和路由器把 21 端口(以及被动模式端口段)放开。

下面给出最常用、最轻量的方案:vsftpd + nftables(Pi OS 12 Bookworm 默认防火墙)。


安装 vsftpd

bash 复制代码
sudo apt update
sudo apt install vsftpd
配置 vsftpd(/etc/vsftpd.conf)
bash 复制代码
sudo nano /etc/vsftpd.conf

把下面 6 行取消注释或手动写入,其余保持默认即可:

conf 复制代码
listen=YES                # 独立模式,监听 IPv4
listen_ipv6=NO            # 若只用 IPv4 可关掉
anonymous_enable=NO       # 禁止匿名
local_enable=YES          # 允许系统用户登录
write_enable=YES          # 允许上传/写
local_umask=022
保存后重启服务:
bash 复制代码
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

此时 vsftpd 已监听 21 端口:

bash 复制代码
sudo ss -ltnp | grep :21

放行防火墙(nftables)

Bookworm 默认使用 nftables,规则写进 /etc/nftables.conf 最方便。

  1. 备份原文件
bash 复制代码
sudo cp /etc/nftables.conf /etc/nftables.conf.bak
  1. 在文件里找到

    chain input {
    type filter hook input priority 0; policy drop;

段落,在下方插入三行(21 端口 + 被动模式 50000-51000):

复制代码
        tcp dport 21 accept comment "FTP control"
        tcp dport 50000-51000 accept comment "FTP passive"
        ct state established,related accept
  1. 重载生效
bash 复制代码
sudo systemctl restart nftables

被动模式端口段(可选但强烈建议)

继续在 /etc/vsftpd.conf 末尾追加:

复制代码
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000
pasv_address=你的公网IP或留空   # 若只做局域网可省略

保存后再次重启 vsftpd:

bash 复制代码
sudo systemctl restart vsftpd

路由器端口映射(仅外网访问需要)
  1. 给树莓派设固定 LAN IP(DHCP 静态分配或在 /etc/dhcpcd.conf 里写 static)。
  2. 在路由器里把
    • TCP 21
    • TCP 50000-51000
      转发到树莓派 LAN IP。

验证

局域网内:

bash 复制代码
ftp 树莓派IP

输入系统用户名/密码,能登录即成功。

外网:

bash 复制代码
ftp 你的公网IP

若路由器已做映射,也能连上。


安全提醒
  • FTP 是明文协议,公网使用请换成 SFTP(OpenSSH 内置)或 FTPS(vsftpd 支持 TLS)。
  • 若只需文件传输,最简单其实是:
bash 复制代码
sudo systemctl enable ssh

然后用任何 SFTP 客户端(WinSCP、FileZilla、macOS 终端 sftp lnh@IP)连 22 端口,无需额外配置。


? 第六步:启用内网穿透(外网访问)

由于家庭宽带无公网 IP,我们用 cpolar(免费、简单)

1. 注册 cpolar 账号

2. 在树莓派安装 cpolar

bash 复制代码
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

cpolar version

# 或者知道具体版本,也可以用 wget
wget -O cpolar-linux-arm64.deb https://static.cpolar.com/downloads/releases/3.3.11/cpolar_3.3.11_linux_arm64.deb
sudo dpkg -i cpolar-linux-arm64.deb

3. 配置 authtoken

bash 复制代码
cpolar authtoken 你的_authtoken_字符串

4. 启动 HTTP 隧道(临时测试)

bash 复制代码
cpolar http 80

你会看到类似:

复制代码
Forwarding                    http://xxxx.cpolar.cn -> http://localhost:80

? 复制这个 http://xxxx.cpolar.cn 链接,在手机 4G 网络下打开,就能访问你的博客!

5. 设置开机自启(长期使用)

创建配置文件:

bash 复制代码
mkdir -p ~/.cpolar
nano ~/.cpolar/cpolar.yml

写入:

yaml 复制代码
authtoken: 你的_authtoken_字符串
tunnels:
  blog:
    proto: http
    addr: 80
    region: cn  # 中国节点更快

保存后,创建 systemd 服务:

bash 复制代码
sudo nano /etc/systemd/system/cpolar.service

内容:

ini 复制代码
[Unit]
Description=cpolar tunnel
After=network.target

[Service]
Type=simple
User=lnh
ExecStart=/usr/bin/cpolar start-all --config /home/lnh/.cpolar/cpolar.yml
Restart=always

[Install]
WantedBy=multi-user.target

启用服务:

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl enable cpolar
sudo systemctl start cpolar

查看隧道地址:

bash 复制代码
cpolar status

? 免费版每次重启会变域名。如需固定域名,可升级(约 ?50/年),或用 Cloudflare Tunnel(更复杂)。


?? 第七步:安全与优化(关键!)

1. 启用防火墙

bash 复制代码
sudo ufw allow 22    # SSH
sudo ufw allow 80    # HTTP
sudo ufw allow 443   # HTTPS(未来可加)
sudo ufw enable

2. 安装缓存插件(提升速度)

  • 登录 WordPress 后台 → 插件 → 搜索安装 WP Super Cache
  • 启用即可大幅减少 PHP 和数据库压力

3. 定期备份(重要!)

bash 复制代码
# 备份数据库
mysqldump -u wpuser -p wordpress > /home/lnh/wordpress_$(date +%F).sql

# 备份网站文件
tar -czf /home/lnh/wp_files_$(date +%F).tar.gz /var/www/html

可配合 cron 每周自动备份。


? 最终效果

  • 你的博客地址:http://随机字符串.cpolar.cn
  • 可在外网(手机 4G、朋友电脑)访问
  • 资源占用低(空闲时内存 < 500MB,CPU < 5%)
  • 功能完整(支持文章、图片、评论、插件)

?常见问题

Q:为什么不用静态博客(如 Hugo)?

A:静态博客更省资源,但需要手动部署,不适合"写文章就发布"的小白。WordPress 更直观。

Q:SD 卡会坏吗?

A:频繁写入可能缩短寿命。建议:

  • 禁用日志:sudo nano /etc/nginx/nginx.conf → 关闭 access_log
  • 使用 tmpfs 挂载临时目录(进阶)

Q:能加 HTTPS 吗?

A:可以!但 cpolar 免费版不支持自定义证书。付费版或改用 Cloudflare + Argo Tunnel 可实现。


相关推荐
humors2214 天前
免费云服务清单
服务器·网络·数据库·免费·云服务·网站·带宽
humors2215 天前
检查网址连通性的python脚本
网络·python·网站·检测网址·查询网址·网址连通性·网址可访问性
Web极客码5 天前
加快WooCommerce性能
服务器·wordpress·网站
REDcker11 天前
个人博客网站建设指南 Markdown资产化与静态站选型部署
前端·后端·博客·markdown·网站·资产·建站
itopme12 天前
GitHub部署个人网页与自定义域名全攻略
网站
怣疯knight1 个月前
网站显示浏览器缓存其他考生信息该怎么解决
浏览器·网站
色空大师2 个月前
网站搭建实操(十)前端搭建
前端·webpack·vue·网站·论坛
我是小bā吖2 个月前
【日常工作计划及排期平台】开发实践
网站·工作计划管理
色空大师2 个月前
网站搭建实操(五)后台管理-短信模块
java·阿里云短信·网站·短信
色空大师2 个月前
网站搭建实操(三)后台管理-2-forum-core)
java·redis·网站·搭建网站