워드프레스 3주차: 웹 서버 (Apache/Nginx) 및 PHP 설치

이번 주차에서는 워드프레스를 위한 웹 서버 선택부터 설치, PHP 설정까지 단계별로 알아보겠습니다.

지난 주에 오라클 클라우드에 컴퓨트 인스턴스를 성공적으로 생성했습니다.
이제 워드프레스를 실행하기 위한 웹 서버와 PHP 환경을 구축할 차례입니다.

1. 워드프레스를 위한 웹 서버 선택

워드프레스를 호스팅하기 위해서는 웹 서버가 필요합니다. 가장 많이 사용 되는 두 가지 웹 서버는 Apache와 Nginx입니다. 각 서버의 특징을 비교해보겠습니다:

Apache vs Nginx 비교

특징ApacheNginx
구조프로세스/스레드 기반이벤트 기반
메모리 사용상대적으로 많음적음 (리소스 효율적)
동시 연결 처리연결당 스레드/프로세스 생성비동기 이벤트 처리
설정 용이성.htaccess 파일로 쉬운 설정중앙 집중식 구성
워드프레스 호환성매우 높음 (기본적으로 지원)추가 설정 필요할 수 있음
확장성모듈 시스템으로 확장 가능모듈식이지만 다소 제한적
성능정적 컨텐츠 처리 시 다소 느림정적 컨텐츠 처리 우수
 

초보자와 일반적인 워드프레스 사이트에는 Apache가 설정이 간편하고 워드프레스와의 호환성이 높아 권장됩니다.
하지만 이 가이드에서는 더 높은 성능과 리소스 효율성을 위해 Nginx를 사용하겠습니다.

nginx vs apache server

2. LEMP 스택 설치 (Linux, Nginx, MySQL, PHP)

워드프레스는 일반적으로 LAMP(Linux, Apache, MySQL, PHP) 또는 LEMP(Linux, Nginx, MySQL, PHP) 스택 위에서 실행됩니다.

이번 주차에서는 Nginx와 PHP를 설치하고, 다음 주차에서 MySQL을 설치하겠습니다.

LEMP linux nginx mysql php connet

1. 시스템 업데이트 확인

먼저 시스템 패키지를 최신 상태로 업데이트합니다:

bash
sudo apt update
sudo apt upgrade -y

 

2. Nginx 웹 서버 설치

Nginx 웹 서버를 설치합니다:

bash
sudo apt install nginx -y

설치 후 Nginx 서비스를 시작하고 부팅 시 자동 실행되도록 설정합니다:

bash
sudo systemctl start nginx
sudo systemctl enable nginx

Nginx 상태를 확인합니다:

bash
sudo systemctl status nginx

 

3. PHP 및 필요 모듈 설치

워드프레스는 PHP 기반 CMS이므로 PHP와 필요한 확장 모듈을 설치해야 합니다. 최신 PHP 버전을 설치하겠습니다:

bash
sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip -y

이 명령어는 다음 PHP 모듈을 설치합니다:

  • php-fpm: PHP FastCGI Process Manager (Nginx와 함께 사용)

  • php-mysql: MySQL 데이터베이스 연결

  • php-curl: URL 관련 기능

  • php-gd: 이미지 처리

  • php-intl: 국제화 지원

  • php-mbstring: 멀티바이트 문자열 처리 (한글 등)

  • php-soap: SOAP 프로토콜 지원

  • php-xml 및 php-xmlrpc: XML 처리

  • php-zip: ZIP 아카이브 처리

 

4. PHP-FPM 설정

PHP-FPM(FastCGI Process Manager)은 Nginx와 PHP의 연동을 위한 중요한 구성 요소입니다. 설정 파일을 확인합니다:

bash
sudo nano /etc/php/*/fpm/pool.d/www.conf

파일에서 다음 라인을 찾아 확인합니다:

text
user = www-data
group = www-data
listen = /run/php/php*-fpm.sock

이 설정이 이미 기본값으로 되어있을 것입니다. 확인 후 PHP-FPM 서비스를 재시작합니다:

bash
sudo systemctl restart php*-fpm
sudo systemctl enable php*-fpm

 

5. Nginx와 PHP 연동 설정

이제 Nginx가 PHP 파일을 처리할 수 있도록 설정합니다:

bash
sudo nano /etc/nginx/sites-available/wordpress

다음 내용을 입력합니다:

text
server {
listen 80;
server_name _; # 도메인이 없는 경우 기본값
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock; # PHP 버전에 맞게 수정
}

location ~ /\.ht {
deny all;
}
}

PHP-FPM 소켓 경로는 PHP 버전에 따라 다를 수 있습니다. 정확한 경로를 찾으려면

bash
find /run/php -name "*.sock"

결과에 따라 fastcgi_pass 라인을 수정합니다 (예: fastcgi_pass unix:/run/php/php8.1-fpm.sock;).

심볼릭 링크를 생성하여 설정을 활성화합니다:

bash
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # 기본 설정 제거

Nginx 설정이 올바른지 테스트합니다:

bash
sudo nginx -t

문제가 없다면 Nginx를 재시작합니다:

bash
sudo systemctl restart nginx
 

6. 워드프레스 파일을 위한 디렉토리 준비

워드프레스 파일을 저장할 디렉토리의 권한을 설정합니다:

bash
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
 

 

7. PHP 정보 확인 페이지 생성

설치가 제대로 되었는지 확인하기 위해 PHP 정보 페이지를 생성합니다:

bash
sudo nano /var/www/html/info.php

다음 내용을 입력합니다:

php
<?php
phpinfo();
?>

이제 웹 브라우저에서 http://[인스턴스_공개IP]/info.php에 접속하여 PHP 정보 페이지가 표시되는지 확인합니다. 표시된다면 PHP와 Nginx가 올바르게 연동된 것입니다.

중요: 정보 확인 후 보안을 위해 이 파일을 삭제하는 것이 좋습니다:

bash
sudo rm /var/www/html/info.php

 

3. PHP 설정 최적화

워드프레스 실행을 위해 PHP 설정을 최적화합니다:

bash
sudo nano /etc/php/*/fpm/php.ini

다음 값들을 찾아 수정합니다:

text
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

설정을 변경한 후 PHP-FPM을 재시작합니다:

bash
sudo systemctl restart php*-fpm

 

4. 성능 향상을 위한 Nginx 캐싱 설정

워드프레스 성능을 향상시키기 위해 Nginx 캐싱을 설정할 수 있습니다:

bash
sudo nano /etc/nginx/sites-available/wordpress

server 블록 내에 다음 내용을 추가합니다:

text
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}

이 설정은 정적 파일(이미지, CSS, JavaScript 등)에 대해 30일간의 브라우저 캐싱을 적용합니다.

변경 후 Nginx를 재시작합니다:

bash
sudo systemctl restart nginx
 

다음 주차 예고

이번 주차에서는 워드프레스를 실행하기 위한 웹 서버(Nginx)와 PHP 환경을 구축했습니다.

다음 주차에서는 워드프레스 데이터베이스를 위한 MySQL 설치 및 구성, 그리고 데이터베이스와 워드프레스 연동 방법에 대해 알아보겠습니다.

 

2주차: Compute 인스턴스 생성 및 환경 설정

1주차: 오라클 클라우드 Free Tier 소개 및 계정 생성

Leave a Comment