运维入门:在 WSL Ubuntu 上部署 Typecho 的文章封面
返回文章列表
Neuroblue writing

运维入门:在 WSL Ubuntu 上部署 Typecho

运维做什么、要补哪些知识,独立博客和平台空间差在哪;再按 LNMP 把 Typecho 跑起来。

最近带新生做 MoeCTF,自己也跟了一份运维入门。运维知识碎,系统课里很少单独讲。

下面是本地部署 Typecho 博客的简易说明,涵盖一些基础的运维知识。

运维是什么

运维全称运行和维护:让设备、系统、网络保持可用。开发把功能做对、做快;运维把这个功能从你自己能用扩到很多人同时用:用户之间隔离、服务尽量一直在线、挂了能起来、流量挤在一起时能分担。

服务器这边主流是 GNU/Linux。Windows Server 要授权,比赛和本篇都不覆盖。移动端为了省电会杀后台,不适合当长期服务端,这里也不谈。

需要哪些知识

先会开操作系统,再叠服务。常见一块:

具体
系统发行版、用户/sudo、文件权限、进程、systemd、日志
包与软件APT(Debian/Ubuntu)、换源、装包、看服务是否在跑
网络IP、端口、防火墙、DNS、hosts、HTTP/HTTPS
WebNginx/Apache 反代、静态文件、FastCGI 把 PHP 交出去
数据MySQL/MariaDB:建库、授权、备份
再往后证书、CDN、负载均衡、监控、故障恢复

懂一点开发和架构有帮助,但入门不必先上完一轮后端。发行版(Ubuntu、Debian、Fedora、Arch)差在软件包版本、安装方式和维护团队,命令习惯大体相同。Debian 单一版本 ABI 稳、生命周期长,适合当第一台服务器;本篇环境已经是 WSL Ubuntu 24.04,按 Ubuntu 写。

一切皆文件,在 Linux 里经常碰到:配置、socket、systemd 的 unit 都是文本或特殊文件,用 catnano 就能看、能改。

博客是什么

博客(Blog,也叫部落格、网络日志)是按时间写文章的站点。稀土掘金、CSDN、博客园上的个人空间更像一份对外简历;独立博客是你自己的站点,文章、域名、主题、备份都由你管,适合当思想苗圃,写生活或写技术都行。

搭博客这件事本身就把运维里几块串起来:Linux、包管理、Web 服务、数据库、域名解析。程序可以以后再换,这条链路会留下。

常见几条路,难度递增:

  1. 服务器面板(宝塔、1Panel):装好面板点几下,LNMP 和博客程序一起出来。适合先看到成品。
  2. 手装现成程序(Typecho、WordPress):自己装 Nginx、PHP、数据库,改配置。本篇走这条。
  3. 静态博客(Hexo、Astro):文章编成 HTML,可以挂 GitHub Pages / Vercel,不一定买服务器和域名。
  4. 自己写一套:程序和运维都自己扛。

WordPress 和 Typecho 都是 PHP,LNMP 步骤几乎一样,换程序目录即可。

本次环境

WSL Ubuntu 24.04(Noble)。架构 LNMP:Linux + Nginx + MariaDB + PHP-FPM。本地域名 blog.kali。PHP 服务名 php8.3-fpm(Debian 13 常见是 php8.4-fpm,包名不要混抄)。

步骤:换源 → 更新 → PHP → 数据库 → 站点文件 → Nginx → hosts → 浏览器安装。

1. 更换 APT 软件源

Ubuntu 24.04 起,软件源是 DEB822 格式,文件在:

/etc/apt/sources.list.d/ubuntu.sources

22.04 及更早仍是 /etc/apt/sources.list。先确认版本和架构:

. /etc/os-release && echo "$VERSION_CODENAME"
dpkg --print-architecture

noble 是 24.04。amd64Ubuntu 软件源arm64ubuntu-ports,URI 改成 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports

备份后编辑:

sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
sudo nano /etc/apt/sources.list.d/ubuntu.sources

nano:Ctrl+O 保存,回车确认,Ctrl+X 退出。

amd64 + Ubuntu 24.04,整文件替换为清华源(内容以 tuna Ubuntu 帮助页 选择 24.04 LTS 为准):

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

security 源保持官方地址,镜像站同步有延迟。

Debian 改的是 /etc/apt/sources.list,模板在 tuna Debian 帮助页

2. 更新软件包

sudo apt update
sudo apt upgrade -y

update 刷新索引,upgrade 按新索引升级已装软件。

sudo:当前用户临时以 root 执行命令。生产环境一般关闭 root 直接登录。

3. 安装 PHP-FPM

sudo apt install php-fpm php-mysql php-mbstring -y
php -v
systemctl list-units --type=service 'php*-fpm*'

24.04 上服务名是 php8.3-fpm

sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm
sudo systemctl status php8.3-fpm

确认 socket:

ls -l /run/php

常见结果:

php-fpm.sock -> /etc/alternatives/php-fpm.sock
php8.3-fpm.sock
php8.3-fpm.pid

php-fpm.sock 是指向当前版本 socket 的软链。Nginx 里写这个路径,PHP 小版本升级后不用改站点配置。

php8.3-fpm.service 没有扩展名,一样是文本。查看 unit:

systemctl cat php8.3-fpm

4. 安装 MariaDB 并建库

sudo apt install mariadb-server -y
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mariadb

进入 MariaDB 后执行(每句以分号结尾):

CREATE USER 'moectf'@'localhost' IDENTIFIED BY 'xdsec';
CREATE DATABASE blog;
GRANT ALL PRIVILEGES ON blog.* TO 'moectf'@'localhost';
FLUSH PRIVILEGES;

EXIT; 离开。这是本地实验账号。命令写成 mysql 也可以,MariaDB 提供兼容入口。

浏览器安装 Typecho 时填:

数据库地址localhost
数据库端口默认
数据库用户moectf
数据库密码xdsec
数据库名blog
表前缀默认

5. 下载 Typecho

sudo apt install wget unzip -y
sudo mkdir -p /var/www/html
cd /var/www/html
sudo wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
sudo unzip typecho.zip
sudo rm typecho.zip
ls
sudo chown -R www-data:www-data /var/www/html

解压后应有 adminindex.phpinstall.phpusrvar。PHP-FPM 以 www-data 跑,属主不对则安装程序无法写配置。

不要对系统目录乱 chmodsudo chmod 750 /usr 会让普通用户无法执行系统命令。

6. 配置 Nginx

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

Ubuntu 默认启用 sites-enabled/default,监听 80 且为 default_server,根目录也是 /var/www/html,首页是欢迎页,PHP 未启用。自己的站点要单独写一份配置,并关掉默认站点。

sudo nano /etc/nginx/sites-available/blog

写入:

server {
  listen 80;
  server_name blog.kali;

  root /var/www/html;
  index index.php;

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

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

含义:

  • listen 80:HTTP 默认端口
  • server_name blog.kali:只处理 Host 为这个名字的请求
  • root / index:站点目录和默认首页
  • try_files:文件不存在时交给 index.php(Typecho 伪静态)
  • fastcgi_pass:PHP 交给 FPM 的 unix socket

启用站点、关掉默认站点、检查后重载:

sudo ln -sf /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/blog
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

nginx -t 必须报 syntax is oktest is successful 再 reload。

7. 配置 hosts

本机用 hosts 把 blog.kali 指到 WSL。不买域名。

Windows(管理员编辑):

C:\Windows\System32\drivers\etc\hosts

加一行:

127.0.0.1  blog.kali

WSL 里 Windows 的 80 会转到 Ubuntu 的 Nginx,用 127.0.0.1 即可。

也可以在 WSL 里 ip addreth0 的地址,把该 IP 写进 Windows hosts。WSL 重启后这个地址常会变,要跟着改。

WSL 自己的 /etc/hosts 由 WSL 生成。若要长期手写,在 /etc/wsl.conf 里关 generateHosts,否则重启可能被覆盖。只在 Windows 浏览器访问时,改 Windows hosts 就够。

8. 浏览器安装 Typecho

地址栏带协议:

http://blog.kali/

应跳到安装页。环境检查通过后,数据库按第 4 步表格填写,再设管理员账号。

只输入 blog.kali、不写 http://,浏览器可能当搜索词,不会走 hosts。

WordPress 同样是 PHP,LNMP 步骤相同,换程序目录和 Nginx 的 root 即可。

9. 公网访问(可选)

hosts 只对改过文件的这台电脑有效。要给别人访问:租带公网 IP 的服务器,注册域名,在 DNS 加 A 记录指向该 IP;或用内网穿透。证书和 HTTPS、CDN 是后续步骤。

面板(宝塔、1Panel)能点选安装 LNMP。自己走完上面路径之后,再看面板改的是哪些文件。

Hexo、Astro 这类静态博客不需要 PHP 和数据库。

操作视频(指北配套):BV1U9NX6yEsX。部署步骤依据 Reverier Xu、linlinzzo 的运维入门指北,环境改为 WSL Ubuntu 24.04。

结尾

image-20260922000055223

image-20260922000135592

就这里的编辑外观这里,就可以出成 web 题目

公网上去扫这个博客然后批量测试弱口令,利用这里的写文件进行命令执行。