본문으로 바로가기

AWS EC2로 WordPress 만들기

category Linux/AWS 2022. 1. 27. 17:59

회사 블로그를 AWS로 옮기게 되어서 공부하면서 정리하게 되었습니다.

 

RDS MySQL 생성

1. RDS 페이지 접속

RDS 검색 혹은 서비스에서 RDS를 찾아서 클릭해주세요. (저는 검색이 더 찾기 쉬웠습니다.)

검색
서비스에서 찾기

2. 데이터베이스 생성

 

3. 데이터베이스 선택

현재 WordPress 배포판은 MySQL 및 MariaDB 데이터베이스 엔진만 지원합니다.

PorstgreSQL도 사용 가능하지만 PostgreSQL For WordPress라는 플러그인이 필요합니다.

원래 운영하던 블로그는 MySQL을 사용하고 있지만 MariaDB와 크게 다른게 없는 것으로 알고 있어서

테스트용으로 구축해보는 것이기에 MariaDB로 선택하였습니다.

 

템플릿은 테스트용이기에 프리티어를 선택하였습니다.

따로 불편함이나 에러 사항이 없다면 실제 옮기때에도 사용할 생각입니다.

 

데이터베이스 인스턴스 식별자와 마스터 사용자 아이디, 암호를 설정해줍니다.

 

그 이외에는 기본설정으로 하였고, 추가 구성을 펼쳐서 초기 데이터베이스 이름을 설정해주고

데이터베이스 생성을 클릭하여 데이터베이스를 생성해주었습니다.

 

그 후 생성한 데이터베이스의 상태가 사용가능인지 확인 하시면 됩니다.

사용가능 상태로 변경까지 저는 약 22분이 걸렸지만, 기다리지 않고 바로 EC2 인스턴스를 만들러 가도 됩니다.

(시간은 새로고침을 안하니까 상태가 변경이 바로 안되서 정확하지 않을 수 있습니다.)

생성 중
약 2분 정도 소요 후 백업 중
약  20분정도 소요 후 사용 가능

 

EC2 인스턴스 생성

1. EC2 페이지 접속

EC2 검색
서비스에서 찾기

2. EC2 인스턴스 생성

저는 테스트용으로 만들었던게 있어서 종료됨(삭제)가 하나 있습니다.

 

EC2 인스턴스 AMI 선택

저는 프리티어를 사용할 것이므로 프리 티어만을 체크하고 Ubuntu Server 20.04 LTS를 선택하였습니다.

 

EC2 인스턴스 유형 선택

인스턴스의 경우 워드프레스는 크게 높은 성능을 필요로 하지 않기때문에 T2 프리티어로 선택하였습니다.

그 후 검토 및 시작을 눌렀습니다.

 

EC2 인스턴스 보안 그룹

다음을 눌러서 설정하면서 진행 할 수도 있지만, 검토 화면에서도 편집이 가능합니다.

SSH는 일단 내 IP로 설정하였고, HTTP 80포트를 열어주어 접속 가능하도록 변경했습니다.

그 후 검토 및 시작을 다시 누르고, 시작하기를 클릭하여 생성합니다.

키 페어 다운로드를 하면 아마존에 키 페어의 정보를 저장하고 pem 파일을 다운로드 받게 됩니다.

생성 확인

 

EC2와 RDS 연동

현재 EC2 인스턴스와 RDS는 서로 같은 VPC안에 서로 다른 subnet에 존재하고 있습니다.

RDS의 경우 Public Access가 '아니오'로 설정되어 있기 때문에 외부에서 접근할 수 없는 상황입니다.

그래서 RDS로 접근하기 위해서는 Public Access를 허용하거나 보안 그룹을 설정해야 합니다.

이 글에서는 보안그룹을 설정해서 EC2 인스턴스에세만 RDS를 ACCESS할 수 있도록 연동하는 작업을 하려고 합니다.

 

1. 보안 그룹 설정

생성된 RDS를 클릭해서 연결&보안 탭에 있는 VPC 보안 그룹을 클릭합니다.

 

하단에 인바운드 규칙탭에 있는 인바운드 규칙 편집 클릭

보안 그룹 설정

default
변경 후

MariaDB도 MYSQL/Aurora로 설정한다고 합니다. MySQL도 동일합니다.

 

2. SSH로 EC2 인스턴스 접속

생성한 EC2 인스턴스를 클릭 후 연결을 클릭합니다.

SSH 클라이언트 탭에 있는 '예:'에 있는 코드를 복사하여 터미널에 입력합니다.

하지만 현재는 키페어에 권한이 없기 때문에 접속할 수 없습니다.

그래서 접속하기 전에 키페어 권한을 부여해야 합니다.

 

저는 맥북환경이기 떄문에 터미널에서 바로 가능하지만, 윈도우를 사용하고 있으시다면 Putty 또는 인스턴스 연결에 있는 EC2 인스턴스 연결 탭에서 연결하시면 됩니다.  매니지먼트 컨설턴트로 접속하는 것이기 때문에 EC2 인스턴스 보안그룹에서 SSH 포트의 소스를 어디에서든 접속할 수 있게 변경하셔야 합니다.

 

저는 다운로드 폴더에 있기 떄문에 다음과 같이 진행하여 읽기 권한(400)을 주었습니다.

cd Downloads
chmod 400 키페어이름.pem

우분투 접속시 터미널 창

3.  EC2 인스턴스에서 RDS 접속

레파지토리에서 업데이트 패키지가 있는지 체크하고 설치된 패키지를 업데이트 해주었습니다.

sudo apt update && sudo apt-get -y upgrade

 

그 후 마리아DB를 설치하였습니다.

sudo apt install mariadb-server mariadb-client -y 

 

 

버전 확인 및 설치 확인을 해줍니다.

mysql --version

 

마리아DB를 실행해줍니다.

sudo systemctl start mariadb

그리고 상태를 확인해 줍니다. ( Active running 확인! )

sudo systemctl status mariadb

 

 

설치가 완료되었다면 RDS 연결&보안탭에 있는 엔트포인트를 복사해줍니다.

 

그 후 아래와 같이 입력합니다.

export MYSQL_HOST=엔드포인트

데이터베이스 접속

mysql --user=마스터사용자이름 --password=마스터사용자비밀번호 초기데이터베이스명
or
mysql -u 마스터사용자이름 -p 초기데이터베이스명

DB에 접속한 화면

사용자 생성

CREATE USER 명령어를 사용해 마스터 사용자가 아닌 별도의 사용자를 만든다.

CREATE USER "user" IDENTIFIED BY "password";

 

wordpress 데이터베이스 모든 테이블에서 SELECT, INSERT, UPDATE, DELETE를 할 수 있는 권한을 부여합니다.

GRANT ALL PRIVILEGES ON wordpress.* TO "user";

 

마지막으로 FLUSH 명령어로 권한을 적용하고 sql을 빠져나옵니다.

FLUSH PRIVILEGES;

Exit

 

Apache 웹 서버 설치

아파치 설치

sudo apt-get install -y apache2

아파치 버전확인 및 설치 확인

apache2 -v

아파치 실행

sudo service apache2 restart

 

서버 구동중 확인 ( Active running 확인! )

sudo systemctl status apache2

 

테스트 아파치 페이지 확인(접속이 안될 시 http://퍼블릭 IPv4 주소 로 접속)

Apache default page

 

EC2에서 WordPress 구성

만약 저처럼 블로그를 옮기는 거라면 아래의 다운로드에서 php 다운로드만 하시고 아래 글을 확인해보세요!

2022.02.07 - [AWS] - WordPress 블로그 AWS로 이전하기 (Duplicator 사용)

 

WordPress 블로그 AWS로 이전하기 (Duplicator 사용)

현재 호스팅업체에서 사용 중인 블로그를 통으로 AWS로 옮기게 되면서 통으로 백업하는 방법을 찾다가보니 Duplicator라는 플러그인을 알게 되었습니다. 플러그인 - 새로 추가 - Duplicator 검색 후 설

19-97.tistory.com

 

WordPress 다운로드

wget 명령어는 http나 ftp 통신을 사용해서 서버에서 파일이나 콘텐츠를 다운로드할 때 사용하는 리눅스 명령어 입니다.

하지만 영상에서 다운 받으라해서.. 혹시 몰라서 다운 받았고

unzip은 압출파일을 해제하기 위해 다운받았습니다.

sudo apt install wget unzip -y

 

워드프레스를 다운받아줍니다.

sudo wget https://ko.wordpress.org/latest-ko_KR.zip

 

파일 다운로드 확인

ls

 

그 후 압축을 해제해 줍니다.

sudo unzip latest-ko_KR.zip

 

워드 프레스 확인

ls -al

cd wordpress/

ls -al

 

config-file 수정

// 복사
cp wp-config-sample.php wp-config.php

// 수정
nano wp-config.php

DB_NAME = 데이터베이스 네임

DB_USER = 데이터베이스 사용자 이름

DB_PASSWORD = 데이터베이스 사용자 비밀번호

DB_HOST = RDS 엔드포인트

 

보안 설정

다음을 wp-config.php 에 넣습니다.

https://api.wordpress.org/secret-key/1.1/salt

define('AUTH_KEY',         'bV/_|h{8H|SIM$Os+mO?Mu!-2nhGnOgq=1L);#|bYY6PnIoA9pxBT(+Ped]W9f{C');
define('SECURE_AUTH_KEY',  '7?YW0M1+045vagAr(/cw`G^(_lp|L1/8UbL=DA)x=FHr30>,i~5zcY=+&mb&CgY_');
define('LOGGED_IN_KEY',    '.pJ^n<Qb$n-8&UkLPtvPRVa.UUx6i LsC3bYP+MX;J|)8$uwH:/=k:DC$Y=a0af`');
define('NONCE_KEY',        'q~s}+Qs<tergaR8fx,CTpz/.z)/+iZMr+(BEK8X%R_^C_-?{-jLncaH`?tr=Vwu+');
define('AUTH_SALT',        '^KUNsQRdvY!%cp:Zo~1s6$x+4[o%|NMtT%8,9|UR>&A#pnh=I&u*f^eWBpTyeF3 ');
define('SECURE_AUTH_SALT', 'x6r3M?|P/-&llTuYT0SY;Nk$wjZA;9`>15]kZ&;jlI}i|N($BHb??q^}eA+[+5m8');
define('LOGGED_IN_SALT',   'k-Oi77K,[C$CW}06!wC}AU@V&v! UPDp%YR q-Wsv--3k#pho`6Fu|d@FTkw~T>[');
define('NONCE_SALT',       '/Q)bw!%$.{jEXhCViX=;m^+N+`MXoP#r+0=j&$G)E3G!y/vF4QB~Hs)/;KOeSavb');

Ctrl + x 를 눌러 저장하고 나가시면 됩니다.

또한 주기적으로 키값을 변경하시면 더욱 안전하게 사용하실 수 있다고 생각합니다.

 

종속성 설치 및 WordPress 시작

lamp(Linux Apache MySQL PHP/Perl/Python)서버 설치 ( 어디는 설치하고, 어디는 설치 안하길래 설치 안했습니다. )

sudo apt-get install lamp-server^

php 설치

sudo apt install php php-mysql php-gd php-cli php-common -y

 

wordpress 파일 복사해서 apache에 넣기 (경로는 다 다를 수 있습니다. 저는 wordpress 폴더를 tmp에 넣었기에 저기로 이동하였습니다.)

cd /tmp

sudo cp -r wordpress/* /var/www/html/

아파치를 재시작해줍니다.

sudo service apache2 restart

 

저는 php를 바로 인식하지 못해서 따로 설정을 해주었습니다.

더보기

아파치 디렉토리 설정 파일을 열어줍니다.

sudo vi /etc/apache2/mods-enabled/dir.conf

index.php를 처음으로 변경 후 저장 (esc 후 :wq)

 

아파치 재시작

 sudo service apache2 restart

 

혹은

index.html 삭제

sudo rm -rf index.html

 

 

 

참고한 곳

1. 유튜브 DevelopersIO KOREA #4 AWS EC2 인스턴스에 블로그 플랫폼 구축

  - Amazon Linux + RDS(MySQL)

2. 유튜브 AWS EC2 Ubuntu 서버 인스턴스에서 Wordpress를 설치 및 구성하는 방법

  - Ubuntu + MariaDB(우분투 로컬 서버에 직접 설치)

 

 

반응형