데비안에 워드프레스 설치 시 고려할 점

In 네트워크와 시스템 관리 by Choi Kyung-sik

패키지 설치 vs 다운로드 설치

데비안의 강력한 패키지 관리 시스템을 사용하기 위해서는 데비안에서 제공하는 패키지를 사용하는 것이 좋은 선택이다. ‘apt-get update && apt-get upgrade’ 명령어를 사용하여 패키지 업데이트의 편리함을 얻을 수 있다. 그러나 워드프레스는 직접 다운로드하여 설치하는 것이 더 낫다. 데비안의 워드프레스 버전이 낮고 워드프레스 자체가 웹호스팅에 설치할 것을 전제로 하기 때문이다.

데비안의 워드프레스 패키지 설치는 https://wiki.debian.org/WordPress에서 볼 수 있다. ‘apt-get install wordpress’ 명령어를 실행하여 워드프레스를 설치하면 데비안의 파일시스템 계층구조 표준에 따라 다음의 디렉토리 구조를 가진다.

  • /usr/share/wordpress
  • /usr/share/wordpress/.htaccess -> /etc/wordpress/htaccess
  • /var/lib/wordpress/wp-content

데비안 Jessie의 워드프레스 패키지 버전은 4.1이다. backports로 설치한다면 4.7.x 버전까지 설치할 수 있다. 이 글을 쓰는 시점의 워드프레스 최신 버전은 4.8.x 이다. 브라우저에서 워드프레스로 로그인하여 플러그인, 테마를 설치하려면 /var/lib/wordpress/wp-content 안 plugins, themes 디렉토리의 사용자와 그룹을 www-data로 변경하는 추가적인 작업이 필요하다. 이런 이유로 데비안에서 제공하는 워드프레스 패키지 대신 직접 다운로드하여 설치하는 것을 추천한다.

보안 vs 사용의 편리성

워드프레스를 직접 다운로드하여 설치할 시 보안과 사용의 편리성을 절충해야 한다. 플러그인 설치와 워드프레스 업데이트 등을 쉽게 하려면 워드프레스를 설치할 디렉토리에 대한 쓰기 권한이 필요하다. 아파치의 VirtualHost인 mysite.com이 DocumentRoot로 /var/www/mysite 디렉토리를 사용한다고 가정하면 다음과 같이 설정한다.

# chown www-data:www-data /var/www/mysite
# chmod 755 /var/www/mysite

tar.gz으로 압축된 워드프레스를 다운로드하여 /var/www/mysite로 복사한 후 다음과 같이 작업한다.

# cd /var/www/mysite
# tar zxvf wordpress-<version>.tar.gz 
# mv wordpress wp
# chown -R www-data:www-data wp 
# find wp -type d -exec chmod 755 {} \; -print 
# find wp -type f -exec chmod 644 {} \; -print 
# rm wordpress-<version>.tar.gz

보안을 강화하고자 한다면 데비안의 워드프레스 패키지 방식으로 할 수 있다. mysite나 wp 디렉토리와 디렉토리 안 모든 파일의 사용자와 그룹을 root로 설정하고, wp/wp-content의 일부 디렉토리만 www-data 사용자와 그룹으로 설정한다. 이처럼 설정하면 데비안의 아파치는 www-data 사용자와 그룹으로 실행하기 때문에 root 사용자와 그룹으로 설정한 디렉토리와 파일에 쓰기 권한을 가질 수 없다. 따라서 플러그인과 테마를 별도로 다운로드하여 압축을 푼 후 wp-content 안 plugins, themes 디렉토리에 복사해야 한다. 보안과 편리성은 서로 상충하기 때문에 한쪽을 선택하면 한쪽은 희생해야 한다.

워드프레스의 주요 설정

mysite.com/wp 대신 mysite.com URL을 사용하고자 한다면 다음과 같이 작업한다.

  1. WordPress에 접속하여 Settings > GeneralSite Address (URL)을 http://www.mysite.com으로 변경한 후 Save Change 버튼을 클릭한다.
  2. /var/www/mysite/wp/index.php 파일을 /var/www/mysite/ 디렉토리로 복사한다.
  3. 복사한 index.php 파일을 다음과 같이 수정한다.
    require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
  4. Permalink를 사용하고자 한다면 /var/www/mysite/wp/.htaccess 파일을 /var/www/mysite/ 디렉토리로 복사한다.

Permalink를 사용하려면 rewrite모듈을 활성화해야 한다. ‘a2enmod rewrite’ 명령어를 실행한다. .htaccess 파일을 사용하기 위해서는 아파치의 ‘AllowOverride All’ 설정이 필요하다. 아파치(2.4)에서 가상호스트 mysite.com에 대해 다음과 같이 편집한 후 ‘sevice apache2 restart’ 명령어로 아파치를 재시작한다.

<VirtualHost *:80>
  ServerName www.mysite.com
  
  DocumentRoot /var/www/mysite
  <Directory /var/www/mysite>
    Options FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

Permalink는 SEO를 위해서 Post의 제목이 나올 수 있게 ‘Post Name’을 선택하거나 Custom Structure에서 ‘/wp/%postname%/’ 정도로 설정한다. 다음과 같이 시스템을 전체적으로 UTF-8로 설정했다면 mod_url을 설치할 필요는 없다.

  • 데비안을 UTF-8로 설치
  • Apache 설정에서 /etc/apache2/conf-available/charset.conf에 ‘AddDefaultCharset UTF-8’로 설정
  • 워드프레스의 데이터베이스를 UTF-8로 생성
    MariaDB [(none)]> CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY '암호 입력' WITH GRANT OPTION;
    

개인적인 취향에 따라 워드프레스 플러그인과 테마를 설치하여 사용한다.