LAMP/LEMP 스택 수동 설치
Apache vs Nginx 비교, MariaDB/MySQL 설정, PHP 8.x 설치, 가상 호스트 구성, PHP-FPM, 서버 보안 강화를 배웁니다.
웹 서버 스택의 이해
LAMP vs LEMP: 두 가지 서버 스택
WordPress를 실행하려면 웹 서버 + 데이터베이스 + PHP로 구성된 서버 스택이 필요합니다. 관리형 호스팅(Cloudways, Kinsta 등)을 사용하면 이 모든 것이 자동으로 구성되지만, VPS나 전용 서버를 직접 관리하려면 각 구성요소를 수동으로 설치하고 최적화해야 합니다.
서버 스택을 직접 구성하면 완전한 제어권을 갖게 됩니다. 서버 자원을 원하는 대로 배분하고, 보안 설정을 세밀하게 조정하며, 비용도 크게 절약할 수 있습니다. 월 5달러짜리 VPS에서도 트래픽이 적은 사이트 수십 개를 운영할 수 있습니다.
LAMP 스택:
- Linux - 운영체제 (AlmaLinux, Ubuntu, CentOS, Rocky 등)
- Apache - 웹 서버 (세계에서 가장 오래되고 널리 사용되는 웹 서버)
- MySQL/MariaDB - 관계형 데이터베이스 관리 시스템
- PHP - 서버 사이드 프로그래밍 언어
LEMP 스택:
- Linux - 운영체제
- Engine-X (Nginx) - 고성능 웹 서버/리버스 프록시
- MySQL/MariaDB - 데이터베이스
- PHP-FPM - PHP FastCGI 프로세스 매니저
두 스택 모두 WordPress를 완벽하게 지원하지만, 아키텍처와 성능 특성에서 중요한 차이가 있습니다. 어떤 스택을 선택할지는 트래픽 규모, 서버 사양, 운영 경험, 사용하는 플러그인에 따라 달라집니다.
| 항목 | Apache | Nginx |
|---|---|---|
| 아키텍처 | 프로세스/스레드 기반 (MPM prefork/worker/event) | 이벤트 기반 비동기 (단일 스레드 + 워커) |
| 동시 접속 처리 | 중간 (프로세스당 하나, C10K 문제 발생 가능) | 우수 (수만 개 동시 연결, C10K 해결) |
| 정적 파일 서빙 | 보통 | 매우 빠름 (Apache 대비 2~3배) |
| .htaccess 지원 | 지원 (디렉토리별 설정 가능) | 미지원 (서버 설정 파일에서만 가능) |
| PHP 처리 | mod_php (내장 모듈) 또는 PHP-FPM | PHP-FPM (별도 프로세스, 반드시 필요) |
| 설정 변경 | .htaccess로 즉시 적용 (재시작 불필요) | 설정 파일 수정 후 reload 필수 |
| 메모리 사용 | 높음 (접속당 프로세스/스레드 생성) | 낮음 (이벤트 루프로 효율적 처리) |
| WordPress 호환 | 완벽 (.htaccess 퍼머링크 자동 지원) | 추가 설정 필요 (try_files 규칙) |
| 리버스 프록시 | 가능하지만 설정 복잡 | 탁월 (네이티브 지원, 설정 간단) |
| 로드 밸런싱 | mod_proxy_balancer (추가 모듈) | 내장 upstream 모듈 (간편) |
| 캐싱 | mod_cache (기본적) | FastCGI 캐시 (매우 강력) |
| 추천 대상 | 초보자, 공유 호스팅, .htaccess 필수 환경 | 고트래픽, VPS/전용서버, 성능 중시 |
LAMP 스택 설치 (Apache + MariaDB + PHP)
AlmaLinux/Rocky Linux 9 기반 LAMP 설치
Apache는 WordPress와의 호환성이 가장 좋은 웹 서버입니다. .htaccess 파일을 통한 퍼머링크, 리다이렉트, 접근 제어가 자동으로 동작하며, 대부분의 WordPress 가이드가 Apache를 기준으로 작성되어 있습니다.
아래 가이드는 AlmaLinux 9 / Rocky Linux 9 기준이며, CentOS Stream 9에서도 동일하게 작동합니다. Ubuntu/Debian 사용자는 dnf 대신 apt를 사용하고, 패키지 이름이 약간 다릅니다.
# ===============================================
# LAMP 스택 설치 - AlmaLinux/Rocky Linux 9
# ===============================================
# ===== 1. 시스템 업데이트 (가장 먼저!) =====
dnf update -y
dnf install -y epel-release
dnf install -y wget curl vim tar unzip git
# ===== 2. Apache (httpd) 설치 =====
dnf install httpd -y
# Apache 시작 및 자동 시작 등록
systemctl start httpd
systemctl enable httpd
# Apache 버전 확인
httpd -v
# Server version: Apache/2.4.57 (AlmaLinux)
# 방화벽에 HTTP/HTTPS 포트 열기
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# Apache 작동 확인
curl -I http://localhost
# HTTP/1.1 403 Forbidden (기본 페이지, 정상)
# ===== 3. Apache MPM 설정 확인 =====
# AlmaLinux 9는 기본적으로 event MPM 사용 (권장)
httpd -V | grep -i mpm
# Server MPM: event
# MPM 설정 파일: /etc/httpd/conf.modules.d/00-mpm.conf
# event MPM 성능 튜닝:
cat > /etc/httpd/conf.d/mpm-tuning.conf
StartServers 3
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 1000
ServerLimit 16
MPMEOF
# ===== 4. Apache 보안 헤더 설정 =====
cat > /etc/httpd/conf.d/security-headers.conf
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
# 디렉토리 목록 차단
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
SECEOF
# mod_rewrite 활성화 확인 (퍼머링크에 필수)
httpd -M | grep rewrite
# rewrite_module (shared)
# 설정 검증 후 재시작
apachectl configtest
# Syntax OK
systemctl restart httpd
AllowOverride All 설정이 반드시 필요합니다. 이 설정이 없으면 WordPress가 .htaccess 파일에 작성하는 rewrite 규칙이 무시되어 모든 페이지가 404 오류를 반환합니다. Apache 기본 설정은 AllowOverride None이므로 반드시 변경해야 합니다.무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.