[AWS]codedpoly+ec2+cli+jenkins部署方式规范文档

[AWS]codedpoly+ec2+cli+jenkins部署方式规范文档

AWS CodeDeploy 自动化部署

第三方插件实现代理部署EC2 以下是Windows部署示例

参考示例链接:https://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/tutorials-on-premises-instance-2-create-sample-revision.html

 

目录

[AWS]codedpoly+ec2+cli+jenkins部署方式规范文档

 

一.准备

1.创建角色arn

2.创建EC2

3. appspec.yml 配置

4.脚本准备

before-install.bat 部署前先关闭服务再拷贝

scripts\start_server.bat

scripts\validate_server.bat 

5.S3压缩文件目录结构

二.aws控制台部署

三.jenkins+CLI脚本部署


一.准备

1.创建角色arn

arn:aws-cn:iam::641382364915:role/CodeDeployExampleRole 用于部署组配置

注意: 下面只需加AWSCodeDeployRole 比如加了AWSCodeDeployRoleForECS策略会出现windows 路径是/不是\\

2.创建EC2

添加标签 用于部署组配置 ,

进入机器内 安装codedeloy代理中国区使用的香港的 国外使用对应的

https://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/codedeploy-agent-operations-install-windows.html#codedeploy-agent-operations-install-windows-s3-copy

3. appspec.yml 配置

 

version: 0.0
os: windows
files:
  - source: patch
    destination: C:\Sobey\XDCamAir
hooks:
  BeforeInstall:
    - location: scripts\before-install.bat 
  ApplicationStart:
    - location: scripts\start_server.bat 
      timeout: 6
  ValidateService:
    - location: scripts\validate_server.bat

4.脚本准备

before-install.bat 部署前先关闭服务再拷贝

@echo off  
set exename=XdApi.exe
TaskList|Findstr /i "%exename%">Nul
If ErrorLevel 1 (
  echo "NO EXIT :不存在此应用" 
  )else (
   echo  "EXIT :存在此应用 杀死它" 
   taskkill /f /im %exename%
)

scripts\start_server.bat

 

@echo off 
REM 后台运行 不是会导致部署一直在这和启动的服务一起
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit 
set mypath=C:\Sobey\XDCamAir
set exename=XdApi.exe
cd %mypath%
start %exename%
echo "启动服务命令已执行"   
exit 0

scripts\validate_server.bat 

@echo off  
set exename=AuthorizeManage.exe
TaskList|Findstr /i "%exename%">Nul
If ErrorLevel 1 (
  echo "NO EXIT :不存在此应用 让其报异常"  
  taskkill /f /im %exename%  
  )else (
   echo  "EXIT DEPLOY:存在此 部署应用"  
)

 

5.S3压缩文件目录结构

放在s3下面的zip目录结构:

 

 

 

二.aws控制台部署

1.创建应用 应用程序

2.创建部署组 注意: 环境配置 选 Amazon EC2 实例 选本地的实例不可行

3.创建部署 添加对应的s3地址的zip

 

三.jenkins+CLI脚本部署

 

#自定义项目名
ProjectName="auth"
version=saas.1.0.0
tag=$(date +%Y%m%d%H%M)
zipname=${ProjectName}-${version}-${tag}".zip"



echo ----------------------------------------------构建开始-------------------------------------------------

dotnet build    -c Release  AuthorizeManage.sln
cd AuthorizeManage 
dotnet publish -c Release -o ../publish
cd ..

 
cp Auth.AmazonSecurityTokenService/bin/Release/netstandard2.0/Auth.AmazonSecurityTokenService.dll -r publish/ControllerPlugin/netstandard2.0
cp Auth.CheckPlugin/bin/Release/netstandard2.0/Auth.CheckPlugin.dll -r publish/ControllerPlugin/netstandard2.0
cp Auth.CloudFrontSDK/bin/Release/netstandard2.0/Auth.CloudFrontSDK.dll -r publish/ControllerPlugin/netstandard2.0
cp Auth.Core/bin/Release/netstandard2.0/Auth.Core.dll -r publish/ControllerPlugin/netstandard2.0


echo -------------------------------------------------------更新aws  EC2服务---------------------------------------------

#-----------------整合发布包-------------
my_dir=codedeploy_publish  
if [ ! -d "$my_dir" ]; then
        echo "创建文件夹"
        mkdir $my_dir
else
        echo $my_dir ":文件夹已存在"
fi  
cd codedeploy_publish

my_dir=patch 
if [ ! -d "$my_dir" ]; then
        echo "创建文件夹"
        mkdir $my_dir
else
        rm -fr $my_dir
        mkdir $my_dir
        echo $my_dir ":文件夹已存在"
fi

cp ../Auth.AmazonSecurityTokenService/bin/Release/netstandard2.0/Auth.AmazonSecurityTokenService.dll -r patch
cp ../Auth.CheckPlugin/bin/Release/netstandard2.0/Auth.CheckPlugin.dll -r patch
cp ../Auth.CloudFrontSDK/bin/Release/netstandard2.0/Auth.CloudFrontSDK.dll -r patch
cp ../Auth.Core/bin/Release/netstandard2.0/Auth.Core.dll -r patch
#cp  ../publish/*  -r patch
cp /other/aws-tasks/codedeploy/${ProjectName}/*  -r . #-------------ec2上执行脚本

#压缩为zip  推送到s3  删除本地zip
zip -q -r $zipname  . 
aws s3 cp $zipname  s3://codedeploy-patch/${ProjectName}/  
rm -fr  $zipname


#发布新部署 获取部署后的id 等待给状态
deploymentId=`aws deploy create-deployment \
    --application-name SaasApplicationEC2 \
    --deployment-config-name CodeDeployDefault.OneAtATime \
    --deployment-group-name SaasWinDepoly \
    --description "jenkins codedeploy deployment" \
    --s3-location bucket=codedeploy-patch,bundleType=zip,key="auth/"$zipname | jq ".deploymentId" | tr  -d '"'`  
    
#查看部署状态
aws deploy wait deployment-successful --deployment-id $deploymentId

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个部署 Node.js 服务于 AWS EC2 实例上的简单步骤: 1. 创建 AWS EC2 实例并连接到实例上: 首先,您需要在 AWS 上创建 EC2 实例并连接到实例。您可以使用 SSH 客户端连接到实例。对于 Windows 用户,可以使用 PuTTY 连接到实例。 2. 安装 Node.js: 在连接到实例后,请使用以下命令在 EC2 实例上安装 Node.js: ```bash sudo apt-get update sudo apt-get install nodejs sudo apt-get install npm ``` 3. 上传并运行服务: 将您的 Node.js 服务文件上传到 EC2 实例上。您可以使用 scp 命令将文件从本地系统上传到 EC2 实例上: ```bash scp -i <your-key-pair>.pem app.js ubuntu@<public-dns-name>:~/ ``` 接下来,您可以在 EC2 实例上运行您的 Node.js 服务,使用以下命令: ```bash node app.js ``` 4. 使用 Nginx 部署 Node.js 服务: 为了更好的性能和安全性,建议使用 Nginx 部署您的 Node.js 服务。 首先,安装 Nginx: ```bash sudo apt-get install nginx ``` 然后,配置 Nginx 以反向代理 Node.js 服务。在 /etc/nginx/sites-available/default 文件中,添加以下配置: ```nginx server { listen 80; server_name example.com; 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 服务: ```bash sudo service nginx restart ``` 现在,您的 Node.js 服务已经通过 Nginx 部署AWS EC2 实例上了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值