Nginx, MariaDB, PHP-FPM(LEMP 스택)을 사용해 Ubuntu VPS에 WordPress를 설치하는 명확한 단계별 가이드입니다. 데이터베이스 설정, 안전한 Nginx 서버 블록, PHP 튜닝, 무료 Let's Encrypt SSL 인증서까지 모두 다룹니다.
LEMP 스택으로 VPS에 WordPress 배포하는 방법
자체 VPS에서 WordPress를 운영하면 공유 호스팅의 이웃 간섭(noisy-neighbor) 제약 없이 성능, 보안, 자원을 완전히 제어할 수 있습니다. LEMP 스택(Linux, Nginx, MariaDB/MySQL, PHP)은 오늘날 대부분의 프로덕션 WordPress 사이트가 운영되는 현대적이고 고처리량의 기반인데, 이는 Nginx가 부하 상황에서 Apache보다 동시 연결을 더 효율적으로 처리하기 때문입니다.
이 가이드는 Ubuntu 24.04 LTS에서 프로덕션 수준의 완전한 설치 과정을 안내합니다. Skyline Cloud VPS에서 호스팅한다면 국내(In-Kingdom) 데이터 거주성과 PDPL/NCA에 부합하는 인프라까지 함께 제공받게 되며, 이는 대상 고객이나 규정 준수 범위가 사우디아라비아 및 GCC에 있을 때 중요합니다.
시작하기 전에
다음이 필요합니다:
- 공인 IP와 root 또는
sudo액세스를 갖춘 Ubuntu 24.04 실행 VPS. - VPS IP를 가리키는 A 레코드가 설정된 도메인 이름(그리고
www용 CNAME 또는 두 번째 A 레코드). - 서버에 대한 SSH 액세스.
본문 전반에 걸쳐 example.com을 실제 도메인으로 바꿔주세요.
1단계 — 시스템 업데이트 및 Nginx 설치
서버에 SSH로 접속한 다음, 패키지를 새로 고치고 웹 서버를 설치합니다:
sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y
방화벽에서 HTTP와 HTTPS를 허용합니다:
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
http://your_server_ip에 접속하면 기본 Nginx 환영 페이지가 표시됩니다.
2단계 — MariaDB 설치 및 보안 설정
MariaDB는 드롭인(drop-in) 방식의 오픈 소스 MySQL 대체제입니다:
sudo apt install mariadb-server -y
sudo mysql_secure_installation
프롬프트에 답하세요: root 비밀번호 설정, 익명 사용자 제거, 원격 root 로그인 비허용, 테스트 데이터베이스 삭제. 이제 WordPress 전용 데이터베이스와 사용자를 생성합니다:
sudo mysql
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
위 예시가 아니라 길고 무작위한 비밀번호를 사용하세요.
3단계 — PHP-FPM 및 필요한 확장 모듈 설치
Nginx는 PHP를 직접 처리하지 않으므로 요청을 PHP-FPM에 넘깁니다. WordPress에 필요한 확장 모듈과 함께 PHP를 설치합니다:
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring \
php-xml php-xmlrpc php-zip php-intl php-imagick -y
실행 중인 버전을 확인합니다(Ubuntu 24.04에는 PHP 8.3이 기본 탑재됩니다):
php -v
FPM 소켓 경로를 기록해 두세요 — /run/php/php8.3-fpm.sock가 됩니다. WordPress 워크로드의 경우 /etc/php/8.3/fpm/php.ini에서 몇 가지 PHP 제한값을 상향 조정하세요:
| 설정 | 권장 값 |
|---|---|
upload_max_filesize |
64M |
post_max_size |
64M |
memory_limit |
256M |
max_execution_time |
120 |
그런 다음 FPM을 재시작합니다:
sudo systemctl restart php8.3-fpm
4단계 — WordPress 다운로드
최신 릴리스를 웹 루트로 가져옵니다:
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo mkdir -p /var/www/example.com
sudo cp -a /tmp/wordpress/. /var/www/example.com
PHP-FPM(www-data로 실행됨)이 업로드와 업데이트를 쓸 수 있도록 소유권을 설정하되, 권한은 엄격하게 유지합니다:
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;
5단계 — Nginx 서버 블록 생성
/etc/nginx/sites-available/example.com을 생성합니다:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
# Block access to sensitive files
location ~ /\.ht { deny all; }
location = /wp-config.php { deny all; }
location ~* /(?:uploads|files)/.*\.php$ { deny all; }
# Long cache for static assets
location ~* \.(js|css|png|jpg|jpeg|gif|svg|woff2)$ {
expires 30d;
access_log off;
}
}
사이트를 활성화하고, 기본 설정을 제거한 뒤, 구성을 테스트합니다:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
6단계 — wp-config.php 구성
WordPress는 웹 설치 마법사에서 구성 파일을 작성할 수 있지만, 수동으로 처리하는 것이 더 깔끔하고 안전합니다. 샘플을 복사하고 편집합니다:
sudo cp /var/www/example.com/wp-config-sample.php /var/www/example.com/wp-config.php
데이터베이스 이름(wordpress), 사용자(wp_user), 비밀번호를 설정합니다. 그런 다음 플레이스홀더 인증 키를 공식 솔트(salt) 서비스에서 생성한 새 값으로 교체합니다:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
출력 결과를 define('AUTH_KEY', ...) 블록 위에 붙여넣습니다. 이 솔트는 세션 쿠키를 강화합니다.
7단계 — 설치 완료 및 SSL 추가
브라우저에서 http://example.com을 엽니다. WordPress가 사이트 제목, 관리자 사용자 이름, 강력한 비밀번호를 요청합니다 — 사용자 이름으로 admin은 피하세요. 마법사를 완료하고 로그인합니다.
이제 무료 Let's Encrypt 인증서로 사이트를 보호합니다:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
Certbot은 서버 블록을 편집해 443 포트에서 수신하도록 하고, HTTP를 HTTPS로 리디렉션하며, systemd 타이머를 통해 자동 갱신을 설정합니다. sudo certbot renew --dry-run으로 갱신이 정상 작동하는지 확인하세요.
8단계 — 설치 후 보안 강화
프로덕션에서 효과를 발휘하는 몇 가지 간단한 조치입니다:
- 자동 업데이트: WordPress 내에서 백그라운드 마이너 코어 및 플러그인 업데이트를 활성화하세요.
- 관리자에서 파일 편집 비활성화:
wp-config.php에define('DISALLOW_FILE_EDIT', true);를 추가하세요. - 객체 캐싱(Redis) 과 페이지 캐시 플러그인을 사용해 PHP 및 데이터베이스 부하를 줄이세요.
- 잘못된 업데이트나 공격에서 복구할 수 있도록 서버 외부 스토리지에 정기적으로 백업하세요. Skyline Cloud는 VPS에서 대상으로 지정할 수 있는 관리형 클라우드 백업 및 객체 스토리지를 제공합니다.
지역 내 WordPress 성능 및 호스팅 선택에 대한 더 깊은 맥락은 사우디아라비아 WordPress 호스팅 리소스 허브를 참고하세요.
국내(In-Kingdom) 호스팅이 유리한 이유
방문자가 사우디아라비아에 있다면, 현지 데이터 센터의 VPS는 지연 시간을 크게 줄이고 개인 데이터를 왕국 내에 보관하여 PDPL 및 NCA 요건을 직접적으로 뒷받침합니다. 동일한 제공업체의 비즈니스 이메일 호스팅과 사이트를 결합하면 깔끔하고 브랜드화된 you@example.com 구성과 현지 아랍어 지원을 함께 누릴 수 있습니다.
구축 시작하기
이제 LEMP 스택 위에 빠르고 안전하며 완전히 소유한 WordPress 설치본을 갖추게 되었습니다. VPS를 띄우고 몇 분 만에 배포하세요 — Skyline Cloud 계정을 만들어 국내(In-Kingdom) 데이터 거주성과 투명한 가격으로 시작하세요.
Comments
0 total · 0 threads