DigitalOcean에서 빠른 로딩 WordPress 사이트를 설정하는 방법은 무엇입니까?

10분 안에 DigitalOcean(DO)에서 워드프레스(WP) 사이트를 시작하는 방법을 알아봅니다.

처음 블로그를 시작하는 사용자나 웹사이트 소유자들은 종종 공유 호스팅 환경에서 사이트 로딩 속도를 향상시키는 방법에 대해 고민하고, 그 한계를 인지하게 됩니다. 몇 차례의 실망스러운 경험 후, 많은 사람들이 공유 호스팅에서 클라우드 호스팅으로 전환하는 것을 고려하게 됩니다.

클라우드 호스팅 플랫폼을 생각할 때, DigitalOcean은 가장 먼저 떠오르는 선택지 중 하나입니다.

DO는 시작하기에 매우 좋은 플랫폼입니다. AWS나 GCP에 비해 가격이 저렴하면서도 확장성이 뛰어나고 빠르며 필요한 모든 기능을 제공합니다.

하지만 시스템 관리 작업에 익숙하지 않다면 사이트 설정을 어려워할 수 있습니다. 운영체제(OS)부터 필요한 모든 것들을 직접 관리해야 하기 때문입니다. 이러한 어려움을 피하고 싶다면, 클라우드웨이와 같은 웹 호스팅 서비스를 이용하는 것도 좋은 방법입니다. 몇 번의 클릭만으로 DigitalOcean 웹 서버를 설정할 수 있어, 서버 구성에 대한 깊은 지식이 없어도 괜찮습니다. 클라우드웨이는 DigitalOcean 프리미엄 Droplet도 제공합니다.

DO에서 WP 사이트를 설정하는 방법에 대한 문의가 많아, 더 많은 사용자가 쉽게 따라 할 수 있도록 가이드라인을 마련하게 되었습니다.

기술적인 구현을 시작하기 전에, DO는 도메인 등록 기관이 아니라는 점을 기억해야 합니다. 즉, DO에서 직접 도메인을 구매할 수는 없습니다. 이미 도메인을 가지고 있다고 가정하고, 만약 새로운 도메인이 필요하다면 Namecheap에서 구매하는 것을 추천합니다.

그럼 시작해 보겠습니다…

워드프레스를 설정하는 방법은 다양하지만, 제가 찾은 가장 간편한 방법 중 하나는 EasyEngine을 사용하는 것입니다. 이 가이드에서는 EasyEngine을 사용하여 필요한 모든 소프트웨어를 설치하고 WP 사이트를 구축하는 과정을 안내합니다.

DigitalOcean 서버 준비하기

DO는 전 세계 여러 지역에 데이터 센터를 보유하고 있습니다. 사용자의 위치와 가장 가까운 데이터 센터를 선택하는 것이 좋습니다.

  • DigitalOcean에 로그인합니다(계정이 없다면 가입).
  • 새 Droplet을 생성하고 운영체제로 Ubuntu 18.x를 선택합니다.
  • 필요에 따라 Droplet 플랜을 선택합니다. 2GB 또는 3GB RAM으로 시작하는 것을 추천합니다.
  • 추가 옵션으로 모니터링을 활성화합니다.
  • 호스트 이름을 지정하고 생성을 클릭합니다.

약 1분 정도 지나면 새로 생성된 서버가 목록에 표시됩니다.

DO는 등록된 이메일 주소로 서버 접속 정보를 전송합니다.

  • SSH 클라이언트를 사용하여 제공된 접속 정보와 IP 주소로 서버에 로그인합니다.

처음 로그인하면 비밀번호를 변경하라는 메시지가 나타납니다. 강력한 비밀번호로 변경하는 것을 권장합니다.

EasyEngine 설치하기

서버가 준비되면 EasyEngine(EE)을 설치할 차례입니다. EE는 간단한 명령어를 통해 다양한 유형의 웹사이트를 구축할 수 있도록 도와주는 강력한 자동화 스크립트입니다. EE의 장점은 Nginx, MariaDB, Redis, PHP 등과 같은 개별 구성 요소를 직접 설정할 필요가 없다는 것입니다. 모든 과정이 백그라운드에서 자동으로 처리되며 완전 무료입니다!

최신 버전의 EE는 Docker를 사용하지만, 이에 대해 자세히 알 필요는 없습니다. EE는 프로덕션 환경에 적합하며, 많은 트래픽을 처리하는 수천 개의 웹사이트에서 사용되고 있습니다.

EasyEngine 사용법이 얼마나 간단한지 보여드리겠습니다. DigitalOcean 서버에 여전히 로그인되어 있다고 가정합니다.

  • 다음 명령을 실행하여 시스템을 업데이트합니다.
apt-get update
  • 다음 명령으로 EE를 설치합니다.
wget -qO ee rt.cx/ee4 && sudo bash ee

필요한 소프트웨어를 설치하는 데 몇 분 정도 소요되며, 완료되면 프롬프트가 표시됩니다.

Status: Downloaded newer image for easyengine/redis:v4.0.0
+-------------------+----------------------------------------------------------------------------+
| OS                | Linux 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 |
| Shell             | /bin/bash                                                                  |
| PHP binary        | /usr/bin/php7.2                                                            |
| PHP version       | 7.2.15-1+ubuntu18.04.1+deb.sury.org+1                                      |
| php.ini used      | /etc/php/7.2/cli/php.ini                                                   |
| EE root dir       | phar://ee.phar                                                             |
| EE vendor dir     | phar://ee.phar/vendor                                                      |
| EE phar path      | /root                                                                      |
| EE packages dir   |                                                                            |
| EE global config  |                                                                            |
| EE project config |                                                                            |
| EE version        | 4.0.10                                                                     |
+-------------------+----------------------------------------------------------------------------+
-----> Run "ee help site" for more information on how to create a site.
[email protected]:~#

EasyEngine 설치가 완료되었고 사용할 준비가 되었습니다.

워드프레스 사이트 만들기

EE에는 Redis 캐시를 사용하여 워드프레스 사이트를 만드는 옵션이 있어 더 나은 성능을 제공합니다. 저는 koreantech.org에서 Redis를 사용하고 있으며 매우 만족하고 있어서 사용해보는 것을 추천합니다.

Redis 캐시가 활성화된 상태로 도메인에 WP 사이트를 만들어 보겠습니다.

ee site create geekflarelab.com --type=wp --cache

위 명령어는 도메인 이름이 geekflarelab.com인 사이트를 만들고, 캐싱 옵션을 사용하는 워드프레스로 지정합니다.

몇 초 정도 지나면 다음과 같은 성공 메시지가 표시됩니다.

Configuring project.
Creating WordPress site geekflarelab.com
Copying configuration files.
Starting site's services.
Downloading and configuring WordPress.
Moved /var/www/htdocs/wp-config.php to /var/www/wp-config.php successfully
Success: Host entry successfully added.
Checking and verifying site-up status. This may take some time.

Installing WordPress site.
Success: http://geekflarelab.com has been created successfully!
Site entry created.
Creating cron entry
Success: Cron created successfully
+--------------------+----------------------------------------+
| Site               | http://geekflarelab.com                |
+--------------------+----------------------------------------+
| Site Root          | /opt/easyengine/sites/geekflarelab.com |
+--------------------+----------------------------------------+
| Site Title         | geekflarelab.com                       |
+--------------------+----------------------------------------+
| WordPress Username | inspiring-galois                       |
+--------------------+----------------------------------------+
| WordPress Password | xxxxxxxxxxxx                           |
+--------------------+----------------------------------------+
| DB Host            | global-db                              |
+--------------------+----------------------------------------+
| DB Name            | geekflarelab_com                       |
+--------------------+----------------------------------------+
| DB User            | geekflarelab.com-DRf3pP                |
+--------------------+----------------------------------------+
| DB Password        | xxxxxxxxxxxx                           |
+--------------------+----------------------------------------+
| E-Mail             | [email protected]                 |
+--------------------+----------------------------------------+
| SSL                | Not Enabled                            |
+--------------------+----------------------------------------+
| Cache              | Enabled                                |
+--------------------+----------------------------------------+
[email protected]:~#

성공적으로 WP 사이트가 생성되었습니다. EasyEngine은 Nginx, 데이터베이스, PHP 최적화를 처리하므로 사용자가 추가적인 변경을 할 필요가 없습니다.

이제 테스트할 시간입니다.

geekflarelab.com에 접속하면 작동할까요?

아니요!

도메인의 레코드를 DigitalOcean 서버 IP를 가리키도록 업데이트해야 합니다.

  • 도메인 등록 기관의 콘솔에 로그인하여 A 레코드를 업데이트합니다.

이제 geekflarelab.com에 접속할 수 있습니다.

몇 분 만에 DO 클라우드 서버에서 WP 사이트가 실행되었습니다.

저는 추가적으로 다음 사항들을 설정하는 것을 선호합니다.

SSH 포트 변경

기본적으로 SSH 포트는 22번으로 설정되어 있으며, 이는 누구나 알고 있는 사실입니다. 이로 인해 공격자들이 무차별 대입 공격을 시도할 가능성이 있으며, 서버 비밀번호가 약한 경우 서버가 해킹될 위험이 있습니다. 기본 포트를 다른 포트로 변경하면 이러한 공격을 예방할 수 있습니다.

SSH 포트를 변경하는 방법은 다음 기사에서 자세히 설명되어 있습니다.

https://koreantech.org.com/cloud-vm-security-guide/#1-Changing-SSH-Default-Port

SSL/TLS 인증서 설정

HTTPS를 통해 웹사이트를 운영하는 것은 필수적이며, 무료로 사용할 수 있는 인증서도 많습니다. 기술적인 구현 과정이 복잡하다고 느껴진다면 Cloudflare를 사용해 보는 것을 추천합니다.

Cloudflare는 무료 SSL뿐만 아니라 추가적인 성능 향상 및 보안 기능도 제공합니다.

워드프레스 보안 강화

워드프레스 사이트를 안전하지 않은 상태로 두지 마십시오.

다양한 보안 플러그인을 사용할 수 있지만, 예산이 허락한다면 프리미엄 솔루션을 선택하는 것이 좋습니다. Cloudflare PRO 또는 SUCURI를 고려해 볼 수 있습니다. 두 서비스 모두 무료 SSL 인증서, DDoS 공격 방어, OWASP 상위 10가지 취약점 완화 등 포괄적인 성능 및 보안 기능을 제공합니다.

DigitalOcean WP 사이트 속도는 얼마나 빠를까요?

각 웹사이트마다 특성이 다르기 때문에 일반화하기는 어렵습니다. 하지만 몇 가지 부하 테스트를 통해 다음과 같은 결과를 얻었습니다.

저는 StudioPress의 Authority Pro 테마를 설치하고, Blazemeter를 사용하여 더미 게시물을 추가하여 테스트를 진행했습니다.

결과는 매우 놀라웠습니다.

캘리포니아 북부 지역에서 50명의 사용자를 대상으로 5분간 테스트를 진행한 결과 다음과 같습니다.

  • 평균 응답 시간 – 351.19ms
  • 오류 – 0%

1초 미만의 응답 시간은 매우 인상적이라고 할 수 있습니다.

결론

공유 호스팅을 사용하고 있고 클라우드로 전환하여 직접 설정을 관리할 준비가 되었다면 DigitalOcean이 좋은 선택이 될 수 있습니다. 하지만 직접 관리할 시간이나 기술이 없다면 Kinsta를 살펴보는 것을 추천합니다.

Kinsta는 Google Cloud Platform을 활용하여 최상의 성능과 보안을 제공하는 프리미엄 관리형 WP 호스팅 플랫폼입니다.