우분투 24.04 로 업그레이드하니까 XE 가 작동하지 않았다. PHP 8 이라서 그렇단다. 워드프레스는 잘 작동한다. 그래서 XE 를 WordPress 로 이전하였다. 글, 댓글, 첨부 파일을 이전하는 데 성공했다.
시작하기 전에
XE에서 테스트 글을 작성해서 본문에 그림을 하나 삽입해 둔다. WordPress 에서도 똑같이 한다. 이렇게 해두면 나중에 이전이 끝난 후에 첨부 파일의 경로를 수정할 때 요긴하게 참고할 수 있다.
테이블 이동하기
참고 글 1, 2 에서는 워드프레스의 가져오기 기능으로 XE 의 디비 전체를 가져왔다고 한다. 그렇게 하면 XE 데이터베이스의 모든 테이블이 워드프레스 데이터베이스의 하위 테이블로 들어오는 모양이다.
나도 처음에는 그렇게 하려고 하다가 잘 생각해보니까 그럴 필요가 없었다. 왜냐하면 나는 이미 XE 데이터베이스와 워드프레스 데이터베이스를 가지고 있어서 필요한 테이블만 잠깐 옮겨오면 되기 때문이다. 아래는 그 과정을 설명했다.
만약 다른 분도 나처럼 하려면 다음 명령을 내리면 될 것이다:
zcat xe-mysql-db.sql.gz | mysql -u root -p
또는
gunzip < xe-mysql-db.sql.gz | mysql -u root -p
또는
zcat xe-mysql-db.sql.gz > xe-mysql-db.sql
mysql -u root -p < xe-mysql-db
phpMyAdmin 에 root 로 로그인했다.
왼쪽에 디비 두 개가 보인다:
xsql
wp1
이들은 각각 다음 게시판의 데이터를 담고 있다:
xe
wordpress
이후는 xsql 의 테이블을 wp1 아래로 옮기는 과정이다. 모두 옮기는 건 아니고, 우선은 테이블 두 개만 필요하다. 나중에 글쓴이 정보를 보기 위해서 다른 테이블 하나가 더 필요한데 옮길 필요는 없고 참고하기만 하면 된다.
xsql 아래에 있는 xe_documents, xe_comments 를 wp1 으로 이동한다. phpMyAdmin 에서:
왼쪽에서 xsql 를 선택 > xe_documents 선택 > 상단 메뉴 Operations > Move table to 선택 > wp1 선택 > Go
왼쪽에서 xsql 를 선택 > xe_comments 선택 > 상단 메뉴 Operations > Move table to 선택 > wp1 선택 > Go
위의 과정처럼 테이블 옮기는 방법은 참고 글3 을 참고하였다.
이제 좌측에서 wp1 데이터 베이스를 선택하고, SQL 메뉴를 선택한 다음에 쿼리를 넣어 마이그레이
션을 시작하여 게시판 글을 이전한다.
Run SQL query/queries on database wp1:
INSERT INTO wp_posts
(id,
post_author,
post_date,
post_date_gmt,
post_content,
post_title,
post_name,
to_ping,
pinged,
post_excerpt,
post_modified,
post_modified_gmt,
post_content_filtered,
comment_count)
SELECT document_srl,
member_srl,
regdate,
last_update,
content,
title,
title,
'',
'',
'',
last_update,
last_update,
'',
comment_count
FROM
xe_documents
=>
Go 클릭
=>
Show query box
=>
그후 다음과 같이 댓글도 이전한다:
INSERT INTO wp_comments
(comment_id,
comment_post_id,
comment_author,
comment_author_email,
comment_author_ip,
comment_author_url,
comment_date,
comment_date_gmt,
comment_content,
comment_parent)
SELECT comment_srl,
document_srl,
nick_name,
email_address,
ipaddress,
homepage,
regdate,
regdate,
content,
parent_srl
FROM
xe_comments
그후 워드프레스에서 글과 댓글이 잘 보임을 확인하였다.
첨부 파일 경로 수정
이전 후 그림이 잘 나오면 다행인데 아마 잘 안 나올 것이다.
본문에 삽입돼 있는 그림이 보이지 않아서 웹브라우저에서 Ctrl+U 를 눌러서 경로를 확인해보면 이전 직후에 다음과 같이 돼 있었다.
http://127.0.0.1/xe/files/attach/images/147/674/049/98c72b93782b248db15859ff43b87b2f.png
이걸 워드프레스 경로로 바꿔주어야 한다. XE 를 이전해 오기 전에 워드프레스에서 작성한 테스트 글을 열어서 그림의 경로를 확인해 본다. 거기에 나오는 경로를 확인해보면 위의 경로를 어떻게 바꿔주어야 하는지 알 수 있다.
즉, 다음과 같이 바꿔주어야 한다:
http://127.0.0.1/wordpress/wp-content/uploads/attach/2024/11/Screenshot-from-2024-11-30-10-29-14.png
나는 /files/attach/ 경로를 /wp-content/uploads/attach/ 로 바꾸기로 하였다(사람마다 다를 수 있음):
wp1 > wp_posts 선택 > SQL >
UPDATE `wp_posts`
SET post_content = REPLACE(post_content, '/xe/files/attach/', '/wp-content/uploads/attach/')
그 후에 attach 디렉터리를 저 경로에 미리 갖다 둔다. 또는 디렉터리를 바로 옮기기 싫으면 일단 ln -s 를 이용한다:
ln -s /path/to/xe/files/attach /path/to/wp-content/uploads/
만약 그후에도 본문의 그림이 보이지 않으면 Ctrl+U 를 눌러서 경로에 뭐가 잘못됐는지 찾는다. 정답을 찾았으면 다시 위의 명령을 응용해서 치환한다. 이런 식으로 첨부 파일 경로를 수정하는 데 성공했다.
글쓴이 변경
사용자의 경우는 워드프레스에서 가입을 한 다음에 아이디를 보고, xe_documents에 있는 member_srl 를 참고하여 글쓴이를 변경하였다:
UPDATE `wp_posts`
SET
post_author = REPLACE(post_author, 4, 1)
위의 예는 XE 의 member_srl = 4 를 워드프레스 post_author = 1 로 바꾸는 명령이다. 나는 member_srl 세 개가 있어서 다 저렇게 바꿨다.
마무리
카테고리까지 자동으로 옮기기는 쉽지 않아 보인다. 그냥 기존 분류를 참고해서 생각나는대로 손으로 조금씩 글을 분류하기로 했다.
이전이 마무리된 후에 xe_documents, xe_comments 를 xsql 아래로 로 다시 보냈다. 혹시 몰라서 XE 데이터베스만 따로 dump 해 놓았다. 며칠 후에 XE 테이터베이스를 삭제했다.
mysql -u root -p
DROP DATABASE xsql;
이 워드프레스는 나 혼자만 개인적으로 쓴다. 글을 스크랩해 올 때 그림까지 첨부 파일로 만들어주면 아주 편리하다. 그렇게 하면 인터넷이 끊어지거나 출처 사이트가 없어져도 그림이 잘 나온다. XE 에서도 그런 플러그인을 사용했었다. 워드프레스에서는 Auto Upload Images 라는 플러그인이 있다. 이걸 설치해서 잘 쓰고 있다.
참고 글
- https://m.blog.naver.com/feena74/222583047882
- https://blog.naver.com/feena74/222583047882
- https://www.siteground.com/tutorials/phpmyadmin/operations/
1 thought on “XE migration to WordPress”