AWS 프리티어에 워드프레스를 2개 돌리려던 시도를 실패한 후 몇번 다시 해보려다가 어제 다시 시도해서 성공했다. 지난번 실패의 이유는 두번째 워드프레스(든 버츄얼호스트든) 홈 디렉토리를 기존 워드프레스 홈 디렉토리의 하부 디렉토리에 설정하지 않아서이다. 즉 2nd 워드프레스 폴더를 /opt/bitnami/apps/wordpress/2nd 로 지정하려고 했었는데 기존 /opt/bitnami/apps/wordpress/htdocs 아래인 /opt/bitnami/wordpress/2nd 로 사용해야 했다. 처음 시도와 다르게 이번에는 별도의 DB생성없이 기존 DB를 그대로 이용하여 설치하였다.
- https 리다이렉트를 위해 설정한 부분 주석처리 /opt/bitnami/apache2/conf/bitnami/bitnami.conf
#RewriteEngine On
#RewriteCond %{HTTPS} !=on
#RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
#RewriteRule ^/(.*) https://example.com/$1 [R,L] - virtual host 설정 (Help setting up apache2 virtual host config for bitnami wordpress for two sites (Not multisite) 참조)
- /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf 에서 아래 행 추가 (또는 주석 제거)
- 2번째 도메인의 DNS 설정에서 기본도메인과 WWW 도메인을 AWS서버 IP를 향하도록 지정
- 워드프레스 최신버젼을 다운받아서 이 폴더에 올림.
- 원래 워드프레스 홈 디렉토리에 있던 wp-config.php 파일을 2nd 디렉토리로 복사 ( 워드프레스 설정파일 값 세팅하기 ( WordPress wp-config.php) 참조)
- DB의 prefix 를 원래 워드프래스와 다르게 지정
- https://api.wordpress.org/secret-key/1.1/salt/ 에서 생성된 키를 wp-config.php 에서 해당 부분 찾아 대체.
- 아파치 재시동
- 2nd 워드프레스 디렉토리를 웹브라우저로 접근하여 워드프레스 설치
- 워드프레스 기본 설치 페이지가 나온 것을 확인 후 SSL 키 생성을 위해 아파치 중지
- 키 생성
- /opt/bitnami/letsencrypt/certificate 에 두번째 도메인의 .crt와 .key 등이 생성되었는지 확인
- virtual host 설정에서 https 설정하도록 함. 아래 설정한 디렉토리에 맞게 키 파일 이동
- 아파치 시작
/opt/bitnami/apps/wordpress/conf/httpd-vhost.conf
<VirtualHost *:80>
ServerName hof.pe.kr
ServerAlias www.hof.pe.kr
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
<VirtualHost *:80>
ServerName 2번째도메인.kr
ServerAlias www.2번째도메인.kr
DocumentRoot "/opt/bitnami/wordpress/2nd"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
Include "/opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf"
/opt/bitnami/apps/wordpress/htdocs 아래에 2nd 폴더 생성
/opt/bitnami/wordpress/2nd
$table_prefix = 'wp2_';
sudo /opt/bitnami/ctlscript.sh restart apache
여기부터는 Generate And Install A Let’s Encrypt SSL Certificate For A Bitnami Application 참조
sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="www.DOMAIN" --path="/opt/bitnami/letsencrypt" run
원래 있던 *80 설정 아래에 각각 아래 내용을 도메인에 맞도록 추가
<VirtualHost *:443>
ServerName hof.pe.kr
ServerAlias www.hof.pe.kr
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
SSLEngine on
SSLCertificateFile "/opt/bitnami/apps/wordpress/conf/certs/hof.pe.kr.crt"
SSLCertificateKeyFile "/opt/bitnami/apps/wordpress/conf/certs/hof.pe.kr.key"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
2번째 도메인용
<VirtualHost *:443>
ServerName 2번째도메인
ServerAlias www.2번째도메인
DocumentRoot "/opt/bitnami/wordpress/2nd"
SSLEngine on
SSLCertificateFile "/opt/bitnami/apps/wordpress/conf/certs/2번째도메인.crt"
SSLCertificateKeyFile "/opt/bitnami/apps/wordpress/conf/certs/2번째도메인.key"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
sudo /opt/bitnami/ctlscript.sh start
남은 과제
hof.pe.kr 과 2번째 도메인으로 들어오는 http 접속을 https 로 강제 리다이렉션이 잘 안됨. 도메인 하나일때와 버츄얼 호스팅일때 설정 방법이 다른지 확인.–> 해결. /opt/bitnami/apache2/conf/bitnami/bitnami.conf 에 있던 리다이렉션 설정을 /opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf 에서 지정 (via Force HTTPS Redirection With Apache )- SSL 인증서를 임의로 옮긴 후 버츄얼호스트에서 경로를 지정해주긴 했는데 나중에 수동이든 자동이든 갱신하고나서 또 매번 이동해줘야하는지 아니면 갱신 스크립트가 지정하는 폴더로 이동시키고 그 위치를 버츄얼 호스트에서 지정해줘야 할지 확인해야 함.
기타 설정
- pretty permalink를 위해 http://recreationcoach.kr/&post_id%/로 지정했고 아래 내용을 /opt/bitnami/apps/wordpress/conf/htaccess.conf 에 등록했다. (그런데 hof.pe.kr 은 이 방식 주소가 예전부터 써오던것을 aws로 이사온 뒤로도 자연스럽게 되니 갸우뚱)
<Directory "/opt/bitnami/wordpress/2nd">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
</Directory>