웹사이트를 자동 배포할 수 있도록 github에서 관리

7367 단어 CircleCIAWS

개요



n번 달의 기사입니다만, 자신용으로 정리합니다.

S3 버킷을 모든 웹에서 공개할 수 있습니다. 하지만 게시할 수 있는 내용은 정적 콘텐츠에 한합니다. 자체 도메인도 Route 53을 사용하여 사용할 수 있습니다 (이번에는 이름 .com에서 이름 서버를 변경). Linux 등에서 웹 서버를 세우는 경우와 같이 ssh 로그인이나 서버 운용을 할 필요는 없습니다 (← 매우 편하다!). 또한 CloudFront를 캐시 서버로 함께 사용하면 서버 부하를 줄이고 네트워크 대기 시간을 줄일 수 있습니다.



작업 흐름



Github의 master branch에 있는 코드가 (push나 merge에서) 변경될 때마다 S3의 버킷에 자동으로 deploy됩니다. 업로드된 콘텐츠는 ClowdFront에 의해 전세계의 다양한 서버에 저장됩니다. 자신의 도메인에 액세스하면 업데이트된 웹사이트를 탐색할 수 있습니다.

준비하는 것


  • 게시할 웹 콘텐츠
  • 고유 도메인(이름.com)
  • Github
  • CircleCI
  • AWS 계정

  • 웹 컨텐츠의 변경을 git로 관리할 수 있는, 복수인으로 운용할 수 있는, nginx등의 웹 서버의 불편등의 요인을 생각할 필요가 없는 등, 매우 편하고, 수동으로 관리하는 부분을 최대한 줄어들고 있으므로, 한번 구축해 버리면, 보수가 편하다.

    0. IAM 설정



    CircleCI가 S3에 액세스하기 위한 사용자를 생성합니다.
    IAM에서 AmazonS3FullAccess를 연결합니다.Access key IDSecret access key를 기록해 둡니다(CircleCI 설정에 필요함).

    S3 설정


  • bucket 생성
  • 액세스 권한 버킷 정책 설정

  • s3
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "forPublicReadGetObject",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::[backet名]/*"
            },
            {
                "Sid": "forCircleCi",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::[AWSのユーザーID]:user/[IAMで設定したユーザー名]"
                },
                "Action": [
                    "s3:PutObject",
                    "s3:ListBucket",
                    "s3:DeleteObject"
                ],
                "Resource": [
                    "arn:aws:s3:::[バケット名]",
                    "arn:aws:s3:::[バケット名]/*"
                ]
            }
        ]
    }
    

    CircleCI 설정



  • Github와의 협력
    h tps : // / rc ぇ시. 코m/

  • 조직 계정의 리포지토리가 대상인 경우 다음 기사을 참조하십시오.
  • config.yml 파일 생성

  • .circleci/config.yml
    version: 2.1
    orbs:
      aws-s3: circleci/[email protected]
    jobs:
      build:
        docker:
          - image: 'circleci/python:2.7'
        steps:
          - checkout
          - aws-s3/sync:
              from: .
              to: 's3://${AWS_S3_BUCKET_NAME}'
              aws-access-key-id: AWS_ACCESS_KEY_ID
              aws-secret-access-key: AWS_SECRET_ACCESS_KEY
              aws-region: AWS_REGION
              arguments: |
                --acl public-read \
                --cache-control "max-age=86400"
              overwrite: true
    

  • Environment Variables(환경 변수) 정의
  • AWS_S3_BUCKET_NAME
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION


  • 의 설정을 한다.

    여기까지, 일단 S3에 업로드하는 곳까지는 잘 작동합니다.

    이름 .com에서 route 53으로 네임 서버 변경


  • route 53 측 설정
  • 이름 .com 쪽 설정

  • 고유 도메인에 인증서 발급



    Certificate Manager에서 Route 53에 등록한 고유 도메인에 대한 인증서 발급

    CloudFront 설정


  • S3에서 호스팅 한 웹 사이트의 배포를 게시합니다.
  • http → https로 리디렉션 설정
  • Route 53에서 자체 도메인을 활성화합니다.
  • 좋은 웹페이지 즐겨찾기