php的案例分析----typecho项目

发布于:2025-06-27 ⋅ 阅读:(14) ⋅ 点赞:(0)

php的案例分析----typecho项目

typecho/typecho: A PHP Blogging Platform. Simple and Powerful.

下载的代码的地址

Download - Typecho Official Site

主要时能在网站上使用makdown的语法编写

步骤 1:创建项目目录

mkdir typecho-docker && cd typecho-docker

步骤 2:编写 Docker Compose 文件

version: '3.8'

services:
  # 数据库服务
  db:
    image: mysql:8.1
    container_name: typecho-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: typecho
      MYSQL_USER: typecho_user
      MYSQL_PASSWORD: typecho_password
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - typecho-network

  # PHP-FPM服务
  php-fpm:
    image: bitnami/php-fpm:latest
    container_name: typecho-php-fpm
    restart: always
    volumes:
      - ./typecho:/var/www/html
    depends_on:
      - db
    networks:
      - typecho-network

  # Nginx服务
  nginx:
    image: nginx:latest
    container_name: typecho-nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./typecho:/var/www/html
      - ./nginx-conf:/etc/nginx/conf.d
      - ./ssl:/etc/ssl/certs
    depends_on:
      - php-fpm
    networks:
      - typecho-network

networks:
  typecho-network:
    driver: bridge

volumes:
  mysql-data:

步骤 3:配置 Nginx

创建nginx-conf目录并添加typecho.conf

mkdir nginx-conf && nano nginx-conf/typecho.conf
server {
    listen 80;
    server_name localhost;
    root /var/www/html;
    index index.php index.html;

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

    location ~ \.php$ {
        fastcgi_pass typecho-php-fpm:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ /var/ {
        deny all;
    }
}

步骤 4:获取 Typecho 源码

自己先下载到本地
unzip typecho.zip -d typecho
rm typecho.zip
chown -R 1001:1001  typecho

测试连接数据库脚本\

test_db.php
<?php
// 数据库配置信息
$host = 'db';            // 数据库主机(Docker 中为服务名)
$dbname = 'typecho';     // 数据库名
$username = 'typecho_user'; // 用户名
$password = 'typecho_password'; // 密码
$port = 3306;            // 端口号(MySQL 默认 3306)

try {
    // 创建 PDO 连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;port=$port;charset=utf8mb4", $username, $password);
    
    // 设置错误模式为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "数据库连接成功!<br>";
    
    // 测试查询
    $stmt = $pdo->query("SELECT VERSION()");
    $version = $stmt->fetchColumn();
    echo "MySQL 版本:$version<br>";
    
    // 测试创建表
    $createTableSQL = "CREATE TABLE IF NOT EXISTS `test_table` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `name` varchar(50) NOT NULL,
        `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
    
    $pdo->exec($createTableSQL);
    echo "测试表创建成功!<br>";
    
    // 插入测试数据
    $insertSQL = "INSERT INTO `test_table` (`name`) VALUES ('测试数据')";
    $pdo->exec($insertSQL);
    $lastInsertId = $pdo->lastInsertId();
    echo "数据插入成功,ID:$lastInsertId<br>";
    
    // 查询测试数据
    $selectSQL = "SELECT * FROM `test_table` WHERE `id` = :id";
    $stmt = $pdo->prepare($selectSQL);
    $stmt->bindParam(':id', $lastInsertId, PDO::PARAM_INT);
    $stmt->execute();
    
    if ($stmt->rowCount() > 0) {
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        echo "数据查询成功:ID={$row['id']},名称={$row['name']},创建时间={$row['created_at']}<br>";
    }
    
    // 删除测试表
    $dropTableSQL = "DROP TABLE IF EXISTS `test_table`";
    $pdo->exec($dropTableSQL);
    echo "测试表已删除!<br>";
    
} catch (PDOException $e) {
    die("数据库连接失败:" . $e->getMessage());
}

// 关闭连接(可选,脚本结束时会自动关闭)
$pdo = null;
?>

步骤 5:启动容器

docker-compose up -d

访问http://10.0.0.110/install.php

在这里插入图片描述

[root@docker-110 usr]# ls
plugins  themes
[root@docker-110 usr]# mkdir uploads

步骤 6:完成安装

  1. 访问http://localhost进入安装向导。
  2. 数据库配置:
    • 主机db
    • 数据库名typecho
    • 用户名typecho_user
    • 密码typecho_password
  3. 设置管理员账号,完成安装

在这里插入图片描述

安装程序无法自动创建 config.inc.php 文件
您可以在网站根目录下手动创建 config.inc.php 文件, 并复制如下代码至其中

<?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('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => 'db',         // Docker环境中为服务名,传统服务器为localhost
  'port' => 3306,        // 数据库端口
  'user' => 'typecho_user',  // 数据库用户名
  'password' => 'typecho_password',  // 数据库密码
  'charset' => 'utf8mb4',
  'database' => 'typecho',  // 数据库名
  'engine' => 'InnoDB',
  'sslCa' => '',
  'sslVerify' => true,
), \Typecho\Db::READ | \Typecho\Db::WRITE);
\Typecho\Db::set($db);

在这里插入图片描述

那就ok了。

完结撒花🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸😂😂😂😂😂😂


网站公告

今日签到

点亮在社区的每一天
去签到