제가 사용하는 라이트세일은 다른 곳들과 다르게 PHP 업그레이드가 설정만으로 업그레이드가 되는 것이 아닌 인스턴스 이전을 통한 방법으로 해야 하기 때문에 복잡해서 그 동안 미루었는데 이번에 시간을 두고 진행을 하기로 했습니다.
근데 그 동안은 인스턴스 이전을 통한 PHP 업그레이드 과정을 정리하지 않아서 매번 다시 검색을 하면서 진행하였기 때문에 이번에 순서대로 정리를 해서 다음에 다시 PHP 업그레이드를 할 때 참고할 수 있도록 하려고 합니다.
아래에 제가 정리하는 부분은 저의 기준에 맞춘 것이기 때문에 모든 인스턴스 이전 방법과 다를 수 있습니다. 그래서 이 글을 보실 분들은 그대로 따라하기 보다는 자신의 설정과 비교를 해보고 참고용으로 사용하시길 바랍니다.
인스턴스 이전을 하기 전에는 문제가 발생할 수 있기 때문에 기존에 사용하는 인스턴스는 스냅샷을 해두면 문제가 생길 경우 다시 복구할 수 있도록 합니다.
오랜만에 인스턴스 이전을 하는 것이기 때문에 많은 오류들이 발생했고 그 부분도 아래에 설명을 하도록 하겠습니다.
목차
인스턴스 이전 – 백업
인스턴스 이전을 하기 위해서는 먼저 기존 워드프레스를 백업해야 하는데 다양한 플러그인이 있지만 저는 UpdraftPlus를 사용하여서 백업을 진행하였습니다.
해당 플러그인은 용량이 클 경우 유료로 전환을 해야 하지만 구글 드라이브 공간을 이용하게 되면 무료로 백업을 할 수 있습니다. 플러그인을 설치하신 후에 상단 메뉴에서 설정을 볼 수 있고 들어가서 구글 드라이브 선택하고 인증하면 저장 공간으로 사용할 수 있습니다.
백업은 100% 오류 없이 저장하는 것은 아니기 때문에 실패한 부분을 찾아서 직접 업로드를 진행해주셔야 합니다. 저 같은 경우도 이미지가 일부 오류가 발생하면서 직접 파일을 업로드 하였습니다.
플러그인 사용 방법에 대해서는 글을 작성한 적이 있기 때문에 해당 게시물을 참고해 보시길 바랍니다. – 워드프레스 백업 할 수 있는 Updraftplus 플러그인
인스턴스 생성
기존의 워드프레스를 백업하였다면 라이트세일로 가셔서 인스턴스를 생성하시면 됩니다. 생성 이후 5분 정도 기다려야 실행이 되기 때문에 시간을 두고 기다렸다가 다음을 진행하시면 됩니다.
비밀번호 찾기 및 복원
새 인스턴스가 실행이 완료하게 되면 SSH 연결을 하신 후에 cat bitnami_application_password 입력해서 비밀번호를 알아내시면 됩니다. 비밀번호 복사는 드래그해서 마우스 우 클릭해서 복사하시면 됩니다.
비밀번호를 알아냈다면 새 인스턴스 IP 주소를 복사하신 후에 브라우저에서 XXX.XXX.XXX.XXX/login 로 접속을 하신 후에 사용자명은 user 입력하시고 비밀번호는 위에서 알아낸 것을 입력해서 로그인을 하시면 됩니다.
워드프레스 관리자로 들어갔다면 UpdraftPlus 플러그인을 설치해서 구글 드라이브를 설정하신 후에 하단에 Rescan 클릭하게 되면 백업한 목록이 보이게 됩니다.
거기서 Restore 버튼을 눌러서 백업한 것을 새 인스턴스로 복원하시면 됩니다.
Bitnami 베너 제거
백업한 것을 복원하는 동안에 새 인스턴스 워드프레스 화면에 나오는 비트나미 베너를 제거하도록 하겠습니다. 새 인스턴스 SSH 접속하신 후에
sudo /opt/bitnami/apps/wordpress/bnconfig –disable_banner 1 입력하게 되면 비트나미 베너가 제거됩니다.
SSH에서 무엇인가를 설정하였다면 재부팅을 해줘야 하기 때문에 sudo /opt/bitnami/ctlscript.sh restart apache 입력해주시면 됩니다.
고급 캐싱 플러그인 활성화(WP_CACHE)
캐시 플러그인을 사용하고 있다면 고급 캐싱 플러그인을 활성화해야 하는데 제가 사용하는 WP Fastest Cache 캐시 플러그인은 개발자 답변을 보게 되면 활성화할 필요가 없다고 합니다.
다른 캐시 플러그인을 위해서는 고급 캐싱 플러그인을 활성화해야 하기 때문에 해당 방법을 알아보겠습니다.
먼저 캐시 플러그인이 활성화되어 있다면 비활성화를 먼저 한 다음 라이트세일 새 인스턴스 SSH 접속한 후에 sudo nano /opt/bitnami/wordpress/wp-config.php 입력해서 파일을 여시면 됩니다. 그 다음 <?php 바로 아래에 define(‘WP_CACHE’, TRUE); 를 추가하시면 됩니다.
Expires Headers 설정
새 인스턴스 SSH 접속한 후에 sudo nano /opt/bitnami/apache2/conf/httpd.conf 입력하시면 됩니다.
httpd.conf 파일 편집기로 열었다면 위에 표시한 것 앞에 있는 # 제거하시면 됩니다.
그 다음 캐시 플러그인을 사용하고 있다면 비활성화하고 활성화하게 되면 만료 헤더가 자동으로 추가됩니다.
.htaccess 허가하기
새 인스턴스 SSH 접속한 후에 sudo nano /opt/bitnami/apps/phpmyadmin/conf/httpd-app.conf 입력하시면 됩니다.
그 다음 AllowOverride 부분을 All 이라고 변경을 해주시면 됩니다.
※ 인스턴스 이전 복원이 완료하게 되면 사용자와 비밀번호가 기존에 사용하였던 것으로 바뀌기 때문에 기존에 사용하였던 사용자명과 비밀번호를 입력해서 로그인을 합니다.
아스트라 테마 Font Swap
저는 아스트라 테마를 사용하고 있기 때문에 Functions.php 제일 하단에 아래의 코드를 추가하시면 됩니다.
add_filter( ‘astra_fonts_display_property’, ‘astra_replace_fallback_with_swap’ );
function astra_replace_fallback_with_swap( $property ) {
$property = ‘swap’;
return $property;
}
복원 후 이미지 깨질 경우
복원을 완료한 후에 사이트로 들어갔는데 이미지가 제대로 표시가 안될 경우는 백업과 복원에서 오류가 발생한 것으로 다시 백업을 하여도 해당 부분은 대부분 해결이 되지 않았습니다.
그래서 저 같은 경우에는 기존 인스턴스에 파일스터 플러그인을 설치한 후에 /opt/bitnami/wordpress/wp-content/uploads 에서 년도별로 정리된 이미지만 다운로드 받습니다.
그 다음 새 인스턴스에도 파일스터 플러그인을 설치하여서 다운로드 받은 이미지를 업로드하게 되면 깨지는 이미지 오류를 해결하실 수 있을 것입니다.
파일스터 플러그인을 사용한 이유는 파일질라로 다운로드 받아보았지만 시간이 너무 오래 걸렸습니다.
고정 IP 연결
사이트에 제대로 보인다면 이제 고정 IP 연결해야 하는데 라이트세일로 간 후에 네트워킹 클릭해서 고정 IP 주소에서 점 세개 모양을 클릭해서 관리로 들어가면 됩니다.
그 다음 기존 인스턴스를 분리한 후에 새로운 인스턴스로 고정 IP 연결하면 됩니다. 그 후에 5분 정도 지나게 되면 기존 도메인으로 연결을 할 수 있습니다.
Let’s Encrypt 인증서 설치
보안 연결을 하기 위해서 Let’s Encrypt 무료 인증서를 설치해야 하는데 빠르게 설치할 수 있는 스택이 있기 때문에 빠르게 할 수 있습니다.
새 인스턴스 SSH 에서 아래의 명령어를 입력하시면 됩니다.
sudo /opt/bitnami/bncert-tool
실행하게 되면 업데이트하라는 내용이 나오게 되고 Y 눌러서 진행한 후에 다시 위에 명령어를 입력하시면 됩니다. 그 다음 도메인 입력, 리다이렉트 설정(Y,N,Y)을 하시면 됩니다.
그 다음 나오는 안내 문구에서 Y 눌러주시고 이메일 입력한 후에 다음 질문에서 Y 누르게 되면 모든 과정이 끝나게 됩니다.
인증 헤더가 없습니다 오류
인스턴스 이전을 한 후에 문제가 있는지 살펴보던 와중에 사이트 건강에서 인증 헤더가 없습니다. 라는 문제가 발생한 것을 확인하게 되었습니다.
그 동안 겪은 적이 없는 문제이기 때문에 구글에서 검색을 하면서 찾아보았는데 꽤 오랜 시간이 걸려서 방법을 찾게 되면서 해결을 할 수 있었습니다.
파일질라를 활용하여서 /opt/bitnami/apps/wordpress/conf 로 접속하신 후에 htaccess.conf 파일에서 우 클릭해서 보기/편집을 하시면 됩니다.
파일질라가 없을 경우 라이트세일 인스턴스 SSH로 연결하신 후에 sudo nano /opt/bitnami/apps/wordpress/conf/htaccess.conf 입력해서 파일을 여시면 됩니다.
htaccess.conf 파일을 열었다면 가장 상단에 SetEnvIf Authorization “(.*)” HTTP_AUTHORIZATION=$1 이라고 입력하신 후에 저장을 하시면 됩니다. 마지막으로 아파치를 재부팅하시면 오류가 해결되실 것입니다.
IP 주소 리다이렉트
www 붙은 주소는 입력을 하더라도 리다이렉트가 되어서 사용하는 주소로 접속되지만 IP 주소를 입력하게 되면 리다이렉트가 되지 않는 문제가 발생했습니다.
예전에 처음 워드프레스를 구성할 때 설정하였던 부분이지만 기억이 나지 않아서 검색을 통해서 방법을 찾았는데 .htaccess 리다이렉트만 추가하면 되는 문제였습니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$
RewriteRule ^(.*)$ [L,R=301]
</IfModule>
.htaccess 파일을 열어서 보게 되면 Begin WordPress 부분을 찾을 수 있을 것입니다. 그 부분 위에 코드를 복사해서 붙여 넣고 IP 주소와 자신의 사이트 주소를 바꿔서 입력해주시면 됩니다.
근데 추가를 한 이후로도 여전히 IP 주소로 접속하게 되면 리다이렉트가 되지 않고 있었습니다. 그래서 해당 문제에 대해서 다시 검색을 해보았는데 설정을 수정해야 제대로 작동한다는 것을 알게 되었습니다.
/opt/bitnami/apps/wordpress/conf/httpd-app.conf 에서 위에 표시한 설정을 All 으로 바꿔주게 되면 .htaccess 에 추가한 IP 주소 리다이렉트가 제대로 작동하게 됩니다.
※ 추가
httpd-app.conf 파일을 찾을 수 없거나 httpd.conf 에서 수정하더라도 리다이렉트가 되지 않는다면
/opt/bitnami/apache2/conf/vhosts/wordpress-https-vhost.conf 또는 /opt/bitnami/apache2/conf/vhosts/wordpress-vhost.conf
AllowOverride 항목을 All로 변경해주시면 됩니다.
지금까지 정리한 내용은 제가 설정하는 인스턴스 이전 과정으로 자신의 설정과 다른 부분이 있을 수 있습니다. 제가 겪은 부분들을 정리한 것이기 때문에 오류가 발생한 부분이나 놓친 부분이 있다면 설명을 보시고 설정을 통해서 PHP 업그레이드를 위한 인스턴스 이전을 편하게 해보시길 바랍니다.
▶ WP phpMyAdmin 활용한 오래된 게시물 삭제