Web 开发

本站就是用这套流程搭起来的。从一台只有 SSH 权限的空机器,到域名能正常访问,整理成可复用的步骤。

环境准备

# 更新系统并装齐组件
apt update && apt upgrade -y
apt install -y nginx mysql-server php8.2-fpm php8.2-mysql \
  php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml unzip

Typecho 对 PHP 版本要求不苛刻,但 mbstringgd 是硬依赖,漏装会在后台报错。

数据库

mysql -uroot -p
CREATE DATABASE it365 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'it365'@'localhost' IDENTIFIED BY '换成你自己的强密码';
GRANT ALL PRIVILEGES ON it365.* TO 'it365'@'localhost';
FLUSH PRIVILEGES;

字符集一定用 utf8mb4utf8 在 MySQL 里是每字符最多 3 字节,存不了 emoji,改起来很麻烦。

部署站点文件

cd /var/www
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
unzip typecho.zip -d it365
chown -R www-data:www-data it365
chmod -R 755 it365

Nginx 配置

server {
    listen 80;
    server_name it365.wang;
    root /var/www/it365;
    index index.php index.html;

    access_log /var/log/nginx/it365.access.log;
    error_log  /var/log/nginx/it365.error.log;

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

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

    location ~ /\.ht { deny all; }

    # 静态资源长缓存
    location ~* \.(css|js|png|jpg|svg|webp|woff2)$ {
        expires 30d;
        access_log off;
    }
}

try_files 那行是 Typecho 的伪静态基础,写错了会出现除首页外全部 404。

完成安装

浏览器访问域名,按向导填写数据库信息即可。装完先做三件事:

  1. 删掉 install.php(Typecho 通常会提示,但确认一下更稳妥)。
  2. 后台 → 设置 → 永久链接,启用伪静态并选择喜欢的路径格式。
  3. 配好备份,别等到出问题才想起来。

上线检查清单

  • [ ] HTTPS 证书已配置且自动续期正常
  • [ ] install.php 已移除
  • [ ] 数据库账号只授权本站库,不用 root
  • [ ] 附件目录 usr/uploads 可写
  • [ ] 备份脚本已加入 crontab 并验证过恢复

小结

整套流程并不复杂,容易出问题的都是细节:字符集选 utf8mb4try_files 别写错、装完删安装文件、上线前确认备份可用。把这四件事做对,站点就能长期稳定运行。

参与讨论