AWS- 9

박형준·2024년 4월 19일

*VPC

  • AWS내에 생성되는 독립적인 공간의 네트워크
  • VPC에는 서브넷(퍼블릭, 프라이빗), 라우팅테이블, NAT게이트웨이, 인터넷 게이트웨이, 보안그룹, ACL 생성, 제어
    • 퍼블릭 서브넷 : 외부와 통신이 자유로움. 공공 네트워크
    • 프라이빗 서브넷 : 외부로의 통신이 제약, 내부에서만 사용가능, NAT통해서 외부로 나갈수 있음.(내부에서 외부로 통신, 단방향 통신)

피어링 연결 : 여러개의 가상 사설 클라우드(VPC) 간에 프라이빗한 네트워크 통신을 설정


*CloudFormation

*스택생성 / 이름 지정 / URL 입력, 키 정하고 , 승인~ 에 체크

생성 후 EC2 접속 , Ping Test

스택 생성

  • url 입력 후 스택 생성
  • 승인 체크
  • 스택 생성 확인
  • 생성된 인스턴스 ssh 접속 확인(ALLIn-one)
  • 생성된 인스턴스 ssh 접속 확인(WebSrv)

PHP 접속

*AllinOne-EC2 3.35.133.109
-httpd 설치 , 동작 확인, 상시사용 설정, curl http://IP 확인

ALLin-one에서 httpd 설치 후 동작 확인

  • 접속 확인

-php 설치 후 웹사이트 접속

  • php 설치
    • #amazon-linux-extras install php8.2 -y
    • yum install -y php-xml php-mbstring ImageMagick ImageMagick-devel php-pear php-devel
    • printf “\n” | pecl install imagick
  • echo “extension = imagick.so” > /etc/php.d/40-imagick.ini

아마존에서 제공하는 php 다운로드

  • amazon-linux-extras install php8.2 -y
    • yum install -y php-xml php-mbstring ImageMagick ImageMagick-devel php-pear php-devel
    • printf "\n" | pecl install imagick

imagick PHP 확장을 활성화

  • imagick PHP 확장을 활성화 (echo "extension=imagick.so" > /etc/php.d/40.imagick.ini)
  • 웹 서버의 DocumentRoot 디렉토리에 info.php 파일을 생성하고, 해당 파일 내에 PHP의 phpinfo 함수를 이용하여 PHP 구성 정보를 출력하는 코드를 작성
  • php 사이트 호출 확인 (curl http://43.203.218.134/info.php)
  • httpd 재시작 후 사이트 확인

wordpress 접속

-마리아 DB 설치 후 접속 확인

  • 마리아 DB 관련 설치 후 설정
    • #amazon-linux-extras install mariadb10.5 -y ⇒ start enable
    • #systemctl start mariadb && systemctl enable mariadb && systemctl status mariadb
    • #echo -e "\n n\n n\n Y\n n\n Y\n Y\n" | /usr/bin/mysql_secure_installation

마리아 DB 설치

  • 마리아DB 설치 ( amazon-linux-extras install mariadb10.5 -y )
  • 시스템 시작과 영구 동작 후 정보 확인
  • MySQL을 보안 설정하는 동안 대화형으로 진행되는 프롬프트에 자동으로 응답
  • 마리아 DB 비밀번호와 권한 설정
    • [root@AllInOne html]# mysql -e "set password = password('test1234');"
    • [root@AllInOne html]# mysql -e "grant all privileges on . to 'root'@'%' identified by 'test1234';"
  • 데이터 베이스 생성
    • [root@AllInOne html]# mysql -e "create database wordpressdb"
    • [root@AllInOne html]# mysql -e "show databases;"

마리아 DB 설치 후 database 생성

  • 마리아 DB 설치 후 패스워드 설정과 권한 부여 후에 데이터 베이스 생성
    • [root@AllInOne html]# mysql -e "set password = password('test1234');"
    • [root@AllInOne html]# mysql -e "grant all privileges on . to 'root'@'%' identified by 'test1234';"
    • [root@AllInOne html]# mysql -e "create database wordpressdb"
  • 데이터 베이스 생성

-wordpress 다운 받은 후 파일 수정

  • 마리아 DB 재시작 및 wordpress 다운로드
  • 압축 해제 및 사용할 파일 복사
    • 파일명.zip ⇒ unzip 파일명
    • #cp wp-config-sample.php wp-config.php
  • 사용할 폴더(wp-config.php) 내용 수정 (마리아 DB에서 설정한 값으로)
    • #sed -i "s/database_name_here/wordpressdb/g" wordpress/wp-config.php
    • #sed -i "s/username_here/root/g" wordpress/wp-config.php
    • #sed -i "s/username_here/test1234/g" wordpress/wp-config.php
  • sed: "스트림 편집기(stream editor)"의 약자로, 리눅스 및 유닉스 기반 시스템에서 텍스트 스트림을 처리하고 수정하는 데 사용
    • sed 명령어는 "-i" 옵션을 사용하여 파일을 직접 수정하고, "s/원래문자열/바꿀문자열/g"의 형태로 사용

wordpress 다운로드

  • 워드 프레스 다운로드
  • 다운로드 확인
  • unzip 명령어로 압축 해제
  • 압축 해제 확인
  • 압축 해제 확인 후 사용할 wp-config-sample.php을 wp-config.php로 복사하기
  • wp-config.php 파일의 database_name_here과 username_here, password_here 수정
    • #sed -i "s/database_name_here/wordpressdb/g" wordpress/wp-config.php
      #sed -i "s/username_here/root/g" wordpress/wp-config.php
      #sed -i "s/password_here/test1234/g" wordpress/wp-config.php
  • 수정 후 퍼블릭 ip로 접속

*워드프레스 이중화

  • 로드 밸런서를 통한 이중화, 데이터베이스 복제, 콘텐츠 배포 네트워크(CDN) 사용, 자동화된 백업 및 복원 시스템

*스택생성

https://cloudneta-aws-book.s3.ap-northeast-2.amazonaws.com/chapter11/wplabs-ha2.yaml

스택 생성

  • url 입력
  • 이름 지정 및 키 지정
  • ssh 접속

-생성된 EFS 파일 시스템 ID : fs-09b87fe99107be684

-RDS 변수 지정
#RDS=$(aws rds describe-db-instances --region ap-northeast-2 --query 'DBInstances[*].Endpoint.Address' --output text)
#echo $RDS

클라우드 배포 확인

  • 활성화 확인

EC2 에서

  • /var/www/에서 파일 확인 (wordpress)

EFS 에서 파일 시스템 ID 복사 ( fs-0e44b54cca77b570c )

RDS에서 endpoint 복사 ( wpdb.clqu6gao8ooj.ap-northeast-2.rds.amazonaws.com )후

  • RDS 변수 설정 후 확인

  • 데이터 베이스 생성(RDS)
    #sed -i "s/localhost/$RDS/g" /var/www/wordpress/wp-config.php
    #mysql -h $RDS -uroot -pqwe12345 -e 'create database wordpressdb;'
    #mysql -h $RDS -uroot -pqwe12345 -e 'show databases;'

"localhost"를 "$RDS"로 대체하여 /var/www/wordpress/wp-config.php 파일을 수정하는 명령어

  • sed -i "s/localhost/$RDS/g" /var/www/wordpress/wp-config.php

데이터 베이스 생성

  • wordpress 데이터 베이스 생성하고 확인

-링크 클릭 접속 / 기본설정 / 접속 글 하나 작성

생성한 워드 프레스 접속

  • 스택 -> 출력에서 url을 통해 접속
  • 정보 입력
  • 로그인
  • 워드 프레스 접속 확인

워드 프레스 글 작성

  • 워드 프레스 글 작성

-인스턴스 생성할 때 고급 세부 정보에 아래 코드 입력

EC2로 이동

  • 로드 밸런서와 대상 그룹 확인
  • 대상 그룹 등록 취소 후

시작 템플릿 생성

  • 이름 지정 및 설명 입력
  • OS와 인스턴스 사용하던 프리티어 선택
  • 키 페어 지정
  • 스택에서 만들어진 보안 그룹 선택( 서브넷은 자동 선택 )
  • 스택에서 만들어진 역할 선택
  • 고급 세부 정보에 복사한 파일 시스템 ID와 코드 입력

auto-scaling 생성

  • 이름 지정 후 생성했던 템플릿 선택
  • VPC 지정 후 가용 영역 선택 ( 숫자 낮은 걸로 )
  • 기존 로드 밸런서에 연결 선택 후 스택으로 생성한 대상 그룹 선택
  • 추가 설정 ( 모니터링, 인스턴스 워밍업 활성화 설정 )
  • 그룹 크기 지정
  • 축소 보호 활성화 체크 ( 인스턴스 종료 방지 )
  • 태그 입력
  • 대상 그룹에서 자동으로 생성된 인스턴스 확인
  • 오토 스케일링으로 생성된 인스턴스를 접속해서 데이터 베이스(RDS) 확인, 기존에 인스턴스에서 생성했던 데이터 베이스가 남아있음( 기존 인스턴스를 삭제해도 보존 )

0개의 댓글