AWS lightsail 에서 40 GB 인스턴스에 워드프레스를 추가해보았습니다. (기본 1개 + 추가 1개 = 총 2개 워드프레스 운영) 즉 워드프레스 2개가 40 GB 용량을 공유하는 셈입니다. 가상호스트를 사용하면 가능합니다.
*혹시 몰라서 작업 전 AWS lightsail 의 백업기능인 스냅샷을 하나 저장하고 시작했습니다. (혹시 서버 망칠까봐 ㅎ)
추가할 워드프레스 폴더 만들기
- 기본 워드프레스 경로 : /opt/bitnami/wordpress
- 추가할 워드프레스 설치 경로 : /opt/bitnami/wordpress2
sudo mkdir /opt/bitnami/wordpress2
sudo chown -R bitnami:daemon /opt/bitnami/wordpress2
추가한 폴더에 워드프레스 파일 다운로드
cd /opt/bitnami/wordpress2
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz --strip-components=1
sudo rm latest.tar.gz
폴더 권한 설정
sudo chown -R daemon:daemon /opt/bitnami/wordpress2
sudo chmod -R 775 /opt/bitnami/wordpress2
새로운 데이터베이스 만들기
패스워드 알아내는 방법 (먼저 할일, 패스워드를 다른 곳에 적어둘 것)
sudo cat /home/bitnami/bitnami_application_password
아래 명령어로 접근 (패스워드 입력해야 함, 아까 적어놓은 패스워드 복붙)
sudo /opt/bitnami/mariadb/bin/mysql -u root -p
참고로 패스워드 입력시에는 커서가 움직이지 않음. (입력되고 있는 것임)
MariaDB 접속 성공시 아래 화면이 뜸.
Welcome to the MariaDB monitor.
MariaDB [(none)]>
순서대로 아래 명령어를 한줄씩 입력 (‘비밀번호 입력’ 글자 대신 ‘abcd123’ 같이 실제 설정하고자 하는 비번 넣어야 함)
CREATE DATABASE drdb DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'druser'@'localhost' IDENTIFIED BY '비밀번호 입력';
GRANT ALL PRIVILEGES ON drdb.* TO 'druser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
drdb, druser 는 임의로 이름을 정한 것임.
wp-config.php 수정
나노 편집기로 들어감. (아래 내용으로 수정)
sudo nano /opt/bitnami/wordpress2/wp-config.php
나노 편집기로 들어갔을 때 내용이 없으면 샘플파일 복사
cd /opt/bitnami/wordpress2
sudo cp wp-config-sample.php wp-config.php
그리고 다시 나노 편집기로 열어보기
sudo nano wp-config.php
아래 부분을 찾아서 아래 문구로 수정해 줄 것
define('DB_NAME', 'drdb');
define('DB_USER', 'druser');
define('DB_PASSWORD', '아까 정한 비밀번호');
define('DB_HOST', 'localhost');
나노 편집기는 편집 후 저장이 Ctrl+O 한 후 엔터, 나올때는 Ctrl+X
권한 설정
sudo chown daemon:daemon /opt/bitnami/wordpress_dr/wp-config.php
sudo chmod 640 /opt/bitnami/wordpress_dr/wp-config.php
Apache 재시작
sudo /opt/bitnami/ctlscript.sh restart apache
도메인 설정
도메인 구입한 곳에서 도메인 설정해야 함.
- 타입 : A
- 호스트 : @
- 값(IP) : Lightsail 의 public IP 주소
- TTL : 기본
- 타입 : A
- 호스트 : www
- 값(IP) : Lightsail 의 public IP 주소
- TTL : 기본
브라우저 창에 도메인 입력하면 워드프레스 설치 화면이 나옴
HTTPS 설정 (인증서)
sudo /opt/bitnami/bncert-tool
- Domains to enable SSL [example.com]: (추가하고자 하는 도메인) abc.co.kr
- Enable HTTP to HTTPS redirection [Y/n]: Y
- Enable non-www to www redirection [y/N]: N
- Do you agree to these changes? [Y/n]: Y 등등의 질문들 답하면 인증서 설치됨.
VirtualHost 파일 생성
이 부분에서 매우 애를 먹었으나, 최종 완성 파일 내용을 적어봅니다. (이렇게 하니까 됩니다.)
기본 워드프레스용 vhost 파일(예시) [도메인 : 123.co.kr]
<VirtualHost *:80>
ServerName 123.co.kr
ServerAlias www.123.co.kr
DocumentRoot /opt/bitnami/wordpress
# BEGIN: Configuration for letsencrypt
Include "/opt/bitnami/apps/letsencrypt/conf/httpd-prefix.conf"
# END: Configuration for letsencrypt
# BEGIN: Support domain renewal when using mod_proxy without Location
<IfModule mod_proxy.c>
ProxyPass /.well-known !
</IfModule>
# END: Support domain renewal when using mod_proxy without Location
# BEGIN: Redirect HTTP to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/\.well-known
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R=301,L]
# END: Redirect HTTP to HTTPS
# BEGIN: Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# END: Redirect www to non-www
<Directory "/opt/bitnami/wordpress">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride None
Require all granted
# BEGIN WordPress fix for plugins and themes
RewriteEngine On
RewriteRule ^bitnami/wordpress(/.*) $1 [L]
# END WordPress fix for plugins and themes
# BEGIN WordPress core rules
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress core rules
</Directory>
Include "/opt/bitnami/apache/conf/vhosts/htaccess/wordpress-htaccess.conf"
# BEGIN: Support domain renewal when using mod_proxy within Location
<Location /.well-known>
<IfModule mod_proxy.c>
ProxyPass !
</IfModule>
</Location>
# END: Support domain renewal when using mod_proxy within Location
</VirtualHost>
<VirtualHost *:443>
ServerName 123.co.kr
ServerAlias www.123.co.kr
DocumentRoot /opt/bitnami/wordpress
SSLEngine on
SSLCertificateFile "/opt/bitnami/letsencrypt/certificates/123.co.kr.crt"
SSLCertificateKeyFile "/opt/bitnami/letsencrypt/certificates/123.co.kr.key"
SSLCertificateChainFile "/opt/bitnami/letsencrypt/certificates/123.co.kr.issuer.crt"
# BEGIN: Redirect www to non-www (HTTPS)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# END: Redirect www to non-www
<Directory "/opt/bitnami/wordpress">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride None
Require all granted
# BEGIN WordPress fix for plugins and themes
RewriteEngine On
RewriteRule ^bitnami/wordpress(/.*) $1 [L]
# END WordPress fix for plugins and themes
# BEGIN WordPress core rules
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress core rules
</Directory>
Include "/opt/bitnami/apache/conf/vhosts/htaccess/wordpress-htaccess.conf"
# BEGIN: Support domain renewal when using mod_proxy within Location
<Location /.well-known>
<IfModule mod_proxy.c>
ProxyPass !
</IfModule>
</Location>
# END: Support domain renewal when using mod_proxy within Location
</VirtualHost>
추가 워드프레스용 vhost 파일 (예시) [도메인 : abc.co.kr]
<VirtualHost *:80>
ServerName abc.co.kr
ServerAlias www.abc.co.kr
DocumentRoot /opt/bitnami/wordpress2
# BEGIN: Configuration for letsencrypt
Include "/opt/bitnami/apps/letsencrypt/conf/httpd-prefix.conf"
# END: Configuration for letsencrypt
# BEGIN: Support domain renewal when using mod_proxy without Location
<IfModule mod_proxy.c>
ProxyPass /.well-known !
</IfModule>
# END: Support domain renewal when using mod_proxy without Location
# BEGIN: Enable HTTP to HTTPS redirection
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^localhost
RewriteCond %{HTTP_HOST} !^[0-9]+.[0-9]+.[0-9]+.[0-9]+(:[0-9]+)?$
RewriteCond %{REQUEST_URI} !^/\.well-known
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
# END: Enable HTTP to HTTPS redirection
# BEGIN: Enable www to non-www redirection
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^localhost
RewriteCond %{HTTP_HOST} !^[0-9]+.[0-9]+.[0-9]+.[0-9]+(:[0-9]+)?$
RewriteCond %{REQUEST_URI} !^/\.well-known
RewriteRule ^(.*)$ https://%1$1 [R=permanent,L]
# END: Enable www to non-www redirection
<Directory "/opt/bitnami/wordpress_dr">
AllowOverride All
Require all granted
</Directory>
# BEGIN: Support domain renewal when using mod_proxy within Location
<Location /.well-known>
<IfModule mod_proxy.c>
ProxyPass !
</IfModule>
</Location>
# END: Support domain renewal when using mod_proxy within Location
</VirtualHost>
<VirtualHost *:443>
ServerName abc.co.kr
ServerAlias www.abc.co.kr
DocumentRoot /opt/bitnami/wordpress2
SSLEngine on
SSLCertificateFile "/opt/bitnami/letsencrypt/certificates/abc.co.kr.crt"
SSLCertificateKeyFile "/opt/bitnami/letsencrypt/certificates/abc.co.kr.key"
SSLCertificateChainFile "/opt/bitnami/letsencrypt/certificates/abc.co.kr.issuer.crt"
# BEGIN: Enable www to non-www redirection
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=permanent,L]
# END: Enable www to non-www redirection
<Directory "/opt/bitnami/wordpress2">
AllowOverride All
Require all granted
</Directory>
# Let's Encrypt renewal support
<Location /.well-known>
<IfModule mod_proxy.c>
ProxyPass !
</IfModule>
</Location>
# Optional: include WordPress htaccess rules
Include "/opt/bitnami/apache/conf/vhosts/htaccess/wordpress-htaccess.conf"
</VirtualHost>
vHost 파일 각각 설정 후 Apache 재시작
sudo /opt/bitnami/ctlscript.sh restart apache
이렇게 하니까 123.co.kr, abc.co.kr 도메인 각각 워드프레스가 동작하였습니다. (https 인증서도 제대로 작동)