아마존 라이트세일 서비스를 이용해 직접 리눅스 서버를 선택하고 워드프레스를 설치한 과정을 정리합니다. 기존에 사용하던 티스토리 블로그를 벗어나서 워드프레스 설치하고 본격적으로 사용하고 있습니다.
처음엔 집에 있는 라즈베리파이에 서버를 설치하고 그곳에 워드프레스를 설치해서 잠시 운영했으나 라즈베리파이가 고장 나서 데이터가 손실되거나 집의 네트워크에 문제가 생겨서 장애가 생기는 상황들에 대한 부담감으로 비용을 내고 서버를 사용하는 방법으로 결정했습니다.
목차
아마존 라이트세일(Amazon Lightsail)
라이트세일은 아마존에서 서비스하고 있는 가상 사설서버(VPS, Virtual Private Server)입니다. 아마존 EC2(Elastic Compute Cloud)는 블로그를 운영하기 위해서 사용하기엔 가격의 부담이 큽니다. 하지만 라이트세일은 저렴한 가격으로 블로그 하나쯤 운영하기엔 적당한 성능의 서버를 얻을 수 있습니다.
저는 가장 가격이 싼, 월 3.5달러에 1코어 프로세서에 512MB 메모리 서비스를 선택했습니다. 국내 호스팅 서버를 몇 가지 찾아봤는데, 월 이용요금이 비슷하다면 최초 세팅비를 10,000원 정도 지불해야 하는 경우가 대부분이어서 선뜻 결정하기 어려웠습니다. 라이트세일은 1개월은 무료로 사용을 할 수 있고 최초 세팅비라던가 추가 요금이 필요하지 않기 때문에, 사용해보고 마음에 들지 않는다면 그만두어도 되니까요.
인스턴스 생성
라이트세일은 다양한 인스턴스 생성을 할 수 있게 지원해 줍니다. “앱 + OS”를 고르면 리눅스 서버에 워드프레스가 설치되어있는 인스턴스 선택할 수 있습니다. 리눅스나 워드프레스 설치에 대한 지식이 없어도 쉽게 워드프레스를 사용할 수 있는 환경을 클릭 한 번으로 제공해줍니다.
이 글에서는 제가 진행한 Ubuntu 18.04 LTS OS를 선택하여 인스턴스를 생성하고 직접 Apache 서버, PHP, MariaDB, WordPress를 설치하는 방법을 소개합니다.
우분투 리눅스
Ubuntu 18.04 LTS를 선택하여 인스턴스를 만들면 서버가 사용 가능해지기까지 1~2분 정도의 시간이 소요됩니다. 잠시 기다리면 SSH를 통해서 서버에 접속할 수 있게 됩니다.
첫 화면이 열리면 아래의 명령어를 차례로 입력하여 패키지를 업데이트하고 최신 버전은 업그레이드하도록 합니다.
sudo apt-get update
sudo apt-get upgrade
Apache 설치
sudo apt-get install apache2
apt 명령어로 Apache2 설치가 끝나면 잘 설치가 되었는지 확인해 봅니다. 라이트세일 인스턴스 관리 화면에 표시된 퍼블릭 IP를 브라우저를 실행하여 입력해 봅니다. 위의 이미지와 같이 Apache서버 기본 페이지가 표시되면 정상적으로 설치가 완료된 것입니다.
Maria DB 설치
sudo apt-get install mariadb-server-10.1
현재 우분투 버전에서는 MariaDB 10.1버전이 최신 버전입니다. MariaDB는 Mysql과 동일하게 호환되는 DB서버이기 때문에 MariaDB대신 Mysql을 설치하셔도 사용하는데 무방합니다.
DB 설치가 완료되면 사용자 데이터베이스 생성과 사용자 등록, 데이터베이스 권한 등록을 진행합니다.
sudo mysql
데이터베이스 생성.
여기서는 “blog”라는 이름으로 데이터베이스 생성을 진행합니다.
create database blog;
사용자 등록과 데이터베이스 권한 부여.
blog 데이터베이스에 만들어지는 테이블의 모든 권한을 부여합니다.
create user '유저명'@'localhost' identified by '패스워드'; grant all privileges on blog.* to '유저명'@'localhost'; flush privileges;
PHP 설치
우분투 18.04 버전에서 PHP는 7.2버전이 최신입니다. 설치하도록 합니다.
sudo apt-get install php7.2
sudo apt-get install php7.2-fpm
워드프레스에 사용되는 PHP 필수 패키지들도 설치 합니다.
sudo apt-get install php7.2-dom sudo apt-get install php7.2-mbstring sudo apt-get install php7.2-imagick sudo apt-get install php7.2-zip sudo apt-get install php7.2-gd sudo apt-get install php7.2-mysql sudo apt-get install php7.2-curl sudo apt-get install php7.2-intl
Apache2 서버 mpm_event 방식 적용
기본 설치가 끝나면 PHP와 Apache서버를 연동합니다.
Apache는 첫 설치 시 기본값으로 prefork모드로 동작하도록 설정되어 있습니다. 여기서는 prefork를 사용하지 않고 event모드로 동작하도록 설정합니다. event방식이 prefork와 worker 방식보다 더 성능이 좋다고 합니다. 가장 최근에 추가된 방식이기도 하고요.
Apache2에서 a2dismod는 모듈 해제, a2enmod는 모듈 설정을 하는 명령어입니다.
a2dismod 명령어를 사용하여 Apache에 설정된 prefork 모듈을 해제합니다.
sudo a2dismod php7.2 sudo a2dismod mpm_prefork
mpm_event 모듈을 활성화 합니다.
sudo a2enmod mpm_event sudo a2enmod php7.2 sudo a2enmod proxy_fcgi sudo a2enmod rewrite sudo a2enmod headers sudo a2enmod expires
워드프레스 설치
워드프레스를 다운로드 받아 설치합니다. https://ko.wordpress.org/download/ 주소에서 한글 언어팩이 적용된 워드프레스를 다운로드 받을 수 있습니다. 브라우저를 통해 다운로드를 받아서 서버에 업로드하여도 되지만 wget 명령어를 사용하여 서버에서 직접 다운로드 받는 방식으로 진행합니다.
cd /var/www sudo wget https://ko.wordpress.org/latest-ko_KR.tar.gz sudo tar -zxvf latest-ko_KR.tar.gz wordpress/ sudo chown -R www-data:www-data wordpress/
위 명령어를 순서대로 수행합니다. latest-ko_KR.tar.gz 설치파일을 다운로드 받고 wordpress라는 디렉터리에 압축을 해제합니다. wordpress 디렉터리에 소유자를 변경하여 Apache 서버에서 wordpress 디렉터리 하위의 파일을 읽고 쓸 수 있도록 합니다. 권한이 부족하면 워드프레스 플러그인이 제대로 동작하지 못할 수 있습니다.
000-default.conf 파일을 수정하여 Apache에서 PHP파일이 실행되도록 합니다.
sudo nano /etc/apache2/sites-enabled/000-default.conf
000-default.conf 파일의 <VertualHost></VertualHost> 태그 사이에 아래 내용을 추가합니다.
<FilesMatch \.php> SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost" </FilesMatch> <Directory /var/www/wordpress> AllowOverride All Require all granted </Directory>
Apache2 서버를 재시작합니다. 재시작이 완료되면 브라우저를 실행하여 퍼블릭 IP로 접속 해 봅니다.
sudo service apache2 restart
브라우저에 퍼블릭 IP를 입력했을 때 위처럼 워드프레스 설정 화면이 나오면 성공적으로 설정이 끝난 것입니다.
“Let`s go!” 버튼을 누르고 이후 나오는 화면에서 아래와 같이 입력하고 워드프레스 세팅을 진행하면 됩니다.
- 데이터베이스 : blog
- 데이터베이스 사용자명 : MariaDB 설정에서 생성한 사용자명
- 데이터베이스 비밀번호 : MariaDB 설정에서 생성한 사용자 비빌번호
- 데이터베이스 호스트 : localhost
- 테이블 접두어 : wp_
워드프레스 설치 후 추가 작업
워드프레스 기본 설치가 끝나면 아래의 추가 작업을 진행 해 주도록 합니다.
Swap 공간 설정
512MB 용량의 메모리는 데이터베이스와 서버를 모두 실행하기에 넉넉한 용량이 아닙니다. 그대로 사용하다 보면 서버가 죽는 경우가 종종 생깁니다.
제 경우엔 블로그에 새 글을 등록할 때 이미지 첨부가 많아지면 서버가 죽는 경우가 있었습니다. 아마도 이미지 리사이징 처리를 하면서 메모리 사용량이 많아져서 생기는 문제가 아닌가 생각됩니다. Swap 공간 추가 후 해당 문제는 발생하지 않았습니다.
리눅스 Swap 메모리 설정 방법 정리 글을 참고하여 Swap 공간을 설정 해 주도록 합니다.
SSL 인증서 등록
보안을 위해서 서버에 SSL 인증서를 등록하여 워드프레스가 https 통신을 사용하도록 합니다. 요즘 SSL 통신은 선택이 아닌 필수입니다. Let’s Encrypt의 무료로 인증서를 제공해 주는 서비스를 이용하도록 합니다.
Let’s Encrypt SSL 무료 인증서 설치 및 자동갱신 방법 정리(Nginx/Apache) 글을 참고하여 작업을 진행합니다.