当前位置: 首页 > 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了。

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

相关文章:

  • 国内最大的网站制作公司如何优化网络连接
  • 房产交易网上预约平台整站优化报价
  • 微商软件自助商城品牌seo是什么意思
  • 做网站搭建的公司微网站
  • 制作什么网站好vi设计
  • 正规品牌网站设计某产品网络营销推广方案
  • Java全栈面试实录:从电商平台到AIGC,技术栈深度解析
  • Spring整合MyBatis常见问题解决:NoSuchBeanDefinitionException与映射文件冲突
  • AI矢量图与视频无痕修复:用Illustrator与After Effects解锁创作新维度
  • leetcode-2311.小于等于k的最长二进制子序列
  • 如何进行 iOS App 混淆加固?IPA 加壳与资源保护实战流程
  • Redis核心知识详解:从全局命令到高级数据结构
  • 大屏可视化制作指南
  • redis总结
  • 鸿蒙实时音视频流处理框架开发实战——基于HarmonyOS 4.0与分布式软总线的低延时高可靠架构
  • php项目部署----------酒店项目
  • CUDA —— 1.1、C++与CUDA混合编程,C++调用cuda自定义类进行运算操作(附:Windows下Vs2017编程环境配置)
  • 怎么把本地仓库push 到gitlab 上
  • GitLab 18.1 发布 Runner、无效的个人访问令牌查看等功能,可升级体验!
  • Unity AR构建维护系统的以AI驱动增强现实知识检索系统
  • [C#]C# winform部署yolov13目标检测的onnx模型
  • VTK中的形态学处理
  • Pytest项目_day03(Postman使用)
  • # RK3588 Linux SDK 完整问题解决记录-编译内核头文件
  • React:利用计算属性名特点更新表单值
  • 鸿蒙边缘智能计算架构实战:从环境部署到分布式推理全流程