가상 서버 호스팅 디지털 오션에 워드프레스와 SSL 인증서 설치하기

0

저렴하게 가상 서버 호스팅(VPS)를 이용하고 싶은 경우에는 VultrDigital Ocean을 이용할 수 있습니다. Vultr는 월 2.5달러부터 이용할 수 있고, 디지털 오션은 월 5달러부터 이용이 가능합니다.

Vultr에 수동으로 PHP 7.0/PHP 7.1과 워드프레스를 설치하는 방법은 다음 글을 참고해볼 수 있습니다.

그리고 nginx 환경에서 Let’s Encrypt 설정하는 방법을 다음 글을 참고해볼 수 있습니다.

Vultr나 Digital Ocean 같은 가상 서버 호스팅은 비용이 저렴한 편이지만 cPanel 같은 툴을 이용할 수 없고, 문제가 발생할 경우 혼자 힘으로 해결해야 하기 때문에 초보자에게는 쉽지 않을 수 있습니다. 저같이 리눅스에 대한 지식이 부족한 경우 이 블로그에 사용되는 Bluehost VPS와 같은 관리형 VPS도 괜찮은 것 같습니다. 더 저렴한 호스팅을 원하면 공유호스팅을 이용해볼 수 있습니다. 관리형 VPS에서는 문제가 발생하면 지원을 요청할 수 있고, cPanel을 통해 서버를 쉽게 관리할 수 있습니다.

이 글에서는 Digital Ocean에서 다음과 같은 작업을 수행하는 방법을 살펴봅니다.

  1. 워드프레스 자동 설치 이미지를 사용하여 워드프레스 설치
  2. 도메인 연결하기
  3. 무료 Let’s Encrypt SSL 보안서버 인증서 설치

디지털 오션에서 가상 서버 호스팅 사용에 대한 유용한 설명서를 제공하지만, SSL 인증서를 설치하는 방법은 Vultr 문서를 참고했습니다. (디지털 오션에서 제공하는 SSL 설치 관련 문서에서는 사용자들이 제대로 작동하지 않는다는 댓글이 많네요.)

워드프레스 설치하기

디지털 오션에 로그인하여 오른쪽 상단에 있는 “Create” 버튼을 클릭하면 새로운 Droplet을 설치할 수 있습니다.

디지털 오션에서 새로운 서버 설치하기

Create > Droplets을 클릭합니다.

이미지 선택

Choose an image(이미지 선택)에서 One-click apps를 선택하고 WordPress 4.9.1 on 16.04를 선택합니다.

크기 선택

Choose a size(크기 선택)에서 원하는 크기를 선택합니다. 월 5달러짜리부터 선택할 수 있습니다.

데이터센터 위치 선택

다음으로 데이터센터 위치를 선택합니다. 아시아 지역에서는 싱가포르가 무난한 것 같습니다.

추가 옵션을 선택하고(2), 원하는 경우 SSH 키를 추가하도록 합니다(3). 보안을 위해 SSH 키를 추가하는 것이 좋습니다(이 글에서 SSH 키 설정 부분 참고).

hostname을 지정한 후에 맨 아래의 Create 버튼을 클릭하면 새로운 서버가 생성됩니다. 사실 이 부분은 이전 글에서 다룬 내용과 동일합니다.

SSH에 접속하여 워드프레스 설치 활성화하기

새로운 서버가 설치되었으면 이메일로 서버 IP 주소와 SSH 정보가 전달됩니다.

Your new Droplet is all set to go! You can access it using the following credentials:

Droplet Name: wordpress
IP Address: 123.456.789.012
Username: root
Password: xxxxxxxxxxxxxxxxxxx

For security reasons, you will be required to change this Droplet’s root password when you login. You should choose a strong password that will be easy for you to remember, but hard for a computer to guess. You might try creating an alpha-numerical phrase from a memorable sentence (e.g. “I won my first spelling bee at age 7,” might become “Iwm#1sbaa7”). Random strings of common words, such as “Mousetrap Sandwich Hospital Anecdote,” tend to work well, too.

패스워드는 기억하기 쉬우면서도 컴퓨터가 추측하기 어렵도록 설정하도록 합니다. 가령, 예시로 든 바와 같이 “I won my first spelling bee at age 7″를 응용하여 “Iwm#1sbaa7”처럼 설정할 수 있습니다(“암호문을 활용하여 안전하고 기억하기 쉬운 비밀번호 만들기” 참고).

SSH에 접속하여 비밀번호를 변경해주면 워드프레스를 설치할 수 있습니다. SSH에 접속하지 않으면 IP 주소(예: http://123.456.789.012)를 브라우저 창에 입력하면 다음과 같은 화면이 표시됩니다.

도메인이 있다면 워드프레스를 설치하기 전에 아래의 절차에 따라 도메인을 연결해주도록 합니다.

도메인 연결하기

도메인을 연결하려면 디지털 오션에 로그인하여 Networking(네트워킹) 메뉴를 클릭합니다.

위와 같은 화면이 표시되면 도메인을 입력하고 Add Domain(도메인 추가하기)을 클릭합니다.

이제 도메인을 등록한 업체의 사이트에 로그인하여 도메인의 네임서버 정보를 디지털오션의 서버 정보로 업데이트해줍니다.

  • ns1.digitalocean.com
  • ns1.digitalocean.com
  • ns3.digitalocean.com

A 레코드를 해당 서버의 IP 주소로 설정해주면 브라우저에 도메인 주소를 입력하면 정상적으로 연결됩니다.

Virtual Host 파일 생성하기

다음 명령을 실행하여 conf 파일을 복사합니다.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

이 파일을 수정합니다.

sudo nano /etc/apache2/sites-available/example.com.conf

다음과 비슷하게 수정하도록 합니다.

<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

저는 기본 conf 파일에 서버 이름만 입력했습니다.

서버명 등록

여러 개의 도메인을 추가하려는 경우에는 첫 번째 Virtual Host 파일을 복사하여 수정할 수 있습니다.

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

nano로 편집합니다.

sudo nano /etc/apache2/sites-available/test.com.conf

다음과 비슷하게 수정합니다.

<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

새 Virtual Host 파일 활성화

a2ensite 툴을 사용하여 각 사이트를 활성화합니다.

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Apache를 재시작합니다.

sudo service apache2 restart

이제 브라우저에 사이트 주소를 입력하여 테스트해보도록 합니다.

Ubuntu 16.04의 Apache 환경에서 Let’s Encrypt 설치하기

이제 추가된 도메인에 대하여 Let’s Encrypt 무료 보안서버 인증서를 설치해보겠습니다.

사전 준비 사항

먼저 클라이언트를 /opt/letsencrypt에 다운로드합니다.

apt-get install git
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Let’s Encrypt SSL 인증서 생성

Let’s Encrypt SSL 인증서를 생성합니다.

./letsencrypt-auto --apache -d yourubuntuserver.example

만약 ./letsencrypt-auto: No such file or directory 오류가 발생하면 다음 명령을 실행하도록 합니다(참고).

git clone https://github.com/certbot/certbot.git && cd certbot && ./letsencrypt-auto run --standalone-supported-challenges http-01 -t -i letsencrypt-pritunl:pritunl -d domain.tld --no-redirect

이제 다시 위의 명령을 내립니다.

여러 개의 도메인에 대하여 Let’s Encrypt 인증서를 생성하려는 경우 -d 옵션을 사용합니다.

./letsencrypt-auto --apache -d yourubuntuserver.example -d mysslcertificate.example
./letsencrypt-auto --apache -d yourubuntuserver.example -d mysslcertificate.example -d anotherwebsite.example

www 서브도메인에 대해서도 무료 Let’s Encrypt SSL 인증서를 생성할 수 있습니다.

./letsencrypt-auto --apache -d yourubuntuserver.example -d mysslcertificate.example -d anotherwebsite.example -d www.yourubuntuserver.example -d www.mysslcertificate.example -d www.anotherwebsite.example

강제로 SSL 버전으로 리디렉션시키기

Let’s Encrypt SSL 인증서가 설치되었으면 .htaccess 파일에 다음 코드를 추가하여 http://…로 접속할 경우 강제로 https://…로 리디렉션되도록 합니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Let’s Encrypt 인증서를 자동 갱신되도록 설정하기

Let’s Encrypt SSL 인증서는 기본적으로 90일 동안 유효합니다. 3개월마다 수동으로 갱신해도 되지만 cron job을 이용하여 자동으로 갱신하도록 설정할 수 있습니다.

crontab -e

그러면 이용할 에디터를 선택하는 옵션에 제공됩니다. 보통 nano를 선택하면 수월합니다. 편집 화면이 표시되면 다음 라인을 추가합니다.

15 5 * * 5 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

워드프레스를 설치한 경우 사이트 주소 설정을 http://…에서 https://…로 변경해주도록 합니다. 이제 테스트해보면 SSL 인증서가 정상적으로 적용되어 잘 작동하는 것을 확인할 수 있을 것입니다.

마치며

이상으로 Digital Ocean에서 워드프레스를 설치하고 도메인을 연결한 다음 SSL 인증서까지 설치하는 과정을 살펴보았습니다. 조금 익숙해지면 이 과정이 1시간 이내로 금방 완료될 수 있습니다.

설치하는 것보다 설명하는 것이 더 시간이 많이 걸리네요.ㅎㅎ

우선은 기본적으로 워드프레스를 운영할 수 있지만, 보안과 관련된 문서를 검색하여 필요한 조치를 취해주며 더 안정하게 사이트를 운영할 수 있을 것 같습니다. (추후에 관련 문서를 검색하여 내용을 추가할 수 있으면 해보겠습니다.)

참고로 Bluehost, Siteground 등 일부 해외 호스팅에서는 cPanel에서 무료 SSL 인증서를 적용할 수 있는 옵션을 제공합니다.

참고:

Related Posts

Comments