AWS로 워드프레스 구축하기(2) 웹서버, DB 구축하기

2024. 9. 4. 12:34카테고리 없음

2. AWS로 워드프레스 구축하기(2) 웹서버, DB 구축하기

네트환경을 설정하였으니 이젠 웹서비스를 배포할 서버를 구축해봅시다!

  1. 웹서버 구축

1) 우선 웹서버 설정은 아래와 같이 진행할 겁니다

  • 중요한점은 기존 default 리눅스 ami 버전인 amazon linux 3 이 아닌 2로 진행할 겁니다.
  • 왜냐하면 이후 워드프레스 배포할 때 php 8.x 버전하고 계속 충돌이 일어납니다.

※ 워드프레스가 php 8.x 버전을 사용할 때, mysqli(php 모듈)을 찾을 수 없다는 오류가 계속 발생합니다. 관련 설정을 바꾸어도 자체적으로 모듈 경로를 아예 못찾더라고요. 하지만, aws linux 3 는 php 8.x만 지원합니다. 그래서 php7.x버전을 지원하는 aws linux 2를 사용해서 진행하셔야 워드프레스가 정상적으로 돌아갑니다.

  • 키페어 설정합니다. 웹서버로 원격제어를 통해 들어가서 각종 파일을 설치할거에요.

  • 구성도를 보면 이렇게 구성할 겁니다. 외부에서 HTTP request를 ELB의 리스너를 통해서 받아서 처리할 겁니다. 그리고 해당 로드밸런서는 웹서버에 트래픽을 분배해서 처리할 겁니다. 그리고 관리자는 Bastion-Host(NAT Instance)를 통해 접근하여 서버 설정을 해줄 겁니다.
  • Web_server 보안 그룹 설정은 아래와 같습니다.

  • 우선 웹서버이기 때문에 외부에서 접근하는 모든 http request(80번 포트)는 오픈할겁니다.
  • 그리고 웹서버 작업을 위해 바스티온 호스트로 접근해오는 ssh 접근도 오픈할 겁니다.

2. 워드프레스 배포를 위한 설정 작업

1) 원격제어 설정 (putty)

  • 원격제어는 bastion host에 할당된 공인 ip를 통해 들어갈겁니다. ssh 인증에 필요한 ppk는 이전에 생성한 키페어로 진행할 겁니다.

  • 위와 같이 putty 를 설정하여 들어갑니다.
  • .ppk는 이전에 키페어 생성하면서 만든 .pem key를 putty key generator를 통해 만들 수 있습니다.

Windows Putty 환경에서 AWS EC2 ssh 접속 :: 데브웁스 (devoops.kr)

  • 위와 같이 원격으로 bastion host에 들어가면 id를 입력해야 됩니다. 우선, 기본 aws id는 ec2-user입니다.

  • 이렇게 잘들어가면 OK입니다.
  • 자 그럼 지금은 bastion host에 들어간거에요. 아직 웹서버에 들어간 건 아니에요. 저희는 웹서버로 들어가서 작업을 해야하는 겁니다.
  • Bastion Host에 원격제어를 위한 키를 옮기고, 그 원격제어키를 가지고 직접 ssh 명령어를 웹서버 ip로 입력하여 원격제어를 진행할 겁니다.                  
  1. 웹서버 원격제어 들어가기
  • 파일질라 설치
    • 갑자기 왠 파일질라? 왜냐하면 웹서버에 ssh 들어가기 위해서는 원격제어를 위한 키가 필요합니다. 따라서 파일질라를 활용하여 해당서버에 키를 넣을겁니다.
  • 파일질라 클라이언트를 설치하고 실행합니다. 그리고 파일탭에 사이트 관리자 들어가시면 해당 창이 뜹니다.

  • 새 사이트를 누르시고 호스트에 들어갈 항목은 nat-instance(bastion host)의 IPv4 DNS를 넣으시면 됩니다.(포트는 비워두세요)
  • ipv4 dns 정보는 EC2 -> Nat instance 정보에서 볼 수 있어요.

  • 이렇게 설정해서 연결하면…!

  • 잘 됩니다. 자 그럼 본인이 편한 디렉토리에 인증키파일을 옮기시면 됩니다.

*사용자가 ec2-user이기 때문에, 권한문제가 발생할 수 있기 때문에, ec2-user home에 넣는 걸 추천드립니다.

  • 그리고 본인 디렉토리에 제대로 되었는지 확인하세요! (해당 디렉토리에서 ls -al)
  • 자 그럼 웹서버로 원격제어 들어갈 겁니다.
  • 우선 바스티온 호스트에서 해당 명령어를 수행합니다.

sudo -i // 관리자 권한 변경

ssh -i [옮긴키이름].pem ec2-user@웹서버ip

  • 이렇게 해서 웹서버로 원격제어가 들어가질 겁니다.

4. RDS

1) RDS 생성

  •  워드프레스가 저장될 데이터베이스를 생성할 겁니다. RDS가 위치할 서브넷그룹을 생성할 겁니다.
  • 이전과 서브넷을 생성했던 같은 방법으로
    • wp-db-1(서브넷이름)/10.0.4.0/16(ip대역)/ap-northeast-2a(가용지역)
    • wp-db-2/ 10.0.5.0/16 / ap-northeast-2c
  • 이렇게 두 서브넷 영역을 생성할 겁니다. 
  • 그리고 RDS 서비스에 들어가서 아래와 같이 RDS를 생성할 겁니다.

  • 보안그룹의 경우,

  • Bastion-host, web서버 보안그룹을 통해 3306(mysql포트)가 통하도록 설정하면 됩니다.

2) 웹서버에 mysql , wordpress, apache 설치

  • putty로 다시 웹서버 접속 후 명령어 실행

yum update -y

yum install mysql

mysql -u admin -p wordpress(db이름) -h 엔드포인트

  • 엔드포인트는 RDS 정보에서 볼 수 있다.
  • 이후 mysql이 실행이 되면 show databases; 명령어 실행하여 wordpress db가 있는지 확인한다.

  • 다음 명령을 추가적으로 실행한다.

CREATE USER adminuser@’%’ IDENTIFIED BY ‘qwer1234’;  //사용자 생성

GRANT ALL PRIVILEGES ON wordpress.* TO adminuser@’%’;  // 게시판 사용 권한 부여

FLUSH PRIVILEGES; //권한 적용

2) 아파치 설치

yum -y install httpd //아파치 설치

service httpd start //아파치데몬 실행

systemctl enable httpd.service

systemctl status httpd // 상태확인, acitve여야 함

3) 워드프레스 설치

Amazon-linux-extras install php72 // php 8.x 는 잘안되므로 php7.x

wget https://wordpress.org/latest.tar.gz // 워드프레스 최신버전 다운

tar -xvzf latest.tar.gz -C /var/www/html // tar 압축 해제 후 html폴더로 이동

rm -f latest.tar.gz // 사용 파일 삭제

chown -R apache:apache /var/www/html/wordpress // wordpress 파일 소유자 변경

cd /var/www/html/wordpress/ //워드프레스 디렉토리로 이

cp wp-config-sample.php wp-config.php /워드프레스 설정파일 백업

vi wp-config.php // 파일 수정

  • 워드프레스 설정파일을 이렇게 고쳐야함 , 중간 호스트네임은 db 엔드포인트로 설정

  • Httpd.conf 파일을 바꾼다 .

vi /etc/httpd/conf/httpd.conf

그리고 systemctl restart http를 실행하여 아파치를 재시작한다.

이제 기본적인 웹 설정은 완료되었습니다!! 이젠 해당 웹서버로 접근하기 위한 Auto Scaling, https 등을 구현할 겁니다!