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

Choi Kyung-sik네트워크와 시스템 관리Leave a Comment

패키지 설치 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 사용의 편리성

워드프레스를 직접 다운로드하여 설치할 시 보안과 사용의 편리성을 절충해야 한다. 워드프레스는 ftp를 사용하여 플러그인과 테마의 설치나 업데이트를 하므로 데비안에 ftp를 설정해야 한다. 데비안은 proftpd, vsftpd 등 다양한 ftp 서버 패키지를 제공하므로 원하는 것을 설치할 수 있다. 데비안의 vsftpd 패키지는 https://wiki.debian.org/vsftpd를 참고할 수 있다. 방화벽이나 공유기에서 21번 포트에 대한 포트 포워딩이 필요할 수 있다. 보안을 위해 외부에서 ftp로 접속하는 것을 허용하지 않을 경우 플러그인과 테마를 별도로 다운로드하여 압축을 푼 후 wp-content 안 plugins, themes 디렉토리에 복사해야 한다. 보안과 편리성은 서로 상충하기 때문에 한쪽을 선택하면 한쪽은 희생해야 한다.

사용의 편리성을 위해 워드프레스 설치 디렉토리의 사용자와 그룹, 권한 설정도 고민해 봐야 한다. 데비안의 사용자 계정이 wpuser라고 가정하면 다음의 명령어를 실행하여 www-data 그룹으로 변경한다.

# usermod -g www-data wpuser
# id wpuser
# groups wpuser

새로 생성하는 디렉토리는 775, 파일은 664 권한을 주기 위해 /home/wpuser/.profile에서 umask를 002로 설정한다. 워드프레스에서 사용할 계정을 데비안 시스템의 계정(예 : wpuser)으로 일치시킨다.

아파치의 VirtualHost인 mysite.com이 DocumentRoot로 /var/www/mysite 디렉토리를 사용한다고 가정하면 다음과 같이 설정한다.

# chown www-data:www-data /var/www/mysite
# chmod 775 /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 775 {} \; -print 
# find wp -type f -exec chmod 664 {} \; -print 
# rm wordpress-<version>.tar.gz

보안을 강화하고자 한다면 데비안의 워드프레스 패키지 방식으로 할 수 있다. mysite나 wp 디렉토리와 디렉토리 안 모든 파일의 사용자와 그룹을 root로 설정하고, wp/wp-content의 일부 디렉토리만 www-data 사용자와 그룹으로 설정한다. 이처럼 설정하면 데비안의 아파치는 www-data 사용자와 그룹으로 실행하기 때문에 root 사용자와 그룹으로 설정한 디렉토리와 파일에 쓰기 권한을 가질 수 없다.

일반적으로 웹호스팅 업체는 /home 디렉토리 아래에 사용자별로 디렉토리를 만들고 ftp, mysql 등을 사용할 수 있도록 하므로 위와 같은 설정들은 고려할 필요가 없다.

워드프레스의 주요 설정

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로 생성
    mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
    mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY '암호' WITH GRANT OPTION;

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