데브포일 홈
WordPress 자동화
Guest
STAGE 11 · Lv.52

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
1995년 출시, 가장 오래된 웹 서버
Nginx
2004년 출시, 고성능 이벤트 기반
🗄️
MariaDB
MySQL 포크, 더 빠른 성능
🐘
PHP 8.x
JIT 컴파일러, 최대 3배 빠름
항목 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/전용서버, 성능 중시
실무에서의 선택 기준
대부분의 실무 환경에서는 Nginx를 선택합니다. 특히 VPS에서 WordPress를 운영할 때 Nginx의 낮은 메모리 사용량과 높은 동시 접속 처리 능력은 큰 장점입니다. 다만 일부 WordPress 플러그인(특히 보안 플러그인)이 .htaccess에 의존하는 경우가 있어, 이런 플러그인을 사용해야 한다면 Apache가 더 편리할 수 있습니다. 최근에는 Nginx를 프론트에 두고 Apache를 백엔드로 사용하는 하이브리드 구성도 인기 있습니다.

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
        
Apache AllowOverride All 필수!
WordPress의 퍼머링크(예쁜 URL)가 동작하려면 AllowOverride All 설정이 반드시 필요합니다. 이 설정이 없으면 WordPress가 .htaccess 파일에 작성하는 rewrite 규칙이 무시되어 모든 페이지가 404 오류를 반환합니다. Apache 기본 설정은 AllowOverride None이므로 반드시 변경해야 합니다.
🔒
여기까지는 미리보기입니다
LAMP/LEMP 스택 수동 설치
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)