태그 보관물: Wordpress

WordPress 설치(Apache base)

개요

CentOS 7 환경에서 Apache(httpd) 기반으로 WordPress 설치를 진행하는 전체 절차입니다. Apache → PHP → MariaDB 순서로 설치하고 WordPress 패키지를 DocumentRoot에 배포한 후, wp-config.php에 DB 연결 정보와 Salt 값을 설정하면 브라우저에서 WordPress 설치 마법사 화면에 접근할 수 있습니다.

구성 개요

Apache, PHP, MariaDB 세 컴포넌트를 같은 서버에 설치하는 방식을 LAMP 스택(Linux + Apache + MySQL/MariaDB + PHP)이라 합니다. LAMP 스택은 WordPress의 가장 전통적인 배포 방식으로, 소규모 서비스나 내부 서버에서 간단하게 구성할 수 있습니다. Apache는 PHP 요청을 mod_php로 처리하고, MariaDB는 WordPress의 게시글, 사용자, 설정 데이터를 저장합니다. 이 가이드는 CentOS 7 기준으로 작성되었으나 Rocky Linux 8/9에서도 DNF 명령과 패키지 이름만 일부 변경하면 동일하게 적용할 수 있습니다.

설치 환경

  • OS: CentOS 7 64bit
  • Web Server: Apache 2.4 + mod_ssl
  • Language: PHP 7.2
  • Database: MariaDB 10.3

Apache 설치

mod_ssl 모듈을 포함하여 Apache를 설치합니다. HTTPS를 사용하려면 mod_ssl이 반드시 필요합니다.

# yum install httpd httpd-devel mod_ssl -y

httpd.conf에 VirtualHost 설정을 추가합니다. HTTP 요청은 HTTPS로 리다이렉트하고, SSL VirtualHost에 인증서 경로를 지정합니다. Self-signed 인증서 생성 방법은 Apache HTTPS 구성 — mod_ssl 설치 및 self-signed 인증서 생성을 참고하세요.

<VirtualHost *:80>
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
  DocumentRoot /app/doc/wordpress
  ServerName www.<domain>
  ServerAlias www.<domain>
</VirtualHost>

<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/pki/tls/certs/ca.crt
  SSLCertificateKeyFile /etc/pki/tls/private/ca.key
  DocumentRoot /app/doc/wordpress
  ServerName www.<domain>
  ServerAlias www.<domain>
</VirtualHost>

ssl.conf에서 인증서 파일 경로를 지정합니다.

SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

PHP 설치

WordPress 운영에 필요한 PHP 7.2와 관련 확장 모듈을 webtatic 저장소를 통해 설치합니다.

# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install mod_php72w php72w-cli -y
# yum install php72w-bcmath php72w-gd php72w-mbstring php72w-mysqlnd php72w-pear php72w-xml php72w-xmlrpc php72w-process -y

# 설치 버전 확인
# php -v

MariaDB 설치 및 WordPress DB 생성

MariaDB 설치 방법은 MariaDB 10.3 설치를 참고하세요. MariaDB 설치 완료 후 WordPress 전용 데이터베이스와 계정을 생성합니다.

# mysql -u root -p

> CREATE DATABASE wordpress CHARACTER SET utf8 COLLATE utf8_bin;
> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@'localhost' IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;

WordPress 설치 및 설정

WordPress 최신 패키지를 다운로드하고 DocumentRoot 경로에 배포한 후 권한을 설정합니다.

# wget https://wordpress.org/latest.tar.gz
# tar zxvf latest.tar.gz

# mv wordpress /app/doc/
# mkdir /app/doc/wordpress/wp-content/uploads
# chown -R apache:apache /app/doc/wordpress
# chmod -R 755 /app/doc/wordpress

# cd /app/doc/wordpress
# mv wp-config-sample.php wp-config.php

wp-config.php에 DB 연결 정보를 입력합니다.

# vi wp-config.php

define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpress');
/** MySQL database password */
define('DB_PASSWORD', 'password');   // 실제 비밀번호로 변경
/** MySQL hostname */
define('DB_HOST', 'localhost');

Salt 값 설정: WordPress Salt Generator에 접속하여 출력된 텍스트를 복사한 후 wp-config.php의 'put your unique phrase here' 항목 전체를 교체합니다.

설치 완료 후 보안 강화

WordPress 설치 마법사를 완료한 후 다음 보안 설정을 추가로 진행합니다. WordPress의 xmlrpc.php는 외부 원격 게시 기능을 제공하지만, 무차별 대입 공격(brute-force)에 자주 악용됩니다. 사용하지 않는다면 Apache에서 접근을 차단합니다. 또한 WordPress 관리자 계정 이름을 admin으로 그대로 사용하면 공격 대상이 되므로, 첫 설치 시 다른 이름으로 설정하거나 설치 후 변경합니다.

# httpd.conf 또는 .htaccess에서 xmlrpc.php 접근 차단
<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

WordPress 파일과 디렉토리 권한은 보안과 기능성의 균형이 중요합니다. PHP가 파일 업로드 및 플러그인 설치를 처리하려면 wp-content/uploadswp-content/plugins에 Apache 프로세스 계정(apache 또는 www-data)의 쓰기 권한이 필요합니다. 그러나 웹 디렉토리 전체를 777로 설정하는 것은 보안 위험이 있으므로, 755(디렉토리)와 644(파일) 조합을 기본으로 하고 uploads 디렉토리만 쓰기 권한을 부여합니다.

서비스 시작 및 접속 확인

Apache 서비스를 시작하고 브라우저에서 서버 IP 또는 도메인 주소로 접속하면 WordPress 설치 마법사 화면이 표시됩니다.

# systemctl enable httpd
# systemctl start httpd

브라우저에서 https://<서버IP>에 접속하면 WordPress 언어 선택 화면이 표시됩니다.

참고

참고 문서: WordPress 공식 설치 가이드 · Apache HTTP Server 2.4 공식 문서