树莓派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)连接:
ssh lnh@raspberrypi-blog.local
# 或直接用 IP(可在路由器后台查看,如 192.168.1.100)
ssh lnh@192.168.1.100

输入你设置的密码。

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

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

LEMP = Linux + Nginx + MariaDB + PHP
比 Apache 更省资源!

1. 安装 Nginx

sudo apt install -y nginx
sudo systemctl enable nginx

2. 安装 MariaDB(数据库)

  • 有些OS的数据库操作不同,查看OS版本信息cat /etc/os-release
安装数据库
# 安装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 安全配置
-- 删除匿名用户
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(含必要扩展)

sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip

4. 配置 Nginx 支持 PHP

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

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

测试配置并重启:
sudo nginx -t
sudo systemctl reload nginx
确认Nginx 正常运行
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 是否运行
# 查看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 能否协同工作
  • 排查错误
# 查看 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的最后一个大括号}
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.4-fpm.sock;  # ← 这里必须匹配你的实际 socket!
}
  • 测试 Nginx 配置并重载:
# 检查语法是否正确
sudo nginx -t

正常输出:

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 路径是否匹配)。

  • 测试完记得删除:
sudo rm /var/www/html/test.php

? 第五步:安装 WordPress 博客

1. 创建数据库

用 root 登录
sudo mysql -u root

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

创建 WordPress 数据库
-- 创建数据库
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 行为)
mysql -u wpuser -p wordpress

→ 输入你设置的密码
? 预期结果:
成功进入 MariaDB 命令行
提示符显示 MariaDB [wordpress]>
输入 EXIT; 退出。

? 如果提示“Access denied”:
→ 回到数据库步骤,重新检查:

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

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

ls -ld /var/www/html

? 预期结果:

drwxr-xr-x 2 www-data www-data 4096 ...

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

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

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

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

2. 下载 WordPress

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 为首页
sudo nano /etc/nginx/sites-available/default
# 检查index关键字
index index.php index.html index.htm;   # ← 必须有 index.php 在前面!
  • 保存后重载 Nginx:
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

sudo apt update
sudo apt install vsftpd
配置 vsftpd(/etc/vsftpd.conf)
sudo nano /etc/vsftpd.conf

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

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

此时 vsftpd 已监听 21 端口:

sudo ss -ltnp | grep :21

放行防火墙(nftables)

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

  1. 备份原文件
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. 重载生效
sudo systemctl restart nftables

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

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

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

保存后再次重启 vsftpd:

sudo systemctl restart vsftpd

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

验证

局域网内:

ftp 树莓派IP

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

外网:

ftp 你的公网IP

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


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

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


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

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

1. 注册 cpolar 账号

  • 访问:https://www.cpolar.com/
  • 注册并登录,获取 authtoken(在 dashboard → auth token)
  • 在树莓派安装 cpolar

2. 在树莓派安装 cpolar

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

cpolar authtoken 你的_authtoken_字符串

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

cpolar http 80

你会看到类似:

Forwarding                    http://xxxx.cpolar.cn -> http://localhost:80

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

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

创建配置文件:

mkdir -p ~/.cpolar
nano ~/.cpolar/cpolar.yml

写入:

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

保存后,创建 systemd 服务:

sudo nano /etc/systemd/system/cpolar.service

内容:

[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

启用服务:

sudo systemctl daemon-reexec
sudo systemctl enable cpolar
sudo systemctl start cpolar

查看隧道地址:

cpolar status

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


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

1. 启用防火墙

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. 定期备份(重要!)

# 备份数据库
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 可实现。


考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
【顶级EI复现】【最新EI论文】低温环境下考虑电池寿命的微电网优化调度(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI复现】【最新EI论文】低温环境下考虑电池寿命的微电网优化调度(Matlab代码实现)》的技术文档,重点围绕在低温环境下,结合电池寿命衰减因素对微电网系统进行优化调度的研究。该研究通过建立数学模型,综合考虑风光储、柴油、燃气等多种能源形式以及电网交互关系,利用Matlab编程实现优化算法(如内点法、多目标粒子群算法等),完成对微电网运行成本、能源效率与电池使用寿命之间的多目标协同优化。文中强调了实际寒潮场景下的V2G调度数据应用,并提供了完整的仿真代码与数据集支持,具有较强的工程复现价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、储能系统优化等相关领域的工程技术人员;尤其适合希望复现高水平EI论文成果的用户; 使用场景及目标:①用于低温环境下微电网能量管理系统的建模与仿真;②支撑考虑电池老化机制的储能优化调度研究;③服务于学术论文复现、课题项目开发及智能电网优化算法验证; 阅读建议:建议结合提供的网盘资源(包括YALMIP工具包、完整代码与数据集)进行实践操作,重点关注目标函数构建、约束条件设置及多目标优化求解过程,建议在Matlab环境中调试代码以深入理解算法实现细节与系统响应特性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值