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

本文涉及的产品
性能测试 PTS,5000VUM额度
可观测可视化 Grafana 版,10个用户账号 1个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 在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
目录
相关文章
|
2月前
|
弹性计算 监控 负载均衡
|
3天前
|
人工智能 监控 测试技术
阿里云磐久服务器稳定性实践之路
阿里云服务器质量智能管理体系聚焦自研服务器硬件层面的极致优化,应对高并发交付、短稳定性周期、早问题发现和快修复四大挑战。通过“三个重构”(质量标准、开发流程、交付模式)、“六个归一”(架构、硬件、软件、测试、部件、制造)策略,实现芯片、整机和云同步发布,确保快速稳定上量。此外,全场景测试体系与智能预警、分析、修复系统协同工作,保障服务器在萌芽阶段发现问题并及时解决,提升整体质量水平。未来,阿里云将继续深化大数据驱动的质量管理,推动服务器行业硬件质量的持续进步。
|
4天前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
1月前
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
49 8
|
2月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
2月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
47 4
|
2月前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
100 5
|
2月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
2月前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
93 3
|
3月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感