当前位置: 首页 > news >正文

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

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.1container_name: typecho-dbrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: root_passwordMYSQL_DATABASE: typechoMYSQL_USER: typecho_userMYSQL_PASSWORD: typecho_passwordvolumes:- mysql-data:/var/lib/mysqlnetworks:- typecho-network# PHP-FPM服务php-fpm:image: bitnami/php-fpm:latestcontainer_name: typecho-php-fpmrestart: alwaysvolumes:- ./typecho:/var/www/htmldepends_on:- dbnetworks:- typecho-network# Nginx服务nginx:image: nginx:latestcontainer_name: typecho-nginxrestart: alwaysports:- "80:80"- "443:443"volumes:- ./typecho:/var/www/html- ./nginx-conf:/etc/nginx/conf.d- ./ssl:/etc/ssl/certsdepends_on:- php-fpmnetworks:- typecho-networknetworks:typecho-network:driver: bridgevolumes: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了。

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

http://www.lqws.cn/news/533125.html

相关文章:

  • 华为云Flexus+DeepSeek征文|华为云ModelArts搭建Dify-LLM应用开发平台(AI智能选股大模型)
  • 制药行业的精细化管理:GCOM80-2NET自动化解决方案
  • 用pthread_setschedparam设置调度策略
  • Altera PCI IP target设计分享
  • STM32F103ZET6开发板【项目工程创建】+具体实现步骤流程
  • 构建高效字符串编解码系统:Prefix-Token-Suffix三元组方法
  • python pyecharts 数据分析及可视化
  • 创客匠人解析视频号公私域互通逻辑:知识变现的破圈与沉淀之道
  • [特殊字符]推客带货小程序解决方案——0门槛裂变营销,佣金赚不停!
  • 408考研逐题详解:2010年第7题——连通图的边
  • 代码随想录|图论|06岛屿数量(广搜BFS)
  • PhoneRescue 4.3绿色版!解决iPhone数据丢失、系统崩溃等场景
  • 单片机 - STM32F103“复用功能重映射”完整解析:从JTAG释放到TIM重映射实战详解
  • CTF:PHP 多关卡绕过挑战
  • 专注推理查询(ARQs):一种提升大型语言模型指令遵循度、决策准确性和防止幻觉的结构化方法
  • 【攻防篇】解决:阿里云docker 容器中自动启动xmrig挖矿
  • ISP Pipeline(5): Auto White Balance Gain Control (AWB) 自动白平衡
  • 数据结构大项目
  • react - ReactRouter—— 路由传参
  • 【STM32 学习笔记】PWR电源控制
  • Java 大视界 -- 基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(324)
  • 【linux】全志Tina配置swupdate工具进行分区打包
  • 《PT100两线制温度测量系统设计:从电路原理到嵌入式实现》
  • 【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(二)
  • 香港政府发表《香港数字资产发展政策宣言 2.0》,提出「LEAP」框架
  • 星型模式(Star Schema)
  • lua脚本为什么能保证原子性
  • 云效代码仓库导入自建gitlab中
  • Redis核心知识详解:从全局命令到高级数据结构
  • 首款SUV小米YU7、小米AI眼镜等新品重磅发布,玄戒O1超大规模量产