在VPS上部署TypeScript应用:从A到Z的逐步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在VPS上部署TypeScript应用:从A到Z的逐步指南

\n\n

使用TypeScript开发是创建可靠且可扩展的Web应用程序的现代标准。然而,在编写代码之后,问题来了:如何正确地在真实服务器上部署它?在本文中,我们将介绍在VPS(虚拟专用服务器)上部署TypeScript应用的完整流程。您将学习如何配置环境、将TypeScript编译为JavaScript、使用PM2设置自动启动以及通过Nginx配置反向代理。本材料面向已经具备TypeScript和Linux基础知识的开发者。

\n\n

1. 准备VPS并安装必要的软件

\n\n

第一步是准备服务器。我们将使用Ubuntu 22.04 LTS,因为它是VPS最稳定和最流行的操作系统之一。通过SSH连接到服务器:

\n\n
ssh root@您的服务器IP
\n\n

更新包管理器并安装Node.js(推荐LTS版本)以及npm包管理器:

\n\n
apt update && apt upgrade -y\ncurl -fsSL https://deb.nodesource.com/setup_20.x | bash -\napt install -y nodejs git nginx
\n\n

检查安装:

\n\n
node -v   # v20.x.x\nnpm -v    # 10.x.x
\n\n

现在全局安装TypeScript和PM2(Node.js的进程管理器):

\n\n
npm install -g typescript pm2
\n\n

重要提示: TypeScript被编译为JavaScript,因此服务器上不一定需要在运行时拥有TypeScript本身——只需在本地或服务器上启动前编译代码即可。然而,全局安装ts-node可能对调试有用。

\n\n

2. 编译TypeScript并配置package.json

\n\n

假设您的应用程序具有以下结构:

\n\n
my-ts-app/\n├── src/\n│   ├── index.ts\n│   ├── routes.ts\n│   └── utils.ts\n├── package.json\n├── tsconfig.json\n└── .gitignore
\n\n

tsconfig.json文件应配置为生产环境构建。配置示例:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true,\n    "resolveJsonModule": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist", "tests"]\n}
\n\n

在package.json中添加构建和启动脚本:

\n\n
{\n  "name": "my-ts-app",\n  "version": "1.0.0",\n  "scripts": {\n    "build": "tsc",\n    "start": "node dist/index.js",\n    "dev": "ts-node src/index.ts"\n  },\n  "dependencies": {\n    "express": "^4.18.2"\n  },\n  "devDependencies": {\n    "typescript": "^5.3.3",\n    "@types/express": "^4.17.21",\n    "ts-node": "^10.9.2"\n  }\n}
\n\n

现在,当您运行npm run build时,TypeScript将src文件夹中的文件编译到dist文件夹。一个简单的Express服务器示例(文件src/index.ts):

\n\n
import express, { Request, Response } from 'express';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req: Request, res: Response) => {\n  res.send('TypeScript应用正在VPS上运行!');\n});\n\napp.listen(PORT, () => {\n  console.log(`服务器已在端口 ${PORT} 上启动`);\n});
\n\n

3. 克隆仓库并在服务器上构建

\n\n

将您的应用程序复制到服务器。最方便的方式是通过Git。如果您的代码存储在GitHub/GitLab上,请在服务器上执行:

\n\n
cd /var/www\ngit clone https://github.com/您的用户名/my-ts-app.git\ncd my-ts-app
\n\n

安装依赖并执行构建:

\n\n
npm install\nnpm run build
\n\n

之后,在dist文件夹中将出现编译后的.js

博客

书籍推荐