也许你想要有一个自己的独立博客,已经写了很多文章却对网站部署一筹莫展;也许你喜欢自己编写 Python 服务,却不愿意为了这一两个小脚本而斥资购买云服务器;也许,你拥有属于你自己的域名,但是每次查看、配置 DNS 却必须忍受域名商提供的繁琐而复杂的后台管理系统。

这些小事儿,Vercel 都可以帮你搞定。

 

注册与安装

如果你曾听说过 ZEIT Now,是的,它是 Vercel 的前身。在今年早些时候,ZEIT Now 进行了「品牌升级」,成为了现在的 Vercel。

首先,在 Vercel 官网(https://vercel.com/)注册一个新账户。现在,注册新用户必须使用 Github、Gitlab 或者 Bitbucket 的账户进行授权,并绑定手机号。注册完成后,可以在配置页面修改自己的邮箱地址。

Vercel 的大部分功能都通过命令行来操作。Vercel 的客户端工具可以在这个页面查看:

 

这个命令行工具是使用 Node.js 编写的,因此使用 npm 安装,也因此同时支持 Windows、macOS 和 Linux 操作系统。如果你没有安装过 Node.js 环境,需要先安装 Node.js。之后,可以在 Windows 的 Powershell 或者 macOS 的终端中运行下述命令安装 Vercel:

npm i -g vercel

成功安装后,运行下述命令登录账户:

vc login

这里,vc 是 Vercel 的缩写,你也可以使用完整版的 vercel 来执行。

Vercel 的登录很有意思,因为我们自始至终没有设置过账户密码,它是通过向你邮箱发送一封邮件确认。在邮件中,甚至还有一个和你约定的「暗号」,作为彼此的凭证。

绑定域名

如果你拥有你自己的域名,或者你拥有多个域名,我十分推荐把它们全部绑定到 Vercel 进行管理。

把域名绑定到 Vercel 时,只需要执行:

vc domains add sanko.sspai

接下来还需要转移 DNS 解析到 Vercel 的解析服务。运行:

vc domains verify sanko.sspai

在第一次执行这个 verify 命令时,是肯定会失败的。不过,稍等之后,会给出两种认证的方法。我推荐使用第一种,也就是把域名的 DNS 解析直接托管给 Vercel,这样是最方便、最省心的。

在你购买域名的地方,找到管理后台,选择 DNS 解析,把域名服务器地址改成上述命令执行结果中提示的两个即可。在上图中,分别是:

ns1.vercel-dns.com
ns2.vercel-dns.com

再次执行 verify 这个命令,如果提示 Success,就意味着配置成功了。

管理域名解析

把域名托管到 Vercel 的好处之一是,当需要修改域名解析的时候,不再需要登录网页版的后台,而只需要打开一个命令行窗口,按格式敲入命令即可。

比如,当需要把 www.sanko.sspai 这个域名解析到 11.22.33.44 这个 IP 地址,只需要执行:

vc dns add sanko.sspai www A 11.22.33.44

或者,当你需要添加一个 TXT 记录,你可以:

vc dns add sanko.sspai _now TXT MqPqk5fzrj

最后,你可以通过一个简单的命令,查看自己名下所有域名的所有 DNS 状态了:

vc dns ls

配置邮箱

事实上,在 Vercel 中的 DNS 服务也可以非常简单地用来配置邮箱。

当我们选择一个域名邮箱或者企业邮箱的时候,往往会被要求在 DNS 中进行配置。我们派曾经介绍过如何使用 Yandex 提供的域名邮箱,里面就提到需要配置 MX 记录。

使用 Vercel 来配置 MX 记录的方法是:

now dns add sanko.sspai '@' MX mx.yandex.net. 10

搭建博客

如果你喜爱写作、喜爱分享,那你一定想过要有一个自己的博客。除了使用类似新浪博客、CSDN 等博客服务之外,许多人也会尝试自己搭建一个「独立博客」。

我以知名的静态博客系统 Hexo 为例。使用 Hexo 写作后,执行 hexo 的命令生成网站的静态文件:

hexo g

这时,会产生一个 public 的文件夹。

继续执行 Vercel 的命令:

vc

是的,这次不需要跟其他命令,只需要简单的 vc 即可。

接下来会出现交互式的配置菜单,需要你依次选择:

Vercel CLI 19.2.0
? Set up and deploy “~/Documents/workspace/blog”? [Y/n] y
? Which scope do you want to deploy to? sanko.sspai
? Link to existing project? [y/N] n
? What’s your project’s name? blog
? In which directory is your code located? ./public
? Want to override the settings? [y/N] n

在第一次部署时,只有倒数第二个问题「In which directory is your code located?」要手动输入 public ,其他问题全部可以直接敲击回车键选择默认配置。

现在,网站已经成功运行起来了。你可以直接去浏览器按下「Ctrl+V」粘贴,即可访问你的新博客。

值得注意的是,这个网站支持 HTTPS 访问。Vercel 会自动为我们申请一个 Let's Encrypt 的证书,并为我们自动续期。而如果这一切由我们自己来完成,则需要:

  1. 购买域名
  2. 购买服务器
  3. 安装与配置 Nginx
  4. 上传网站文件
  5. 添加 DNS 解析项
  6. 配置 Let's Encrypt 的证书
  7. 每三个月续期证书

相比之下,使用 Vercel 确实省心不少,还省下了购买域名和服务器的费用。

要更新文章的时候,只需要执行:

vc --prod

文章就会更新到之前的网址中。

为博客配置域名

虽然 Vercel 为我们免费提供了一个以 .vercel.app 结尾的域名,但是我们依然可以选择使用自己的域名。由于我们的域名解析服务本身托管在 Vercel,因此可以直接在 Vercel 设置:

vc alias blog.vercel.app blog.sanko.sspai

格式是: vc + alias + 系统分配的域名 + 自己想要设置的域名,用空格分隔。

这时,我们就可以使用我们新配置的域名来访问博客了。

运行网络小程序

除了部署静态网站,Vercel 最拿手的其实是所谓的 Serverless Functions,也就是说,你可以直接运行你自己编写的 Python 脚本或者是 Node.js 脚本,让 Vercel 充当你自己的服务器。

比如我编写了一个非常简洁的 Python 脚本,用来显示访问者的 IP 地址:

from http.server import BaseHTTPRequestHandler
class handler(BaseHTTPRequestHandler):
  def do_GET(self):
    self.send_response(200)
    self.end_headers()
    self.wfile.write(self.headers.get('x-forwarded-for').encode())
    return

同样的,使用 Vercel 命令部署:

vc

部署完成后,就可以在网页上看到自己的 IP 了。

如果你擅长写 Python 或者 Node.js 脚本,那么这个 Serverless Functions 足以让你完成大部分自动化的工作。你还可以绑定一个 Github 仓库,这样当你每次提交代码的时候,都会自动更新 Vercel 上的部署内容。

那么,价格……

Vercel 十分良心,为个人用户提供了免费的爱好者计划。付费后,可以获得团队协作相关的功能,并在系统资源分配上有所提升。

总之,Vercel 作为一款开箱即用的部署小工具,可以为我们在域名管理和网站部署方面提供十分强大的帮助,而其免费资源也足够满足我们个人用户的日常所需了。