首页 > 解决方案 > 从 Codepipeline 更新文件后 AWS EC2 站点未更新

问题描述

我试图弄清楚为什么我的“AWS EC2”实例站点没有反映我通过“代码管道”推送的更改

我将我的 Django 应用程序代码从 Github 推送到 Codepipeline 到 Codedeploy,然后推送到我在“ubuntu 18.04”服务器上运行的 AWS EC2 实例。部署在 Codepipeline 中显示为成功,我还可以在我的 EC2 实例中看到最新推送的项目。该站点还使用 gunicorn 和 nginx。

这是我的设置:

gunicorn.socket 文件:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

gunicorn.service 文件:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/Sounds/djangoapp1
ExecStart=/home/ubuntu/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
djangoapp1.wsgi:application

[Install]
WantedBy=multi-user.target

在 AWS IAM 控制台中,我有一个具有以下权限的用户:

  1. AWSCodeCommitFullAccess
  2. AmazonS3FullAccess
  3. AWSCodePipelineFullAccess
  4. github-access(自定义权限,允许 '*' 进行编码部署)

在 IAM 中我拥有的角色:

  1. AWSCodeDeployRole(我用“codedeploy”而不是“aws”编辑了“信任关系”)
  2. 服务角色代码部署

EC2 实例连接到名为“EC2Instance”的 IAM 角色,它有 2 个权限策略:

  1. AmazonEC2FullAccess
  2. AmazonEC2RoleforAWSCodeDeploy

appspec.yml :

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/
hooks:
  AfterInstall:
    - location: scripts/start_server.sh
      timeout: 300
      runas: root

这是我第一次通过代码管道进行部署,有没有办法通过日志检查以查看问题?

部署后我还执行了以下命令:

sudo systemctl restart gunicorn
sudo systemctl restart nginx

有任何想法吗?如果您需要更多信息或设置,请告诉我

标签: nginxamazon-ec2gunicornaws-codepipelineaws-code-deploy

解决方案


推荐阅读