如何不再害怕并开始部署:您的第一个生产环境
您编写了一个很棒的JavaScript应用程序。它在本地运行良好,测试通过,控制台中没有错误。但一旦涉及到“如何在实际服务器上运行它?”这个问题,许多人就开始恐慌。VPS、Docker、云平台——听起来像是DevOps领域的东西,而不是前端或Node.js后端。
实际上,这比看起来要简单得多。在本文中,我们将探讨部署JavaScript应用的三种主要方法:在VPS上、在Docker中以及在云平台上。我将展示真实的代码示例,解释每种方法的优缺点,您可以选择最适合您项目的方法。
什么是部署,为什么需要它?
部署(deploy)是将您的应用程序部署到服务器上的过程,用户可以在服务器上全天候访问它。本地开发只是第一步。没有部署,您的项目就只是您计算机上的一组文件。
对于JavaScript开发人员来说,以下三种场景尤为重要:
- 在VPS上部署——完全控制服务器。
- 在Docker中部署——环境隔离和可重现性。
- 在云平台上部署——最少的基础设施管理工作。
让我们详细分析每种方案。
在VPS上部署:手动管理和完全控制
VPS(虚拟专用服务器)是一个虚拟服务器,您可以在其上安装任何操作系统并手动配置所有内容。这是一种经典方法,提供了最大的灵活性。
第1步:选择并配置服务器
首先,租用一个VPS(例如,来自DigitalOcean、Hetzner或Timeweb)。Node.js的最低配置是1个vCPU和1 GB RAM。选择Ubuntu 22.04 LTS。
通过SSH访问后,进行基本配置:
ssh root@您的_服务器_IP
# 更新软件包apt update && apt upgrade -y
# 安装Node.js 20.xcurl -fsSL https://deb.nodesource.com/setup_20.x | bash -apt-get install -y nodejs
# 检查node -vnpm -v第2步:克隆仓库并安装依赖
假设您的应用程序托管在GitHub上。将其克隆到服务器:
git clone https://github.com/您的用户名/您的仓库.gitcd 您的仓库npm install --production第3步:配置环境变量
切勿将机密信息存储在代码中。创建一个.env文件:
nano .env
# 示例内容PORT=3000DATABASE_URL=mongodb://localhost:27017/myappJWT_SECRET=您的超级密钥第4步:通过PM2启动
PM2是Node.js的进程管理器。它会在应用程序崩溃时自动重启并保持其运行:
npm install -g pm2pm2 start app.js --name "my-app"pm2 savepm2 startup完成!您的应用程序在3000端口上运行。要使其在80端口上可访问,请使用Nginx作为反向代理。
apt install nginx -ynano /etc/nginx/sites-available/default在文件中写入:
server { listen 80; server_name 您的域名.ru;
location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}重启Nginx:
nginx -tsystemctl restart nginxVPS的优点:完全控制,可以配置任何内容,成本低。
缺点:需要自己处理安全性、备份和更新。
在Docker中部署:容器化实现可重现性
D