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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 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为例,但这一策略普遍适用,只需适当调整以匹配你的具体技术栈。

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
存储 缓存 安全
Servlet与JSP在Java服务器端开发中的实践与优化
【6月更文挑战第23天】本文探讨了Java中Servlet与JSP在在线书店系统开发中的应用,强调了它们在动态网站构建和Web效率中的作用。通过实例,展示了Servlet如何作为控制器处理用户登录,JSP则利用EL表达式呈现数据。此外,文章提及了性能优化如分页和缓存,以及安全措施如防止SQL注入和XSS攻击,强调了全面掌握和应用这些技术的重要性,以创建高效、安全的Web应用。
|
3天前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
13 1
|
5天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
1天前
|
JavaScript Java 应用服务中间件
打包前后端程序并在阿里云服务器上部署,只需几步就能实现!
打包前后端程序并在阿里云服务器上部署,只需几步就能实现!
|
2天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
3天前
|
弹性计算 缓存 监控
云效将项目代码部署到云服务器ECS
云效支持一键和手动部署,一键部署因其高效、一致性和可重复性而受青睐,但也存在灵活性不足和初期设置复杂的挑战。优化方向包括简化脚本、提供选项、完善文档、集成监控和回滚机制。一键部署步骤概括为:准备云效项目和ECS,配置项目和环境,编写部署脚本,设置一键部署,测试脚本,审核发布,监控结果,及后续维护。实际操作应参照云效最新文档。
10 0
|
6天前
|
网络协议 网络安全 数据安全/隐私保护
如何在IDEA中使用固定公网地址SSH远程连接服务器开发环境(三)
在IDEA中通过固定公网地址SSH远程连接服务器开发环境,需要配置固定TCP端口以避免地址随机变化。首先,升级cpolar至专业版及以上,然后在官网保留一个固定TCP地址。进入cpolar管理界面,编辑隧道信息,将保留的固定地址填入,更新隧道。最后,在IDEA中新建SSH连接,输入固定地址和端口,验证连接。成功后,即可稳定远程开发。
|
域名解析 弹性计算 NoSQL
飞天加速计划·高校学生在家实践——ECS服务器初体验
我当前是计算机专业研二学生,现就读于北京科技大学,主攻方向是计算机视觉(CV)中的图像分割,我们实验室也有GPU计算集群,不过在知乎偶然一次机会了解到阿里云的高校计划,从链接点进来后,经过一系列熟悉的操作,我慢慢了解到云服务器ECS这一概念。
|
6天前
|
存储 弹性计算 Linux
阿里云账号注册、完成实名认证、试用云服务器和购买云服务器流程参考
本文为大家介绍新手用户从注册阿里云账号,完成实名认证,然后试用云服务器和购买云服务器的主要流程,适合初次购买和试用阿里云服务器的新手用户参考。
阿里云账号注册、完成实名认证、试用云服务器和购买云服务器流程参考
|
3天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线