워드프레스 블로그 Cafe24 탈출기

네이버에서 탈출해 Cafe24 워드프레스 블로그에 정착한지도 꽤 됐는데, Cafe24 웹호스팅 하드 용량을 다 써서 이 기회에 ConoHa 서버로 블로그를 이전하기로 했습니다. 혹시 모를 다음 기회를 위해 써 두는 매뉴얼로 MariaDB 및 PHP 등의 설치 과정과 워드프레스 옵션을 수정하는 방법을 설명하고 있습니다.

블로그 백업

Cafe24 – 계정관리 – 백업받기/올리기에서 DB 및 데이터 파일을 백업합니다. 백업 파일은 하드 용량 제한에 들어가지 않아서 하드가 가득 차서 이민 오는 불쌍한 사람들도 이용할 수 있습니다! 파일 생성이 완료되면 로컬 머신에 다운로드 받아 놓습니다.

MariaDB 설치

워드프레스는 원래 MySQL만 지원하지만 저는 상위호환인 MariaDB를 설치할 것입니다. MariaDB 리포지토리 링크를 따라해 설치합시다. 설치 후에는 sudo /etc/init.d/mysql start로 실행하고, mysql -u root -p로 커맨드라인 툴을 실행할 수 있습니다.

Collation 설정

/etc/mysql/conf.d/mariadb.cnf에 있는 라인들의 주석을 해제해서 utf8을 활성화합시다.

DB 만들기

mysql 커맨드라인에서 CREATE DATABASE wp_blog;로 DB를 생성하고, use wp_blog;로 DB를 설정합니다.

User 만들기

mysql 커맨드라인에서 CREATE USER wp_blog@localhost IDENTIFIED BY 'password';로 유저를 생성하고 패스워드를 설정합니다. 랜덤 문자열을 사용하고 어딘가에 적어둡시다.

Grant

이제 아까 만들었던 DB의 권한을 유저에게 양도합시다. GRANT ALL ON wp_blog.* TO wp_blog@localhost;

제대로 설정되었는지는 SHOW GRANTS FOR wp_blog@localhost;로 확인할 수 있습니다.

PHP 설치

Digital Ocean의 튜토리얼을 취사선택해서 따라합시다. MySQL 부분은 이미 설치했으니 넘기고 nginx 및 PHP 설정  부분을 따라하면 됩니다. MariaDB를 사용하고 있으니 php5-mysql 대신 php5-mysqlnd를 설치해야 워드프레스와 호환성이 좋습니다.

sudo apt-get install php5-mysqlnd php5-fpm
sudo nano /etc/php5/fpm/php.ini # set cgi.fix_pathinfo=0
sudo service php5-fpm restart

nginx 설정

위에서 소개한 Digital Ocean의 튜토리얼은 PHP를 글로벌 설정으로 사용합니다. 하지만 PHP 같은 사회악을 글로벌에서 사용할 수는 없죠. nginx 튜토리얼을 봅시다. /etc/nginx/sites-available에 nginx 설정 파일을 만들고, sites-enabled 디렉토리에서 sudo ln -s /etc/nginx/sites-available/blog로 심볼릭 링크를 생성해 적용합니다. 저는 다음과 같이 파일을 작성했습니다.

# configuration of the server
server {
        # the port your site will be served on
        listen 80;

        # the domain name it will serve for
        server_name     blog.qwaz.io;
        charset         utf-8;

        root /home/qwaz/blog/www;
        index index.php;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        access_log      /home/qwaz/blog/log/access.log;
        error_log       /home/qwaz/blog/log/error.log;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include fastcgi_params;
                fastcgi_intercept_errors on;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

설정이 완료되었으면 sudo service nginx restart로 설정을 적용합니다.

백업 받아오기

블로그 파일을 잘 백업 받았다면 sql 파일 하나와 tar.gz 파일 하나가 있을 겁니다. tar.gz부터 블로그를 관리할 디렉토리에 올려서 압축을 풉니다. 저는 홈 디렉토리 아래 blog 폴더가 있고, 그 안에 log, backup 등의 기타 파일들을 놓은  뒤 www 폴더를 루트로 설정했습니다. tar.gz는 압축만 해제하면 되니 간단합니다.

이제 mysql 커맨드라인에서 위에서 생성한 DB를 선택하고 source backup.sql를 실행하면 DB 백업이 완료됩니다.

wp-config.php 수정

거의 다 완료되었습니다! wp-config.php를 열어 DB 네임, 유저명, 패스워드, 호스트 등을 새로 이사 온 서버에 맞게 수정해 줍니다. 혹시 플러그인 업데이트 시 FTP 권한을 요구하는 등의 경우에는 FS_METHOD 등도 추가로 수정해 줍시다. 더 자세한 정보는 워드프레스 문서에서 확인하실 수 있습니다.

워드프레스 옵션 수정

이제 정말 마지막입니다. 일부 옵션은 DB에서 직접 수정해 주어야 합니다. 혹시 이사 오기 전후 사이트 도메인이 변경된 경우, wp_options 테이블에서 siteurl과 home 컬럼의 값을 바꿔줍시다.

테스트

설정한 도메인을 입력해 제대로 실행되는지 테스트합시다. 이사 끝!

문제 해결

1. 퍼미션

퍼미션을 제대로 걸지 않으면 워드프레스 블로그가 동작하더라도 플러그인 업데이트나 미디어 업로드가 동작하지 않을 수 있습니다. 저는 qwaz:www-data로 퍼미션을 걸고 폴더에는 2770, 파일은 660으로 관리하고 있습니다.

2. 최대 업로드 사이즈

미디어 파일 크기가 큰 경우 업로드에 실패할 수 있습니다. 여기를 참고해 해결합시다.

댓글 남기기