在一台ECS服务器上优雅部署多环境:实践攻略

本文涉及的产品
性能测试 PTS,5000VUM额度
应用实时监控服务-应用监控,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在ECS上部署多环境应用,通过Nginx反向代理实现。规划端口或子域名区分开发、测试和生产环境。配置应用监听不同端口,如Node.js应用修改启动脚本。【6月更文挑战第21天】

在开发和运维工作中,常常需要在同一台ECS(Elastic Compute Service,弹性计算服务)服务器上部署多个版本的应用,比如开发环境、测试环境和生产环境。这不仅能节省成本,还能提高资源利用率。本文将详细介绍如何在一台ECS服务器上通过Nginx反向代理和不同的端口(或子域名)配置,实现多环境的高效部署。

环境准备

  • 一台配置好的ECS服务器
  • 安装了Nginx的ECS服务器
  • 应用程序的多个版本(例如,开发版、测试版、生产版)

步骤一:规划端口或子域名

首先,根据需求决定是使用不同端口还是子域名来区分不同环境。使用端口的例子如:开发环境(8080端口),测试环境(8081端口);使用子域名的例子如:dev.example.com、test.example.com、www.example.com分别对应开发、测试和生产环境。

步骤二:配置应用程序监听不同端口

修改每个环境的应用配置,使其监听不同的端口。以Node.js应用为例,在应用的启动脚本中修改监听端口:

// 开发环境
app.listen(8080, () => {
   
  console.log('Development server is running on port 8080');
});

// 测试环境
app.listen(8081, () => {
   
  console.log('Testing server is running on port 8081');
});

确保每个应用实例都能正常启动并监听指定端口。

步骤三:配置Nginx反向代理

接下来,通过Nginx配置文件,设置反向代理,将来自不同入口的请求转发到相应的应用环境。假设使用子域名区分环境,编辑Nginx的/etc/nginx/nginx.conf或创建包含以下内容的子配置文件,并在主配置文件中引入:

server {
   
    listen 80;
    server_name dev.example.com;

    location / {
   
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
   
    listen 80;
    server_name test.example.com;

    location / {
   
        proxy_pass http://localhost:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这段配置使得通过dev.example.com访问的应用实际上被代理到了本地8080端口,而通过test.example.com则被代理到8081端口。

步骤四:更新DNS记录(仅限于子域名方案)

如果使用子域名方案,别忘了在DNS提供商处为每个子域名设置正确的A记录或CNAME记录,指向你的ECS服务器IP地址。

步骤五:测试与应用

保存Nginx配置文件的更改后,检查语法正确性并重新加载Nginx配置:

sudo nginx -t
sudo nginx -s reload

现在,你可以通过不同的入口访问到各自独立的环境了。

总结

通过上述步骤,我们不仅高效利用了单一ECS服务器资源,还实现了多环境的清晰隔离,这对于开发流程、测试流程乃至运维管理都是极其有益的。记住,虽然本文以Node.js应用和Nginx为例,但这一策略普遍适用,只需适当调整以匹配你的具体技术栈。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
弹性计算 监控 负载均衡
|
8天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
15天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
20天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
61 3
|
23天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
24天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
24天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
197 3
|
24天前
|
NoSQL Linux PHP
|
25天前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
95 1
|
数据采集 SQL 弹性计算
使用云服务器ECS部署了自己的第一个爬虫
云服务器部署爬虫爬取网站最新通告并推送
使用云服务器ECS部署了自己的第一个爬虫