Typecho 博客部署记录(Podman)

1. Podman Compose 配置文件

services:
  typecho-php:
    image: docker.1ms.run/joyqi/typecho:nightly-php8.2-fpm-alpine
    container_name: typecho
    hostname: typecho
    volumes:
      - /data/typecho/typechodata:/var/www/html:Z
    environment:
      - TZ=Asia/Shanghai
    mem_limit: 256m
    networks:
      - podman-network

networks:
  podman-network:
    external: true
    name: znet

2. 下载并解压 Typecho

# 下载最新版 Typecho
wget https://ghfast.top/https://github.com/typecho/typecho/releases/latest/download/typecho.zip

# 解压到数据目录
unzip typecho.zip -d /data/typecho/typechodata

# 重启容器
podman restart typecho

3. 权限修复

安装后访问网页可能提示权限问题,需要进行以下修复:

# 进入容器
podman exec -it typecho_php_1 /bin/bash

# 进入网站根目录
cd /var/www/html

# 设置正确的所有权(修复数据库权限)
chown -R www-data:www-data usr/

# 进入 usr 目录
cd /var/www/html/usr

# 修复 uploads 目录权限
chown -R www-data:www-data uploads

4. SQLite 数据库配置

如果使用系统自带的 SQLite,安装过程中会生成 config.inc.php 配置文件(数据库名称会根据系统随机生成,如示例中的 69c5048d87e63.db)。

配置文件内容示例:

<?php
// site root path
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

// plugin directory (relative path)
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

// theme directory (relative path)
define('__TYPECHO_THEME_DIR__', '/usr/themes');

// admin directory (relative path)
define('__TYPECHO_ADMIN_DIR__', '/admin/');

// register autoload
require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php';

// init
\Typecho\Common::init();

// config db
$db = new \Typecho\Db('SQLite', 'typecho_');
$db->addServer(array (
  'file' => '/var/www/html/usr/69c5048d87e63.db',
), \Typecho\Db::READ | \Typecho\Db::WRITE);
\Typecho\Db::set($db);

5. 说明

  • 容器没有开放端口,可用nginx,caddy代理,容器内映射9000端口
  • 容器使用 nightly-php8.2-fpm-alpine 版本
  • 数据持久化目录:/data/typecho/typechodata
  • 容器网络使用已存在的外部网络 znet
  • SQLite 数据库文件存放在 /var/www/html/usr/ 目录下

标签: none

添加新评论