抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

应 bill 小朋友的需求分享如何使用 Vercel 免费托管 Typecho 博客教程。因杜老师近期出差时间紧张,没有精力细致整理排版,但确保可成功部署,需要的小伙伴可以参考,如有建议可在评论区中留言!

写在前面

Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴。Typecho 基于 PHP 开发,支持多种类型的数据库,是款内核强健﹑扩展方便﹑体验友好﹑运行流畅的轻量级开源博客程序。

Vercel 是一个用来部署前端应用的云平台,但也可以用来构建轻量级的事件驱动,并部署到它的全球边缘网络。很多小伙伴喜欢使用 Vercel 部署博客,但大家可能不知道,Vercel 还支持 PHP 源码的部署。今天我们就用 Vercel 免费部署 Typecho 博客!

准备工作

  1. Typecho 非最新版本源码「1.2.0 版会检测目录是否能写入,推荐使用 这个 源码,感谢小伙伴的提醒」

  2. GitHub 账号及相关工具「推荐用 GitHub Desktop」

  3. MySQL 或其它类型数据库的托管平台「本文用 FreeDB 演示」

  4. Vercel 的账号「推荐用 GitHub 账号登录」

操作步骤

在 FreeDB 申请免费 MySQL 数据库:

在 Typecho 源码目录下新建文件 config.inc.phpvercel.jsonapi/index.php 等文件,效果如下:

其中 config.inc.php 文件的内容如下「注意 host/user/password/database 请根据实际信息修改」

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
define('__TYPECHO_SECURE__',true);
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');
define('__TYPECHO_THEME_DIR__', '/usr/themes');
define('__TYPECHO_ADMIN_DIR__', '/admin/');
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);
require_once 'Typecho/Common.php';
Typecho_Common::init();
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
'host' => 'sql.freedb.tech',
'port' => 3306,
'user' => 'freedb_dusays',
'password' => 'sPyT&R#5NyFPSnP',
'charset' => 'utf8mb4',
'database' => 'freedb_dusays',
'engine' => 'MyISAM',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

vercel.json 文件的内容如下:

1
2
3
4
5
6
7
8
{
"functions": {
"api/index.php": {
"runtime": "vercel-php@0.4.0"
}
},
"routes": [{ "src": "/(.*)", "dest": "/api/index.php" }]
}

api/index.php 文件的内容如下:

1
2
3
4
5
6
7
8
9
10
<?php
$file= __DIR__ . '/..'.$_SERVER["PHP_SELF"];
if(file_exists($file))
{
return false;
}
else
{
require_once __DIR__ . '/../index.php';
}

在 GitHub Desktop 新建项目,并上传 Typecho 源码:

在 Vercel 导入刚新建的项目,部署后即可通过域名访问 Typecho 安装页面:

访问 Vercel 提供的域名,记得在域名结尾添加 /install.php

写在最后

杜老师首先要提醒使用这种方式的小伙伴,用于短期体验折腾没有问题,长期的话建议还是用服务器托管。

该种方式源码端的变更「例如上传文件」无法同步至 GitHub 仓库,这就会造成数据的丢失。

评论