WordPress 홈페이지가 40일 만에 복구
SSL 인증서가 만료된 이후 갱신이 되지 않았고, 그 이후에 LAMP 스택을 밀었다가 새로 버전업 해서 써 보려 했으나 지속적으로 문제가 생겨서 결국 새로 작업 했습니다.
wiki에 AWS 서버리스 301 핸즈온 자료 만들어 둔게 있는데, 이걸 Word 파일로 만들고 PDF로 재배포를 할까 고민하다가, 이 방법을 선택할 경우의 가장 큰 문제인, 소스코드 복사시 에러가 잦다는 점을 지울 수 없기 때문에 결국 사이트를 어떻게든 살리는 방향으로 진행!
결국 2019년 2월 9일 토요일 밤새 쪼물딱 거리다가 2월 10일 새벽 4시에 studydev.com 홈페이지를 띄우는 것까지 성공 시킴.
2월 10일 일요일 21시 이후에 confluence와 jira를 살리고, reverse proxy 설정까지 정상적으로 돌아가는 것을 확인함. AWS의 route 53에서 서브 도메인들을 줄줄이 등록시킴.
홈페이지는 다음과 같은 순서로 복구 하였습니다.
- 다른 폴더에 WordPress를 새로 설치해서 완전 새로운 DB를 만들었습니다.
- 새로 설치한 WordPress 홈페이지에 기존 DB 연결정보로 변경했습니다. 변경 직후 DB는 업데이트 해 주었습니다.
- 링크가 깨지는 부분이 발생(이미지, mp3)하여 강제로 URL을 모두 변경했습니다. (https -> http)
- httpd 2.4.38 버전과 PHP 7.2 버전으로 변경하고, vhost 설정을 새로 했습니다.
- Jira와 Confluence에 SSL 설정을 모두 삭제하고 링크를 수정했습니다.
- studydev.com 도메인에 대한 DNS 서버를 AWS Route 53으로 이전 했습니다.
작업 내역
DB 관련 수정 코드
혹시 모르기 때문에 일단 dump 뜨고 시작함.
UPDATE wp_options SET option_value = replace(option_value, 'https://www.studydev.com/', 'http://www.studydev.com/') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace(post_content, 'https://www.studydev.com/', 'http://www.studydev.com/');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://www.studydev.com/', 'http://www.studydev.com/');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'https://dev.studydev.com/', 'http://www.studydev.com/');
UPDATE wp_links SET link_url = replace(link_url, 'https://www.studydev.com/', 'http://www.studydev.com/');
UPDATE wp_comments SET comment_content = replace(comment_content , 'https://www.studydev.com/', 'http://www.studydev.com/');
VHOST 관련 수정 코드
내부 서버에 vhost 추가하는 건 딱히 어려운 문제가 아니지만, Confluence 같은 경우, 공동 작업을 위해서 웹 소켓을 함께 써야 하기 때문에 이런 설정이 필요합니다. (Jira는 그냥 proxypass만 설정하면 됩니다.)
<VirtualHost *:80>
ServerName www.studydev.com
DocumentRoot /var/www/wordpress
<Directory /var/www/wordpress>
Require all granted
</Directory>
ErrorLog /var/log/httpd/www.studydev.com-error.log
CustomLog /var/log/httpd/www.studydev.com-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName studydev.com
Redirect permanent / http://www.studydev.com/
</VirtualHost>
<VirtualHost *:80>
ServerName wiki.studydev.com
ProxyPreserveHost On
ProxyRequests Off
ProxyVia Block
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/synchrony
RewriteRule ^/(.*) http://wiki.studydev.com:8090/$1 [P]
<Proxy *>
Require all granted
</Proxy>
ProxyPass /synchrony http://wiki.studydev.com:8091/synchrony
<Location /synchrony>
Require all granted
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://wiki.studydev.com:8091%{REQUEST_URI} [P]
</Location>
ProxyPass / http://localhost:8090/
ProxyPassReverse / http://localhost:8090/
<Location />
Require all granted
Header always unset X-Frame-Options
</Location>
ErrorLog /var/log/httpd/wiki.studydev.com-error.log
CustomLog /var/log/httpd/wiki.studydev.com-access.log combined
</VirtualHost>
기타 수정
- Jira, Confluence의 https에 맞게 설정된 내용을 삭제 조치
- httpd 2.4.38로 올리면서 php 모듈을 로즈하지 않고, FastCGI Process Manager 로 변경하여 사용.
- httpd 2.4.38에서 php의 7.3 버전에서 mysql 모듈 관련 안정성 문제가 있다고 하여 PHP 7.2로 재설치함. (이건 설정 잘못일 수도 있음)
추가 고려해야하는 것들
- Bitbucket이 안 뜸. 다양한 방법을 다 시도했는데도 안 뜸. 그냥 재설치가 답일 것 같은데, 이게 급한 요소가 아니기 때문에 미룸. 아마 삭제할 것 같음
- git 을 쓰거나 CodeCommit을 쓰는 것을 추천 (jira에 연동 되는 부분은 아쉬울 수 있겠으나, 지금 그 정도 작업을 할 여유가 없음.
- SSL 인증서 에러 나서 동작 안되는 문제를 어떻게 할 것인가?
- Confluence와 JIra를 아예 AWS로 이전하고 싶은데, 메모리를 기본적으로 많이 요구하기 때문에 인스턴스 사이즈가 고민중. (1인용이기에 그냥 HP Gen8 서버 16GB 메모리를 좀 더 활용하고, 백업만 잘 받아 두는 걸로)