본문 바로가기

개발/Wordpress

워드프레스 + AWS = 무료로 홈페이지 만들기

유명한 CMS : Content Management System인 워드프레스와 아마존의 클라우드 컴퓨팅 서비스인 AWS를 이용해서 무료로 나만의 홈페이지를 만드는 방법을 정리하고자 합니다.

 

워드프레스 (Wordpress)

네이버나 티스토리 블로그를 이용해서도 멋진 블로그를 만들 수 있지만 이러한 블로그들은 나만의 주소를 가질 수 없다는 것과, 말 그대로 블로그라서 내가 원하는 기능을 마음대로 추가하기가 힘듭니다. 단순히 글만 쓸 수 있죠. 하지만 예를들어 블로그가 아닌 쇼핑몰을 만들고 싶다면? 나만의 이쁜 홈페이지를 만들고 싶다면?

워드프레스를 사용하면 어떤 것이든지 쉽게 만들 수 있어요. 써놓고 다시보니까 광고 글 같네요. 그런데 사실, 물론 블로그에 단순히 글을 쓰는 것 보다는 배워야 할 것이 많아요. 하지만 일단 따라하다 보면 크게 어렵지 않습니다. 그리고 무엇보다, 공짜에요.

먼저 워드프레스가 무엇인지 모르는 분들이 있어서 소개하고자 합니다. 다음은 제가 만든 워드프레스 사이트입니다. 이와 같은 디자인 및 기능은 블로그로는 할 수 없습니다. 그리고 처음부터 웹 개발자가 이런 사이트를 개발하려면 몇 달이 걸릴 수도 있습니다. 하지만 워드프레스를 사용하면 배워서 만들기까지 넉넉잡아 일주일이면 충분합니다.

워드프레스 사이트 - https://sellers.coupang.com/

워드프레스는 관리자 화면도 당연히 제공합니다. 관리자 화면에서 특정 카테고리에 글을 쓰면, 지정한 테마 레이아웃에 맞춰 이쁘게 글을 나열해줍니다. 테마는 https://themeforest.net/ 에서 찾아볼 수 있으며, 무료 테마도 많습니다. 요즘 테마는 반응형 웹을 지원하기 때문에 모바일에서도 작성한 글을 이쁘게 볼 수 있습니다. 

워드프레스 관리자 페이지 - 새 글 추가 화면

워드프레스는 유명한 CMS인 만큼, 다양한 플러그인을 제공합니다. 거의 필요한 모든 기능이 플러그인으로 제공되서 사실, 플러그인 설치와 클릭 몇 번이면 원하는 홈페이지를 만들 수 있어요. 쇼핑몰을 만들기 위한 결제 모듈도 플러그인으로 제공됩니다. (다시한번 말씀드리지만 광고글 아닙니다)

 

AWS (Amazon Web Services)

워드프레스를 이용해서 만든 홈페이지가 돌아갈 서버가 필요합니다. AWS를 이용하면 무료로 1년동안 서버를 운영할 수 있어요. 계정마다 1년동안 무료로 사용할 수 있기 때문에 계정을 여러개 필요할 때 마다 만들어서 1년동안은 무료로 사용할 수 있습니다. 무료 계정을 사용하다가 어플리케이션이 커지면 자연스럽게 유료를 고민해보면 될 것 같아요. 먼저 AWS에서 서버를 시작하면서 무료로 홈페이지를 만드는 방법을 시작할게요.

AWS 프리 티어

아래 URL을 통해서 AWS에 접속합니다. 그리고 무료 계정 생성을 누르면 AWS 프리 티어를 시작할 수 있어요. 프리 티어란, 이전에 말했듯이 새로 생성한 계정에 한해서 1년동안 무료로 제공되는 서버의 종류입니다. 프리 티어는 무료이기 때문에 유료 서버보다 성능은 떨어지지만, 어플리케이션을 처음 시작하기에는 적합합니다.

https://aws.amazon.com/ko/start-now/

 

링크를 통해 AWS에 가입한 다음, AWS 콘솔에 접속합니다. 그리고 EC2 서비스를 클릭합니다. EC2 인스턴스가 서버를 의미합니다. 그리고 나타나는 화면에서 인스턴스 시작 버튼을 누릅니다.

 

 

그리고 이제부터는 생성할 서버의 스펙을 선택합니다. 이번 화면에서 프리 티어 중에서 우분투 서버를 선택합니다. 프리 티어 말고 다른 것을 선택하면 요금을 지불해야되니 주의하세요. 그리고 다음,다음을 눌러가며 프리 티어로 생성합니다.

그리고 다시 EC2 서비스 화면으로 돌아가면, 아래와 같이 생성된 서버를 확인할 수 있습니다. 그리고 서버를 생성하는 과정에서, 서버에 접근하기 위한 접근 키를 다운로드 받을 수 있는 화면이 나옵니다. 다운로드 받아서 안전한 곳에 보관합니다. 나중에 서버에 접근할 때 사용됩니다.

 

지금까지 무료로 서버 한대를 뛰웠습니다. 이제 서버에 접속해서 데이터베이스와 워드프레스를 설치하면 됩니다.

AWS EC2 인스턴스에 접속하기

서버에 워드프레스와 데이터베이스를 설치하기 위해서 먼저, 서버에 접속합니다. 서버에 접속할 때는 이전에 다운로드받은 *.pem 파일을 이용합니다. .pem 파일에 너무 많은 권한을 부여하면 EC2 서버가 거부합니다. 따라서 다음과 같이 400 권한을 부여한 다음, 서버에 접속을 시도합니다.

# chmod 400 ~/keys/aws-comedian.pem
# ssh -i ~/keys/aws-comedians.pem ubuntu@[public ip]

 

퍼블릭 IP는 EC2 인스턴스 정보에서 확인할 수 있습니다.

 

그러면 아래와 같이 서버에 접속됩니다. 이제, 다음으로 워드프레스와 MySQL을 설치합니다.

EC2 서버에 워드프레스 설치하기

도커 설치하기

워드프레스와 MySQL을 빠르고 쉽게 설치하기 위해 도커 컨테이너를 활용합니다. 도커를 잘 모르시면, 쉽게 생각해서 동작하는 프로그램을 감싸서 다른 서버에서 바로 동작할 수 있게 만들어주는 녀석이라고 생각하시면 됩니다. 아니면 그냥 따라하시거나 질문하셔도 됩니다. 이제 접속한 EC2 서버에서 다음과 같이 입력해서 도커를 설치합니다.

#sudo apt-get update
#sudo wget -qO- https://get.docker.com/ | sh
#sudo apt-get install docker.io
#sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

EC2 서버에 데이터베이스 MySQL 설치하기

워드프레스가 동작하기 위해 MySQL이 필요하기 때문에 MySQL을 먼저 설치합니다. 도커를 설치한 덕분에, 다음과 같이 스크립트를 작성한 뒤 실행시키기만 하면 MySQL이 설치됩니다. VOL_HOME 으로 지정된 부분은 도커와 EC2 서버가 공유해서 사용하는 디렉토리인 볼륨을 지정합니다. 각자 EC2 서버에 마음에 드는 디렉토리를 생성하고 VOL_HOME을 통해 볼륨으로 지정합니다.

# cat runDB.sh
#!/bin/sh
VOL_HOME="/Users/coupang/test/volume/mysql"
docker run --name mysql -v $VOL_HOME:/var/lib/mysql -p 3307:3306 -e MYSQL_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_ROOT_PASSWORD=wordpress -d mysql:5.7

도커는 실행 중인 프로세스를 감싸 주는 녀석입니다. 따라서 프로세스가 동작하는데 필요한 데이터만 있으면 나중에 도커에 데이터를 주기만 하면 프로세스를 중간에 다시 실행하더라도 복원할 수 있습니다. 볼륨은 도커와 도커가 동작하는 서버의 연결 통로입니다. 주로 도커에서 동작하는 프로세스가 생산한 데이터를 저장합니다. 그리고 서버는 해당 데이터를 가져갈 수 있습니다. 서버는 데이터를 이용해서 프로세스를 백업하거나 나중에 다시 동작시키기 위해 사용합니다.

EC2 서버에 워드프레스 설치하기

MySQL과 마찬가지로 도커를 활용해서 쉽게 설치합니다. 아래와 같은 스크립트를 생성한 뒤 실행시키면 끝입니다. 스크립트를 자세히 보면, 위에서 생성한 MySQL과 연결하는 것을 볼 수 있습니다. 볼륨은 마찬가지로 원하는 디렉토리를 생성한 다음 지정해줍니다.

# cat runWP.sh
#!/bin/sh VOL_HOME="/Users/coupang/test/volume/wordpress"
docker run --name bbong -v $VOL_HOME:/var/www/html --link mysql:mysql -p 80:80 -p 443:443 -d wordpress

이제 다음 명령어를 입력하면 EC2 서버에서 실행 중인 워드프레스와 MySQL을 확인할 수 있습니다.

# sudo docker ps

이제 퍼블릭 IP를 통해 서버에 접속해보면 다음과 같이 워드프레스를 시작하는 화면을 볼 수 있습니다. 이제 워드프레스를 사용해서 홈페이지를 꾸미기만 하면 됩니다. 여기서는 워드프레스를 무료로 이용할 수 있게 설치 하는 방법까지만 알아보고, 워드프레스를 사용하는 방법은 다음에 알아봅니다.

 

만약 서버에 접속이 안되면

서버에 HTTP(80) 포트가 열려있는지 확인합니다. 기본적으로 SSH(22) 포트만 열려있기 때문에, 웹 서비스를 제공하기 위해 80과 443 포트가 열려있는지 확인합니다. 그리고 열려있지 않다면 아래와 같이 추가해줍니다.

무료 도메인 적용하기

지금까지 무료로 워드프레스 홈페이지를 하나 구축했습니다. 하지만 일반적인 홈페이지를 만들려면 아직 한 단계가 더 남았습니다. 바로 도메인을 적용하는 것입니다. IP가 아닌 나만의 이쁜 도메인 이름을 사용해서 홈페이지에 접속하고 싶습니다.

그런데 도메인은 기본적으로 유료입니다. 하지만 도메인도 마찬가지로 조금만 부지런하면 무료로 사용할 수 있습니다. 하지만 무료 도메인인 만큼, 이름이 자유롭지 않아요. 예를들어 끝자리가 .tk로 끝난다던가 제약이 있습니다. 그리고 AWS와 같이 무료로 사용할 수 있는 기간이 정해져 있습니다. 단, AWS와는 달리 기간 마다 재갱신 버튼을 눌러주기만 하면 됩니다. 번거롭다면 그냥 도메인을 구입하면 됩니다.

구글에 무료 도메인 구매를 검색하면 많은 가이드가 나옵니다. 따라서 구매하면 됩니다.대부분 IP와 무료로 구매한 도메인 이름을 입력하면, 시간이 지나면 알아서 IP를 도메인 이름으로 매핑해줍니다. 무료 도메인 제공해주는 사이트 중에 깔끔한 곳입니다.

http://www.dot.tk/en/index.html?lang=en

지금까지! 무료로 나만의 홈페이지를 완성했습니다.

워드프레스 백업 및 복원하기

AWS 무료 계정은 1년이 유효기간입니다. 1년이 지나면 안타깝게도 서버를 이동해야 합니다. 하지만 다행히 도커를 이용해서 워드프레스를 시작할 때 볼륨을 적용했기 때문에 간단히 백업 및 복원이 가능합니다.

워드프레스 백업 및 복원

먼저 tar 명령어를 이용해서 워드프레스의 볼륨을 압축해줍니다.

// 압축
# tar -zcvf comedian.tar.gz ./wordpress
// 압축 해제
# tar -zxvf comedian.tar.gz

그리고 압축한 파일은 scp 명령어를 이용해서 서버 밖으로 빼냅니다.

#scp -i ~/keys/aws-comedian.pem ubuntu@[server_ip] :/home/ubuntu/volume/comedian.tar.gz ./

그리고 마찬가지로 scp 명령어를 이용해서 새로운 서버로 업로드합니다.

#scp -i ~/keys/aws-comedian.pem ./comedian.tar.gz ubuntu@[server_ip]:/home/ubuntu/

이제 tar 명령어로 압축을 풀면 워드프레스 이사가 끝납니다. 압축을 풀고 볼륨 지정해서 워드프레스를 실행하기만 하면 됩니다. 물론, 데이터베이스를 실행한 다음에요.

MySQL 백업 및 복원

여기서는 .sql 덤프 파일을 이용합니다. .sql 파일로 데이터베이스를 빼냅니다. 그리고 마찬가지로 scp를 이용해서 새로운 서버로 업로드합니다. 그리고 도커로 MySQL을 실행합니다. 그리고 덤프 파일을 이용해서 MySQL을 복원합니다. 하지만 그 전에 할 일이 있습니다.

바로 다음 명령어로 기존 서버의 정보를 새로운 서버로 대체하는 일입니다. 다음 명령어는 데이터베이스 덤프 파일에 있는 이전 서버 IP(18.217.174.61)를 새로운 서버(18.217.174.66)으로 대체합니다.

# sudo sed -i -e 's/18.217.174.61/18.217.174.66/g' ./Dump20180906.sql

그리고 아래 명령어로 덤프 파일을 MySQL에 적용합니다.

# mysql -u root -p -D wordpress < Dump20180906.sql

이제 워드프레스를 도커를 이용해서 실행하면, 백업한 워드프레스가 새로운 서버에서 돌아가는 것을 볼 수 있습니다.

Static Web : 정적 웹 사이트

지금까지 서버부터 워드프레스 설치까지, 워드프레스를 사용할 준비가 끝났습니다. 이제 워드프레스를 사용하는 방법을 익혀서 이쁜 홈페이지를 만들면 됩니다. 사용하다보면 상당히 쉽게 되어있는 것을 느낄 수 있을 거에요. 거의 모든 기능이 플러그인을 설치하기만 하면 됩니다.

워드프레스는 보안 이슈가 많아서, 개인이 사용할 때는 크게 문제가 없지만 기업용으로 사용할 때는 문제가 많아요. 워낙 유명한 소프트웨어다보니 취약점이 너무 잘 알려져 있습니다. 따라서 기업용으로 사용할 경우 워드프레스를 그대로 노출시키기 보다, 워드프레스를 내부에 감추고 컨텐츠를 생성하는 도구로만 사용하고 정적 웹 사이트를 구축하는 것이 권장됩니다. 워드프레스를 이용해서 정적 웹 사이트를 구축하는 것 또한 플러그인으로 제공됩니다. 다음에 기회가 있으면 적용하면서 정리해볼게요!