Typecho Docker 部署指南(基于 PHP 8.2)
本文适用于在 Debian/Ubuntu 服务器上用 Docker 部署 Typecho 的场景。你会学到:PHP 8.2 FPM 容器编排、SQLite 零依赖数据库、Nginx 虚拟主机配置、Cloudflare IP 白名单加固,以及修改后台路径增强安全。
环境信息
- 操作系统:Debian / Ubuntu
- Web 服务器:Nginx
- PHP 版本:8.2(Docker)
- 数据库:SQLite(无需额外安装)
部署 PHP 8.2 容器
1. 创建工作目录
mkdir -p /opt/docker/php
cd /opt/docker/php
2. 编写 docker-compose.yml
vim docker-compose.yml
services:
php:
image: lih66511/php-8.2-fpm-typecho:1.0 # 替换为你的镜像名称
container_name: php-8.2-fpm
restart: unless-stopped
volumes:
- ./php/php.ini:/usr/local/etc/php/conf.d/custom.ini # 自定义 PHP 配置
- ./www.conf:/usr/local/etc/php-fpm.d/www.conf # FPM 配置文件
- /var/www/html/typecho:/var/www/html/typecho # Typecho 代码目录
environment:
- TZ=Asia/Shanghai
ports:
- "127.0.0.1:5050:9000" # 将容器的 9000 端口映射到本地 5050 端口
3. 创建 www.conf(FPM 配置)
vim /opt/docker/php/www.conf
[www]
user = www-data
group = www-data
listen = 9090
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
4. 启动容器
docker compose up -d
下载并部署 Typecho
cd /var/www/html
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
unzip typecho.zip -d typecho
chown -R www-data:www-data /var/www/html/typecho
chmod -R 755 /var/www/html/typecho
配置 Nginx
1. 设置默认虚拟主机(拦截未授权访问)
vim /etc/nginx/conf.d/default.conf
server {
listen 80 default_server;
server_name _;
include /etc/nginx/conf.d/cf-ip;
deny all;
return 404;
}
2. 配置 Typecho 虚拟主机
vim /etc/nginx/conf.d/typecho.conf
server {
listen 80;
server_name yourservername; # 替换为你的域名
root /var/www/html/typecho;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:5050;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
3. 允许 Cloudflare IP
vim /etc/nginx/conf.d/cf-ip
# Cloudflare IPv4
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;
allow 104.16.0.0/13;
allow 104.24.0.0/14;
allow 172.64.0.0/13;
allow 131.0.72.0/22;
# Cloudflare IPv6
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
allow 2a06:98c0::/29;
allow 2c0f:f248::/32;
Cloudflare 的 IP 段会更新,建议定期从 Cloudflare 官方 IP 列表 核对。
启动 Typecho 安装向导(SQLite 模式)
浏览器访问:
http://yourdomain.com
选择数据库类型为 SQLite,默认路径为:
/var/www/typecho/usr/database.db
如需手动创建数据库文件及权限:
touch /var/www/html/typecho/usr/database.db
chown www-data:www-data /var/www/html/typecho/usr/database.db
修改后台路径(增强安全)
打开配置文件:
vim /var/www/html/typecho/config.inc.php
添加或修改如下内容:
<?php
define('__TYPECHO_ADMIN_DIR__', '/your-new-admin-path/');
重命名后台目录:
mv /var/www/html/typecho/admin /var/www/html/typecho/your-new-admin-path
验证与自查
docker compose ps中 php 容器状态为runningnginx -t配置检查通过,nginx -s reload生效- 浏览器访问
http://yourdomain.com能进入 Typecho 安装向导并完成 SQLite 安装 - 使用新后台路径能登录,旧路径
admin返回 404
常见问题排查
| 问题 | 解决方法 |
|---|---|
| 403 权限错误 | 确保 Typecho 目录权限正确:chown -R www-data:www-data /var/www/html/typecho |
| PHP 页面不解析 | 检查 Nginx 中 fastcgi_pass 设置是否为 127.0.0.1:5050 |
| 数据库无法写入 | 检查 usr/database.db 文件权限是否正确 |