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

简介: 在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为例,但这一策略普遍适用,只需适当调整以匹配你的具体技术栈。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
560 5
|
2月前
|
Java Linux Apache
在CentOS服务器上编译并部署NiFi源码
部署Apache NiFi在CentOS上是一个涉及细节的过程,需要注意Java环境、源码编译、配置调整等多个方面。遵循上述步骤,可以在CentOS服务器上成功部署和配置Apache NiFi,从而高效地处理和分发数据。
176 17
|
3月前
|
弹性计算 安全 Linux
使用阿里云服务器安装Z-Blog博客网站流程,新手一键部署教程
本教程教你如何在阿里云99元服务器上,通过宝塔Linux面板一键部署Z-Blog博客。基于CentOS 7.9系统,从远程连接、安装宝塔面板、开放端口到部署Z-Blog全流程详解,操作简单,新手也能轻松搭建个人博客网站。
455 13
|
3月前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
289 0
监控 安全 Linux
146 0
|
域名解析 弹性计算 NoSQL
飞天加速计划·高校学生在家实践——ECS服务器初体验
我当前是计算机专业研二学生,现就读于北京科技大学,主攻方向是计算机视觉(CV)中的图像分割,我们实验室也有GPU计算集群,不过在知乎偶然一次机会了解到阿里云的高校计划,从链接点进来后,经过一系列熟悉的操作,我慢慢了解到云服务器ECS这一概念。
|
2月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。