说明

本篇文章整理Linux下搭建博客思路过程与实操

我刚开始使用的是虚拟主机无脑搭建的博客,后来感觉性能太弱就想着使用本地服务器来改善这个问题,提高体验,
奈何囊中羞涩,只买了一个 onecloud ,体验和自由度缺少舒服了一些,但是折腾精神是一把火,而不会轻易熄灭的!!
小暑

哎说都是泪,我只是想给我的所思所想找一个安稳的家。

虚拟主机
说明 囊中羞涩,使用的都是free版本,付费的版本还不如去买VPS
好处 稳定,免费,适合长时间运行省事
缺点 时间长了就依赖平台了,上传限制,下载限制,备份不好备份
本地服务器
说明 我是优选考虑本地服务器的
好处 完全的自主控制,我可以随心所欲,不管是拓展优化还是备份都非常好
缺点 我并没有公网IP,即便有我也不想使用家宽来搭建博客。同时我希望可以https访问我的博客
购买服务器
说明 怎么说呢,不管是国内的还是国外的,价格我都可以负担的起。但是我喜欢折腾,不是安生的主
好处 好处当然是稳定+无限制,毕竟是掏钱买服务的,用着确实舒心
缺点 国内必须备案,不然国内服务无法使用,同时折腾不了

现在实操正式开始,时间为:2025-07-18 21:47:17
暂定流程如下:

graph TD
    A[开始] --> B[系统更新]
    B --> C[安装Nginx]
    C --> D[安装数据库]
    D --> E[配置数据库]
    E --> F[安装PHP]
    F --> G[下载WordPress]
    G --> H[配置WordPress]
    H --> I[配置Nginx站点]
    I --> J[设置文件权限]
    J --> K[完成安装向导]
    K --> L[博客搭建完成]

准备系统

我先开始使用 VMware Workstation Pro 虚拟机来安装一个server服务器系统,为了快速安装使用「 Ubuntu 」。

介绍下有什么好处:

  • 可以快速准备好服务器环境,模拟部署,提前练手
  • 虚拟机有个功能可以快照,方便使用时间倒流

材料

镜像系统下载

# 阿里云镜像站地址
https://mirrors.aliyun.com/ubuntu-releases/

以下是文件名中各个单词的含义解释:

1. ubuntu: 这是一个基于Debian的Linux操作系统,旨在提供易于使用的桌面和服务器环境。

2. 25.04: 这是Ubuntu的版本号,表示该版本是在2025年4月发布的。Ubuntu的版本号通常由两个数字组成,前一个数字表示年份,后一个数字表示该年的发布顺序。

3. desktop: 指的是桌面版操作系统,通常用于个人计算机,提供图形用户界面(GUI)和用户友好的体验。

4. amd64: 这是指64位的AMD架构,适用于64位的处理器,包括AMD和Intel的处理器。

5. iso: 这是光盘映像文件的扩展名,包含了光盘的完整内容,可以用于刻录光盘或在虚拟机中使用。

6. torrent: 这是一个用于文件共享的协议,通常用于下载大文件。它允许用户通过点对点(P2P)网络下载文件。

7. zsync: 这是一个增量下载工具的文件扩展名,允许用户只下载文件的变化部分,而不是整个文件。

8. list: 这个文件通常包含软件包或文件的列表,可能用于安装或配置。

9. manifest: 这个文件包含有关软件包或映像的元数据,通常包括文件的哈希值和其他信息。

10. live-server: 指的是可以直接从光盘或USB启动的服务器版操作系统,允许用户在不安装的情况下使用操作系统。

11. netboot: 这是指网络启动,允许计算机通过网络加载操作系统,而不是从本地存储设备。

12. wsl: 这是Windows Subsystem for Linux的缩写,允许用户在Windows上运行Linux环境。

13. tar.gz: 这是一个压缩文件格式,通常用于打包和压缩多个文件,便于传输和存储。

各位可以自行选择自己需要的版本下载,不知道选什么就选择最新版本的前一个版本。


Root用户登陆

此步骤是为了更加方便上传下载文件,同时节省来回切换用户和输入密码等繁琐无用操作

安装系统后需要自行初始化root的用户密码,这一步是一切的开始,使用「 sudo passwd root 」,系统会提示你输入当前用户密码再输入两次超级管理密码,设置成功后即可切换 root 用户验证。

编辑 SSH 配置文件

sudo vim /etc/ssh/sshd_config

# 在文件中找到以下行
#PermitRootLogin prohibit-password

# 改为
PermitRootLogin yes              # 允许root远程登陆
PasswordAuthentication yes       # 允许root远程密码登陆

# 若找不到可直接复制上面两行添加到底部即可

最后重启SSH ,命令「 sudo systemctl restart ssh 」让其生效。重启系统命令「 reboot 」。

一键换源脚本

此目的是为了更新软件包和为安装PHP和数据库MariaDB做准备。同时SSH过程就不展开讲了,请自行探索。

脚本是开源的,放心使用:

# 好评
bash <(curl -sSL https://linuxmirrors.cn/main.sh)

# 更换Docker镜像源,不需要提一下
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

小暑

好好好,现在准备材料已经差不多了,现在最最最重要的是什么!当然是赶紧备份!备份!备份!

大喊三遍哦,不备份你一定会后悔的!

备份过程,打快照

如图

小暑

第一个红色箭头为创建按钮,单击即可唤出和我一样的按钮,三秒搞定备份
第三个为恢复按钮,如图。点击转到即可恢复备份,三秒恢复,非常方便。

小暑

备份恢复教程完结,系统准备完毕,已经可以随便浪了~~

小暑

安装web服务

  Nginx 因其卓越的静态文件处理能力和高效的并发处理机制而闻名。它利用事件驱动架构,即使在面对海量并发请求时也能保持较低的资源消耗,这使 Nginx 成为了处理大流量、高并发WordPress网站的理想选择。同时,Nginx 在反向代理和负载均衡方面也有出色的表现,这对于追求高性能的网站尤为重要。

怎么说呢,还是学习的时候学的这个,不想也没什么时间在投入精力学别的了,一切从简~,搞那么花里胡哨没什么意义,能用就行了!

使用命令:

# 更新软件包列表
sudo apt update && sudo apt upgrade -y

# 安装Nginx
sudo apt install nginx -y

# 检查状态
sudo systemctl status nginx

# 示例
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since ...

# 设置开机自启动
sudo systemctl enable nginx

打开浏览器,访问服务器的IP地址,例如 192.168.31.158,应看到Nginx欢迎页面了。

配置文件:

Nginx配置目录一般位于 /etc/nginx/sites-available ,创建一个WordPress站点的配置文件供博客使用。

sudo vim /etc/nginx/sites-available/wordpress

在文件中粘贴以下配置内容,替换 your_domain.com 为您的实际域名或服务器IP,/var/www/wordpress 为您的WordPress安装目录(稍后会创建):

server {
    listen 80;
    server_name _;

    # 设置最大上传文件大小
    root /var/www/wordpress;
    index index.php index.html index.htm;

    # 设置最大上传文件大小
    client_max_body_size 512M;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock; # 根据您的PHP版本调整
        fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;
        include fastcgi_params;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot|otf|ttc|ttf|ttc)$ {
        expires max;
        log_not_found off;
    }

    location ~ /\.ht {
        deny all;
    }
}

保存并退出文件,英文输入法下点击 Esc:wq ,即完成保存。

剩下的先暂时不管,算了,在说下Nginx站点后续操作吧。

创建符号链接以启用站点配置:

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

若发生流程已经做完,而打开服务器IP地址,没有显示wordpress安装界面,即是端口冲突问题。

/etc/nginx/sites-enabled/default 彻底移出 Nginx 配置目录rmmv 到别处),
然后 nginx -t && systemctl reload nginx,即可消除与 WordPress 的端口,让 WordPress 正常运行。

讲解:

为什么要用这条命令?

Nginx使用了一种分层配置管理方式:

  • sites-available 目录:用于存储所有可能的站点配置文件,无论是启用还是未启用的。这些文件不会直接被Nginx加载。
  • sites-enabled 目录:Nginx实际读取的配置文件目录。只有在这个目录中的配置文件(或其符号链接)才会被Nginx加载并用于处理请求。
  • 通过符号链接,你可以方便地在 sites-enabled 中启用或禁用站点,而无需移动或复制文件。

小暑

就是放到『 /etc/nginx/sites-available 』下不生效,这个只是存放下,放到『 /etc/nginx/sites-enabled/ 』下才是生效的。

安装数据库

数据库我选择 MariaDB ,个人感觉这个更加轻便,消耗资源更小,他是MySQL 的一个分支,主流,请放心使用。

安装教程:

apt安装『 sudo apt install mariadb-server -y 』,在初始化数据库 『 sudo mysql_secure_installation

按提示操作:

  • 输入当前 root 密码首次安装为空,直接回车
  • 设置 root 密码?输入 Y
  • 输入新密码:awang(设置强密码并牢记)
  • 确认密码
  • 移除匿名用户?输入 Y
  • 禁止 root 远程登录?输入 Y
  • 移除测试数据库?输入 Y
  • 立即重载权限表?输入 Y

创建博客数据库:

创建一个WordPress数据库,账户密码为awang

# 使用 root 登录 MariaDB
sudo mysql -u root -p

# 输入刚才设置的 root 密码
# 创建 WordPress 数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 创建用户 'awang' 并设置密码 'awang'
CREATE USER 'awang'@'localhost' IDENTIFIED BY 'awang';

# 授予 awang 用户对 wordpress 数据库的所有权限
GRANT ALL PRIVILEGES ON wordpress.* TO 'awang'@'localhost';

# 刷新权限使更改生效
FLUSH PRIVILEGES;

# 退出 MySQL
EXIT;

这就是创建好了,非常的简单。

补充:

有时我们会使用远程来链接,使用图形化工具管理或者备份数据库,例如软件:Navicat Premium Lite 17
这里就需要我们改下配置了,命令如下:

# 编辑配置文件
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

# bind-address = 127.0.0.1  找到并注释掉这一行

# 保存后重启服务
sudo systemctl restart mariadb

这样就可以远程访问了。

备份与恢复:

使用 mysqldump 备份,备份到root目录下,

# 格式如下:
mysqldump [选项] 数据库名 [表名] >文件名.sql

# 实例:
sudo mysqldump -u awang -p wordpress > /root/wordpress_backup_$(date +%F).sql
  • 系统会提示输入密码:输入 awang(密码不会显示)
  • 备份文件将保存为:/root/wordpress_backup_2023-10-30.sql(日期自动更新)

特别详细的可以参考这篇文章

备份完成需要验证下:

# 查看备份文件
sudo ls -lh /root/wordpress_*.sql 

# 检查文件开头内容
sudo head -n 10 /root/wordpress_*.sql   

OK,备份结束!恢复来了!

简单粗暴方法:

# 1. 删除原数据库
sudo mysql -u root -p -e "DROP DATABASE wordpress;"

# 2. 创建新数据库
sudo mysql -u root -p -e "CREATE DATABASE wordpress; GRANT ALL ON wordpress.* TO 'awang'@'localhost';"

# 3. 恢复数据
sudo mysql -u awang -p wordpress < /root/wordpress_backup_2023-10-30.sql

此方法是直接删除原来,创建新数据库导入数据,优点是不会报错。但是要是失败出问题了就完蛋了!

稳妥一点:

创建临时库→校验→切换→清理

小暑

# 使用 root 身份登录 MariaDB 并创建临时库
sudo mysql -u root -p -e "
  -- 创建临时数据库 wordpress_temp,避免影响正式库
  CREATE DATABASE wordpress_temp
    DEFAULT CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;
  -- 授权 awang 用户对临时库有所有权限(方便后续测试)
  GRANT ALL PRIVILEGES ON wordpress_temp.* TO 'awang'@'localhost';
  FLUSH PRIVILEGES;
"

此命令直接复制粘贴即可,无需一条条复制。

校验:

# 切换到普通用户导入临时库
sudo mysqldump --version  # 可选,确认 mysqldump 和 mysql 客户端版本

# 导入备份到临时库
mysql -u awang -p wordpress_temp < /root/wordpress_backup_2023-10-30.sql

导入完成后,登录检查表和数据:

# 登录 MariaDB 检查临时库
mysql -u root -p -e "
  -- 切换到临时库
  USE wordpress_temp;
  -- 查看表列表,确保所有表都已导入
  SHOW TABLES;
  -- 检查行数,例如检查 wp_posts 表
  SELECT COUNT(*) AS posts_count FROM wp_posts;
"

切换:

其实就是重命名为博客的数据库名称

sudo mysql -u root -p -e "
  -- 重命名正式库为备份库
  RENAME DATABASE wordpress TO wordpress_old;
  -- 重命名临时库为正式库
  RENAME DATABASE wordpress_temp TO wordpress;
"

wordpress改为wordpress_old;临时的改为正式的。

清理:

sudo mysql -u root -p -e "DROP DATABASE wordpress_old;"

此命令直接删除,高风险操作!!

此时安装数据库教程结束,OVER!

安装PHP

本文固定安装版本PHP8.3,接近最新版本,又不是不能用。

# 添加 PHP 官方源
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

# 安装 PHP 8.3 和常用模块(按 WordPress 要求)
sudo apt install -y php8.3 php8.3-fpm php8.3-mysql \
php8.3-curl php8.3-gd php8.3-xml php8.3-mbstring \
php8.3-xmlrpc php8.3-zip php8.3-soap php8.3-intl

使用的是 php8.3-fpm 模式,适用于 Nginx(非 Apache)。↻

扩展:

提高上传2MB限制:

定位配置文件路径『 php8.3 -i | grep “Loaded Configuration File”』,就会显示出路径,一般存在于『 /etc/php/8.3/fpm/php.ini 』。

# 修改配置文件
sudo vim /etc/php/8.3/fpm/php.ini

# 上传文件最大大小
upload_max_filesize = 512M

# 表单提交内容最大值(应大于等于 upload)
post_max_size = 512M

或者直接使用我的成品,这个配置可以这样形容:“装插件飞快、用插件顺畅、后台不再 502/内存溢出,文件上传不再报 exceeds the maximum upload size。”

点击下载

修改完毕后请各位同学使用命令 「 sudo systemctl restart php8.3-fpm.service 」重启PHP服务。

安装wordpress

给大家看看我的强迫症流程:

# 1) 下载到 /tmp
cd /tmp
wget -O wordpress.zip https://wordpress.org/latest.zip

# 2) 解压 → /var/www/wordpress
sudo apt install -y unzip 
sudo unzip -q wordpress.zip
sudo mv /tmp/wordpress /var/www/wordpress

# 3) 清理压缩包
rm -f /tmp/wordpress.zip

# 4) 权限一次到位
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;

可能是国内到 wordpress.org 抽风
如果 wget 也卡住,可手动把 latest.zip 下载到本地再 scp/tmp,脚本同样适用~

在重启Nginx和PHP:

sudo systemctl restart php8.3-fpm
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl enable nginx mysql php8.3-fpm

现在打开浏览器打开服务器的IP地址即可正常访问wordpress的服务啦。本教程到此结束

结语

小暑

本文章个人一边查资料一边实践慢慢打出来的。本博客也是使用此教程,采用CloudFlare Tunnel内网穿透,这样就可以让我的服务器需要公网IP即可公开出去。
使用SaaS回源的话,Ping博客还是全绿,速度也不是很慢。挺好的。若转载文章请标明来处,互联网精神贡献你我他!