Vercel部署Typecho动态博客

前言

感谢: am-abudu 大佬的 Vercel 实例

相信很多人会和我一样 what? Vercel 什么时候能部署 PHP 了?我怎么不知道?(我用 Vercel 也有一年时间了,我居然不知道,之前的 Vercel 文档白看了?)

然后我就去查Vercel 文档,果然发现了能部署 PHP
Vercel-PHP 地址:juicyfx/vercel-php
本文 Github 仓库: https://github.com/lete114/Vercel-Typecho

准备工作

  1. Github 账号
  2. Vercel 账号
  3. 下载 Typecho 程序(官网)
  4. 自己喜欢的 Typecho 主题(主题官网)
  5. 数据库(MySQL、PostgreSQL、SQLite)

正文

关于部署项目到 Vercel 有两种方式

  1. 使用 Vercel CLI 进行部署
  2. 使用第三方库进行拉去(GitHub、GitLab、Bitbucket)

我个人是比较喜欢使用 Vercel CLI 的,但在这里我为了照顾大家,我还是使用git push到 Github 后再让 Vercel 来拉取的方式

  1. 创建 Github 仓库:Vercel-Typecho
  2. 本地解压 Typecho 程序
    解压后会得到 bulid 目录内容如下
    Typecho

Vercel 依赖

在 bulid 目录下新建vercel.json

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

在 bulid 目录下新建config.inc.php

COPY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
/**
* Typecho Blog Platform
*
* @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
* @license GNU General Public License 2.0
* @version $Id$
*/

/** 开启https */
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__);

/** 载入API支持 */
require_once 'Typecho/Common.php';

/** 程序初始化 */
Typecho_Common::init();

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
'host' => '数据库地址',
'user' => '数据库用户名',
'password' => '数据库密码',
'charset' => 'utf8mb4',
'port' => '3306',
'database' => '数据库昵称',
'engine' => 'MyISAM',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

在 bulid 目录下新建api/index.php

COPY
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$file= __DIR__ . '/..'.$_SERVER["PHP_SELF"];

if(file_exists($file))
{
return false;
}
else
{
require_once __DIR__ . '/../index.php';
}
#echo $_SERVER["PHP_SELF"];

自定义主题

到 Typecho 官网下载自己喜欢的主题解压放到bulid/usr/themes/目录下即可(本文只提供部署教程,则使用默认主题)
themes

准备数据库

GearHost 数据库现已不可用
目前推荐: (我没用过)

  1. FreeDB
  2. ElephantSQL

数据库渠道有很多,你可以选择花钱买数据库,也可以白嫖(当然你不怕你文章丢失的话(白嫖有风险))
我这里推荐一个平台,算是比较稳的,这个平台我用了差不多快一年了吧,记不太清了,但是速度不是很快、而且存储只有 5MB,我 hexo 博客文章有 70+文章,目前占用 400+kb,5MB 因该够写好几百篇的文章了
GearHost: GearHost
具体注册就不多说了(需要科学上网,大陆 IP 会被拦截)
这个平台支持 PHP 程序,可以直接部署 Typecho,而且还提供数据库,且数据库支持非本平台连接,我觉得速度不行

DataBase
DataBase
DataBase

部署

上个步骤已经获取了数据库,将数据库信息填入bulid/confi.inc.php

最后克隆已经创建好的 Github 仓库: https://github.com/lete114/Vercel-Typecho
克隆后得到Vercel-Typecho目录,且里面包含.git,将bulid里的全部文件及文件夹复制到Vercel-Typecho目录下

COPY
1
2
3
4
5
6
# 添加所有文件到暂存区
git add .
# 提交
git commit -m'Vercel-Deploy-Typecho'
# 推送到远程仓库
git push

创建 Vercel 项目:Vercel-Typecho(该昵称可以不与 GitHub 仓库同名)

Vercel-Typecho
Vercel-Typecho
Vercel-Typecho
Vercel-Typecho
Vercel-Typecho

最后自己绑定域名,或者自己自定义域名,打开链接
Vercel-Typecho
Vercel-Typecho
Vercel-Typecho
Vercel-Typecho
Vercel-Typecho

常见问题

  1. 在使用官方下载的 1.1 正式版部署时后进行安装会出现如下警告
    此问题博主也不知道如何解决,如果你已解决可以在评论区留言,我会将留言添加到此处
    config-init-error
  2. (目前已解决,可能与config.inc.php文件的配置有关,先已添加注释,这也可能是我的个人原因)进入后台样式缺失,要求使用 https 请求,可在安装的时候填写的的确是 https,它为什么会出现该问题,可能是程序的原因,有或者其他原因我也不清楚,如果有人已解决可在评论区留言,我会将留言添加到此处
    Vercel-Typecho
Authorship: Lete乐特
Article Link: https://blog.imlete.cn/article/Vercel-Deploy-Typecho.html
Copyright: All posts on this blog are licensed under the CC BY-NC-SA 4.0 license unless otherwise stated. Please cite Lete乐特 's Blog !