引言:为什么在VPS上部署TypeScript应用是正确的选择
得益于严格的类型检查和更好的代码可读性,TypeScript开发已成为行业标准。然而开发完成后,一个关键问题随之而来:如何正确地将应用部署到生产服务器?在VPS(虚拟专用服务器)上部署TypeScript应用不仅仅是复制文件,而是一个包含将TypeScript编译为JavaScript、配置环境、管理进程和确保安全性的完整流程。
本文将详细拆解在VPS上部署TypeScript应用的分步算法。您将学习如何准备服务器、配置构建、使用PM2进程管理器运行应用以及通过Nginx使其可访问。本文面向已拥有基础TypeScript应用(例如Express.js或NestJS)并希望将其部署到远程服务器的开发者。
第一步:准备VPS并安装必要软件
在VPS上部署TypeScript应用的第一阶段是配置服务器本身。我们将使用Ubuntu 22.04 LTS,这是最稳定、最流行的Web服务器操作系统。
通过SSH连接到服务器后,运行以下命令:
# 更新软件包sudo apt update && sudo apt upgrade -y
# 安装Node.js (版本18或更高)curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs
# 检查版本node -vnpm -v
# 安装Gitsudo apt install git -y
# 安装PM2进程管理器npm install -g pm2注意:TypeScript无需在服务器上全局安装。它仅用于项目构建阶段,该阶段可在本地机器上执行,也可通过CI/CD脚本在服务器上执行。
此外,建议设置基本防火墙:
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enable第二步:克隆项目并构建TypeScript
现在服务器已准备就绪,让我们传输TypeScript应用代码。最常见的方法是通过Git克隆仓库。
# 克隆仓库git clone https://github.com/your-username/your-project.gitcd your-project
# 安装依赖npm install
# 将TypeScript编译为JavaScriptnpx tsc重要提示:请确保在tsconfig.json文件中正确指定了输出文件夹,通常为dist或build:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}编译成功后,可供运行的JavaScript代码将出现在dist文件夹中。检查应用是否正确启动:
node dist/index.js第三步:通过PM2运行并配置自动启动
简单的node启动方式不适合生产环境——如果SSH连接中断,进程将停止。为了在VPS上部署TypeScript应用,我们使用PM2,它提供:
- 崩溃后自动重启
- 错误和标准输出日志记录
- 集群模式(在多个CPU核心上运行)
在项目根目录创建ecosystem.config.js文件:
module.exports = { apps: [{ name: 'my-ts-app', script: './dist/index.js', instances: 'max', exec_mode: 'cluster', env: { NODE_ENV: 'production', PORT: 3000 }, error_file: './logs/err.log', out_file: './logs/out.log', merge_logs: true }]};通过PM2启动应用:
pm2 start ecosystem.config.jspm2 savepm2