前言

Vercel通过Community Runtimes也可以像replit那样调用其它语言环境,我们可以利用这个在vercel上部署PHP等环境,从而支持typecho等程序的运行。参考vercel文档

准备

免费MySQL数据库推荐:Planetscale 免费5G,魔法进入

注意:使用Vercel部署typecho博客可以省去一个服务器,在一定程度上也能避免网络攻击,只要买一个数据库服务即可使用,也能省几块钱吧。

步骤

  1. 将typecho源码解压到项目目录
  2. 在项目根目录下新建配置文件vercel.json,调用php环境
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
    "functions": {
    "api/*.php": {
    "runtime": "vercel-php@0.4.0"
    }
    },
    "routes": [
    { "src": "/(.*)", "dest": "/api/index.php" }
    ]
    }
  • vercel-php@0.5.1 - PHP 8.1.x
  • vercel-php@0.4.0 - PHP 8.0.x
  • vercel-php@0.3.2 - PHP 7.4.x
  1. 在项目根目录下新建api/index.php
    api/index.php是php程序的入口,它应该放在api文件夹中
    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"];
  2. 修改项目根目录下的install.php文件,删掉if (!$writeable)中的!,跳过/usr/uploads目录权限检查(vercel项目文件都无法通过typecho在线修改)
    1
    2
    3
    4
    -   if (!$writeable) {
    + if ($writeable) {
    $errors[] = _t('上传目录无法写入, 请手动将安装目录下的 %s 目录的权限设置为可写然后继续升级', $uploadDir);
    }
  3. 将项目上传到vercel,通过vercel的测试域名访问安装页面,填写数据库信息,当然vercel无法直接修改文件,typecho安装页面会根据你填写的数据生成配置文件内容,手动在本地项目根目录下新建文件config.inc.php,填入typecho网页生成的内容,重新上传即可配置成功。

或者直接使用我配置好的项目 typecho_vercel 一键部署到,直接从第5步开始,默认环境PHP 8.0.x。**