Django 프로젝트를 위한 AWS DevOps: 간단한 단계로 AWS CodeCommit 및 GitHub를 사용하여 CI-CD 자동화
샘플 django 프로젝트 링크: GitHub
목차
1. GitHub 리포지토리 복제(선택 사항)
- Open your chosen command-line interface
- Create new project folder -->
$ mkdir folder_name
- Go in to your project folder -->
$ cd folder_name
- Clone the remote repository -->
$ git clone [email protected]:vinclairvoyant/django-aws_cicd.git
2. Django 프로젝트 파일 준비(선택 사항)
For those who have cloned repo need not require to do any changes to the django files and can skip this step 2, but for others who are deploying their own django project shall continue with below steps:
If you are deploying your own django application then make sure to allow all hosts by Changing ALLOWED_HOSTS in your django settings file as shown below. (Not recommended for security reasons, eventually we want to change this to an IP)
필수 종속성을 설치하기 위한 requirements.txt 파일이 있는지 확인하십시오.
3. yaml 파일을 생성하여 AWS CI-CD 자동화(선택 사항)
For this basic tutorial we will create 3 files appspec.yml, before_install.sh & after_install.sh to automate the deployment process handled by AWS CI-CD.
Folder/file structure:
manage.py 파일이 있는 루트 프로젝트 디렉터리 내에 appscpec.yml 파일을 만듭니다.
Step 1: Create CodeDeploy appspec.yml file
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/django-aws_cicd
hooks:
BeforeInstall:
- location: scripts/before_install.sh
AfterInstall:
- location: scripts/after_install.sh
mkdir scripts
vi scripts/before_install.yml
Step 2: Create before_install.yml file
#!/usr/bin/env bash
# clean codedeploy-agent files for a fresh install
sudo rm -rf /home/ubuntu/install
# install CodeDeploy agent
sudo apt-get -y update
sudo apt-get -y install ruby
sudo apt-get -y install wget
cd /home/ubuntu
wget https://aws-codedeploy-us-east-1.s3.amazonaws.com/latest/install
sudo chmod +x ./install
sudo ./install auto
# update os & install python3
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-pip python3-venv
pip install --user --upgrade virtualenv
# delete app
sudo rm -rf /home/ubuntu/django-aws_cicd
vi scripts/after_install.yml
Step 3: Create after_install.sh file
#!/usr/bin/env bash
# kill any servers that may be running in the background
sudo pkill -f runserver
# kill frontend servers if you are deploying frontend
# sudo pkill -f tailwind
# sudo pkill -f node
cd /home/ubuntu/django-aws_cicd/
# activate virtual environment
python3 -m venv venv
source venv/bin/activate
install requirements.txt
pip install -r /home/ubuntu/django-aws_cicd/requirements.txt
# run server
screen -d -m python3 manage.py runserver 0:8000
AWS CI-CD 설정을 시작하기 전에 django 파일 내부에서 로컬로 수행된 모든 변경 사항이 github에 푸시되는지 확인해야 합니다.
AWS CI-CD 구성:
Let's get started configuring AWS for CI-CD pipeline, for this we are going to be using 3 services mainly IAM roles, CodeDeploy & CodePipeline.
4. AWS에서 역할 생성
We want to create 2 IAM roles:
AmazonEC2RoleforAWSCodeDeploy provides EC2 access to S3 bucket to download revision:
Step 1:2 단계:
3단계:
4단계:
태그를 확장하고 사용자를 대신하여 Auto Scaling과 상호 작용할 수 있는 CodeDeploy 서비스 액세스를 위한 AWSCodeDeployRole.
1 단계:
2 단계:
3단계:
4단계:
5단계:
6단계:
5. AWS CI-CD용 EC2 인스턴스 시작
When launching a new EC2 instance ensure to add AmazonEC2RoleforAWSCodeDeploy
IAM role that we created.
#!/usr/bin/env bash
sudo apt-get -y update
sudo apt-get -y install ruby
sudo apt-get -y install wget
cd /home/ubuntu
wget https://aws-codedeploy-us-east-1.s3.amazonaws.com/latest/install
sudo chmod +x ./install
sudo ./install auto
인스턴스를 생성할 때 제공하지 않은 경우 인스턴스에 이름을 제공해야 합니다. 다음 단계에서 CodeDeploy 배포 그룹을 생성할 때 인스턴스 이름이 필요합니다.
포트 8000을 허용하도록 EC2에 연결된 보안 그룹을 구성합니다.
인스턴스를 시작한 후 상태 확인이 완료될 때까지 몇 분 동안 기다립니다.
6. AWS 코드 배포 구성
For creating CodeDeploy we first need to create application and then create deployment group, steps below:
Step 1: Search for CodeDeploy service in AWS
Step 2: On the left navigation panel open Deploy -> Select Applications and then click on Create application
Step 3: Provide any application name of your choice, for Compute Platform choose EC2/On-premises from the drop down and then click on Create application
Step 4: Will be redirected inside application that we just created, now click on Create deployment group
Step 5: Enter a deployment group name of your choice and then choose the service role that we created for CodeDeploy, in this tutorial we named it CodeDeployRole
Step 6: Environment configuration choose Amazon EC2 instances and then add the ec2 instance we created, for Key choose Name and for Value choose in this tutorial we named the instance aws-cicd.
Step 7: Uncheck the Enable load balancing and then click on Create deployment group.
7. AWS 코드 파이프라인 구성
CodePipeline brings everything together to build the final CI-CD
Initial Step: On left navigation panel open Pipeline then click on Pipelines and finally click on Create Pipeline1단계: 선택한 파이프라인 이름을 입력하면 역할 이름이 자동으로 생성됩니다. 이제 다음을 클릭하십시오.
2단계: 드롭다운에서 GitHub(버전 2)를 선택하고 GitHub에 연결을 클릭합니다. 성공적으로 연결되면 리포지토리 이름, 분기 이름을 선택한 후 다음을 클릭합니다.
3단계:
빌드는 이 튜토리얼의 범위를 벗어납니다. 빌드 단계 건너뛰기를 클릭하십시오.
4단계: 공급자 배포 드롭다운에서 AWS CodeDeploy를 선택하고 6단계에서 생성한 애플리케이션 이름과 배포 그룹을 선택한 후 다음을 클릭합니다.
5단계: 페이지를 검토하고 페이지 하단으로 스크롤한 다음 파이프라인 생성을 클릭합니다.
AWS에서 CI-CD 파이프라인 설정 및 생성을 완료했습니다. 배포 섹션 또는 왼쪽 패널 배포에서 세부 정보를 클릭하여 진행 상황을 확인한 다음 아래로 스크롤하고 이벤트 보기를 클릭하여 배포 상태를 볼 수 있습니다.
애플리케이션 실행:
EC2 인스턴스로 이동하여 퍼블릭 IPv4 DNS를 복사합니다.
다음 URL을 사용하여 탐색:
http://<Public IPv4 DNS>:8000
이 django 앱이 실행되는 것을 볼 수 있습니다...
Reference
이 문제에 관하여(Django 프로젝트를 위한 AWS DevOps: 간단한 단계로 AWS CodeCommit 및 GitHub를 사용하여 CI-CD 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ionvin/aws-devops-for-your-django-project-automate-ci-cd-with-aws-codecommit-github-in-simple-steps-3me텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)