Posted in

个人电脑部署博客站,无需公网IP,无需端口映射

————–系列①

好的!我将从零开始,手把手带你完成整个部署过程。请准备一台安装 Ubuntu 20.04/22.04 的服务器(物理机或虚拟机均可),跟着以下步骤操作:


🌱 第一章:基础系统准备(耗时:5分钟)

# 1. 更新系统
sudo apt update && sudo apt upgrade -y

# 2. 安装必备工具
sudo apt install -y curl wget nano git unzip ufw

# 3. 设置时区(亚洲上海)
sudo timedatectl set-timezone Asia/Shanghai

# 4. 配置防火墙
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

🏗️ 第二章:安装LNMP环境(耗时:10分钟)

# 1. 安装Nginx
sudo apt install -y nginx
sudo systemctl enable --now nginx

# 2. 安装MySQL
sudo apt install -y mysql-server
sudo systemctl enable --now mysql

# 3. 安全配置MySQL(设置root密码)
sudo mysql_secure_installation
# 遇到提示按以下选择:
# 1. 输入Y启用密码验证插件
# 2. 设置强密码(至少12位)
# 3. 输入Y删除匿名用户
# 4. 输入Y禁止root远程登录
# 5. 输入Y删除测试数据库
# 6. 输入Y重新加载权限表

# 4. 安装PHP
sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl
sudo systemctl enable --now php-fpm

🔑 第三章:配置数据库(耗时:3分钟)

# 1. 登录MySQL
sudo mysql -u root -p
# 输入刚才设置的root密码

# 2. 创建WordPress专用数据库和用户
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

📝 将 StrongPassword123! 替换为你自己的强密码


📥 第四章:安装WordPress(耗时:7分钟)

# 1. 下载最新版WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz

# 2. 移动到网站目录
sudo mv wordpress /var/www/html/blog

# 3. 设置权限
sudo chown -R www-data:www-data /var/www/html/blog
sudo find /var/www/html/blog -type d -exec chmod 750 {} \;
sudo find /var/www/html/blog -type f -exec chmod 640 {} \;

# 4. 创建配置文件
cd /var/www/html/blog
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php

在配置文件中修改以下内容:

// 修改数据库设置
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'StrongPassword123!' ); // 替换为你的密码
define( 'DB_HOST', 'localhost' );

// 添加安全密钥(从以下链接生成:https://api.wordpress.org/secret-key/1.1/salt/
// 复制生成的密钥替换下面的内容
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

// 开启调试模式(开发环境用)
define( 'WP_DEBUG', false );

⚙️ 第五章:配置Nginx(耗时:8分钟)

# 1. 创建Nginx配置文件
sudo nano /etc/nginx/sites-available/blog

粘贴以下内容(替换example.com为你的域名):

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/html/blog;
    index index.php index.html index.htm;

    # 安全头部
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 阻止访问敏感文件
    location ~* /(\.|wp-config\.php|wp-config-sample\.php|readme\.html|license\.txt) {
        deny all;
    }

    # 禁用XML-RPC
    location = /xmlrpc.php {
        deny all;
    }

    # 静态文件缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

启用配置:

# 2. 启用网站配置
sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default

# 3. 测试并重载Nginx
sudo nginx -t
sudo systemctl reload nginx

🌐 第六章:配置Cloudflare Tunnel(耗时:10分钟)

# 1. 安装Cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

# 2. 登录Cloudflare账号
cloudflared tunnel login
# 复制输出的URL到浏览器登录,选择你要使用的域名授权

# 3. 创建隧道(my-tunnel可自定义)
cloudflared tunnel create my-tunnel
# 记下返回的隧道ID(如:f1e2d3c4-b5a6-7c8d-9e0f-a1b2c3d4e5f6)

# 4. 配置DNS记录(替换example.com为你的域名)
cloudflared tunnel route dns my-tunnel example.com
cloudflared tunnel route dns my-tunnel www.example.com

# 5. 创建配置文件
sudo mkdir /etc/cloudflared
sudo nano /etc/cloudflared/config.yml

配置文件内容(替换隧道ID和域名):

tunnel: f1e2d3c4-b5a6-7c8d-9e0f-a1b2c3d4e5f6 # 替换为你的隧道ID
credentials-file: /root/.cloudflared/f1e2d3c4-b5a6-7c8d-9e0f-a1b2c3d4e5f6.json # 替换为你的证书路径
ingress:
  - hostname: example.com # 你的域名
    service: http://localhost:80
  - hostname: www.example.com # 带www的域名
    service: http://localhost:80
  - service: http_status:404

🚀 第七章:启动服务(耗时:3分钟)

# 1. 创建系统服务
sudo tee /etc/systemd/system/cloudflared.service > /dev/null <<EOF
[Unit]
Description=Cloudflare Tunnel
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/cloudflared tunnel --config /etc/cloudflared/config.yml run
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

# 2. 启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable --now cloudflared

# 3. 检查服务状态
sudo systemctl status cloudflared
# 应该看到 "active (running)" 状态

✨ 第八章:完成WordPress安装(耗时:5分钟)

  1. 打开浏览器访问你的域名 http://example.com
  2. 按照向导完成安装:
  • 选择语言(简体中文)
  • 设置网站标题
  • 设置管理员用户名(不要用admin
  • 设置强密码(12位以上,含大小写字母+数字+符号)
  • 填写管理员邮箱
  1. 点击”安装WordPress”

🔒 第九章:安全加固(耗时:8分钟)

# 1. 在WordPress后台安装必要插件
#  - Wordfence Security (防火墙)
#  - UpdraftPlus (备份)
#  - Cloudflare (集成)

# 2. 配置Cloudflare控制台(网页操作)
a. 登录 https://dash.cloudflare.com
b. 选择你的域名
c. SSL/TLS → 概述 → 选择"Full (strict)"
d. SSL/TLS → 边缘证书 → 开启"始终使用HTTPS"
e. 防火墙 → WAF → 创建规则(阻止可疑请求)

# 3. 服务器端安全配置
# 禁用PHP危险函数
sudo nano /etc/php/*/fpm/php.ini

找到并修改:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
# 4. 设置自动备份
sudo apt install -y cron
(crontab -l ; echo "0 3 * * * mysqldump -u root wordpress | gzip > /backups/wordpress_$(date +\%F).sql.gz") | crontab -

🧪 第十章:验证部署(耗时:2分钟)

# 1. 检查隧道状态
cloudflared tunnel list

# 2. 检查SSL证书
curl -I https://example.com
# 应返回 HTTP/2 200 和 Cloudflare 相关头部

# 3. 检查网站性能
ab -c 50 -n 500 https://example.com/

🆘 故障排除指南

问题1:Cloudflared无法启动

# 查看详细日志
sudo journalctl -u cloudflared -f

# 常见解决:
# 1. 检查证书路径是否正确
# 2. 重新登录:cloudflared tunnel login
# 3. 检查config.yml缩进(必须使用空格)

问题2:WordPress建立数据库连接时出错

# 1. 检查wp-config.php中的数据库凭据
# 2. 测试MySQL连接:
mysql -u wpuser -p wordpress
# 3. 检查MySQL用户权限:
SELECT Host,User FROM mysql.user;

问题3:Nginx 502错误

# 1. 检查PHP-FPM状态:
sudo systemctl status php-fpm
# 2. 查看错误日志:
tail -f /var/log/nginx/error.log
# 3. 确保sock文件路径正确:
ls /var/run/php/php-fpm.sock

至此,你的博客已完全部署完成!现在可以通过你的域名(无需公网IP)安全访问博客了。后续建议:

  1. 每周执行 sudo apt update && sudo apt upgrade
  2. 每月更换一次MySQL密码
  3. 使用UpdraftPlus设置自动云端备份

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注