3. 开发环境搭建:Node.js/Go/Python运行时安装、Serverless Framework CLI安装与配置
好,咱们正式开始动手了。
这一章,说白了就是“磨刀”。刀磨得快,后面砍柴才不费劲。我见过太多同学,代码写得挺好,结果环境配了一整天,心态直接崩了。所以,咱们把这一步走稳。
3.1 运行时安装:Node.js、Go、Python
Serverless 项目,本质上是把代码扔到云上跑。那你的机器上,至少得能跑这些代码吧?
我个人习惯,把这三个运行时都装上。为什么?因为不同场景用不同语言。比如写个简单的 API,Node.js 最快;处理 CPU 密集型任务,Go 更香;做数据分析,Python 是标配。
3.1.1 Node.js 安装
Node.js 是 Serverless 生态里最亲民的语言。我建议你装 LTS 版本,别追新。
去官网下载,或者用 nvm 管理版本。我个人推荐 nvm,切换版本太方便了。
# 安装 nvm(macOS/Linux)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 安装 Node.js LTS
nvm install --lts
# 验证
node -v
npm -v
3.1.2 Go 安装
Go 的安装很简单,就是下载、解压、配环境变量。嗯,这里要注意,Go 的版本号要跟云厂商支持的保持一致。比如 AWS Lambda 目前支持 Go 1.x,你就别装 Go 1.22 了,虽然也能用,但编译出来的二进制可能不兼容。
# 下载 Go(以 macOS 为例)
wget https://go.dev/dl/go1.21.5.darwin-amd64.tar.gz
# 解压到 /usr/local
sudo tar -C /usr/local -xzf go1.21.5.darwin-amd64.tar.gz
# 配置环境变量(加到 ~/.zshrc 或 ~/.bash_profile)
export PATH=$PATH:/usr/local/go/bin
# 验证
go version
3.1.3 Python 安装
Python 3.8 以上都行。我个人推荐用 pyenv 管理版本,跟 nvm 一个道理。
# 安装 pyenv(macOS)
brew install pyenv
# 安装 Python 3.11
pyenv install 3.11.0
# 设置全局版本
pyenv global 3.11.0
# 验证
python --version
为什么会推荐 pyenv?因为很多 Serverless 项目依赖的库,只支持特定 Python 版本。你想想看,要是项目要求 3.9,你系统默认是 3.12,那依赖一装就报错。pyenv 可以让你在项目目录里自动切换版本,省心。
3.2 Serverless Framework CLI 安装与配置
好,运行时搞定了。接下来装主角——Serverless Framework。
这个工具,说白了就是把你的代码打包、上传、配置触发器、部署到云上。你不需要手动去云控制台点来点去,一条命令搞定。
3.2.1 安装 CLI
用 npm 全局安装,简单粗暴。
npm install -g serverless
# 验证
serverless --version
如果看到版本号,比如 Framework Core: 3.38.0,那就成了。
sudo 就行。但我不建议用 sudo,最好配置 npm 全局路径。具体方法网上搜一下,很简单。
3.2.2 配置云厂商凭证
CLI 装好了,但它还不知道你要部署到哪家云。你需要给它一个“钥匙”。
以阿里云为例(腾讯云、AWS 类似):
# 配置阿里云凭证
serverless config credentials --provider aliyun --key YOUR_ACCESS_KEY_ID --secret YOUR_ACCESS_KEY_SECRET
嗯,这里要注意。千万别把密钥写死在代码里!我见过有人把 AccessKey 直接贴到 GitHub 上,结果被爬虫扫到,一夜之间被刷了几千块钱。你想想看,多冤。
我个人习惯,把密钥配到环境变量里:
export ALIBABA_CLOUD_ACCESS_KEY_ID=你的Key
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=你的Secret
这样 CLI 会自动读取,安全又方便。
3.2.3 初始化第一个项目
配置好了,咱们来试试水。
# 创建一个 Node.js 项目
serverless create --template aliyun-nodejs --path my-first-project
# 进入目录
cd my-first-project
# 部署
serverless deploy
如果一切顺利,你会看到一堆输出,最后有个 URL。点开它,就能访问你的第一个 Serverless 函数了。
3.3 避坑指南:我踩过的那些坑
环境搭建这块,坑其实不少。我挑几个最常见的说说。
- Node.js 版本不匹配: 我曾经用 Node 18 开发,结果云厂商只支持到 16,部署上去直接 502。后来我学乖了,先查文档再装。
- Go 的 CGO 问题: 如果你用 Go 写函数,记得编译时关掉 CGO。不然部署到 Linux 环境上,动态链接库找不到,直接崩溃。命令是
CGO_ENABLED=0 GOOS=linux go build。 - Python 依赖安装失败: 有些库需要编译,比如
numpy。在 macOS 上装好了,部署到云上却报错。为什么?因为云环境是 Linux,二进制不兼容。解决办法:用 Docker 模拟云环境来安装依赖。 - 凭证过期: 云厂商的临时密钥一般几小时就过期。如果你用临时密钥,记得刷新。不然部署到一半报错,很烦。
3.4 验证环境:跑一个 Hello World
光说不练假把式。咱们写个最简单的函数,验证环境是否通。
以 Node.js 为例:
// index.js
module.exports.handler = function(event, context, callback) {
callback(null, {
statusCode: 200,
body: JSON.stringify({ message: 'Hello, Serverless!' })
});
};
部署后,用 curl 测试:
curl https://你的函数URL
如果返回 {"message":"Hello, Serverless!"},恭喜你,环境搭建成功!
- Node.js、Go、Python 三个运行时,建议都装上
- Serverless Framework CLI 用 npm 全局安装
- 云厂商凭证别写死在代码里,用环境变量
- 第一次部署慢是正常的,耐心等待
好,环境搭好了。下一章,咱们开始写真正的业务代码。到时候你会发现,前面这些准备工作,值!