콘텐츠로 건너뛰기

AWS 인스턴스 하나에 워드프레스 여러 개 설치하기-설치부터 SSL 설정까지 하는 완벽가이드 ver. 2023

AWS 인스턴스 하나에 워드프레스 여러 개 설치하기- 하나의 AWS 인스턴스에 여러 도메인을 연결해서 워드프레스를 추가 설치해서 운영하는 방법에 대한 완벽한 솔루션을 제공합니다. 더 이상 헤매지 마세요. 이 글 하나로 종결 합니다.

SSH에서 워드프레스 설치하기

SSH(Xshell 이나 Termius등의 프로그램 이용)에서 워드프레를 추가할 폴더로 이동합니다. 첫 번째 워드프레는 /var/www/html에 설치되어 있는 경우가 많습니다. 아래 처럼 폴더를 이동합니다.

cd /var/www

다음의 명령어로 한글 버전의 워드프레스 최신 버전을 설치할 수 있습니다.

wget https://ko.wordpress.org/latest-ko_KR.tar.gz

다음의 명령어로 압축을 풉니다.

tar -xzf latest-ko_KR.tar.gz

새롭게 설치한 워드프레스는 wordpress라는 폴더에 설치되어 있습니다. 저는 therecovery_com이라는 폴더 이름으로 새 폴더를 추가했습니다. 이건 예시입니다. 본인이 설정한 폴더 이름을 해당 자리에 입력해야 합니다.

mv wordpress therecoveryall_com(추가한 워드프레스의 폴더 이름)

폴더 내용을 확인할 때는 ls를 입력해서 해당 폴더의 위치로 이동한 다음에 ls를 입력하면 해당 폴더의 내용을 확인 할 수 있습니다.

ls

추가 워드프레스 도메인 연결

아래 처럼 로그 파일을 넣을 폴더를 만들고 권한을 설정합니다.

sudo mkdir -p /var/log/apache2/

sudo chown -R ec2-user:apache /var/log/apache2/

아래의 명령어를 순차적으로 입력해서 설정 파일을 수정할 경로로 이동합니다.

cd /etc/httpd

cd conf.d

아래는 therecoveryall.com은 AWS의 ip에 추가 연결한 도메인 입니다. 본인이 새롭게 연결한 도메인 명을 입력해야 합니다.

예시: sudo vi therecoveryall.com.conf

sudo vi 추가한 도메인명.conf

1) 서브 도메인이 아닌 새로운 도메인을 연결한 경우

아래 그림 처럼 기존 도메인 외에 추가된 도메인 두개가 확입됩니다. 두 도메인 다 aws 인스턴스 ip에 연결되어 있습니다.

AWS 인스턴스 하나에 워드프레스 여러 개 운영하기

2) 서브 도메인을 도메인을 연결한 경우

도메인을 추가한 경우가 아니라 기존 도메인에 서브 도메인을 추가한 경우입니다.

AWS 인스턴스 하나에 워드프레스 여러 개 운영하기

추가 도메인 연결되었고 서브 도메인이 잘 생성되었다면 아래 명령어를 입력해서 virtual host의 설정으로 이동합니다.

예시: sudo vi therecoveryall.com.conf

sudo vi 추가한 도메인명.conf

설정 파일이 열리면 i 를 눌러서 아래처럼 설정합니다.


추가 도메인 Virtual Host 설정하기

<VirtualHost *:80>
ServerAdmin 이메일주소 ServerName 추가 도메인명
ServerAlias www.추가 도메인명 .com
DocumentRoot /var/www/새로운 워드프레스가 설치된 폴더명 ErrorLog /var/log/apache2/추가 도메인명.com-error.log
CustomLog /var/log/apache2/추가 도메인명.com-access.log combined </VirtualHost>

설정이 끝났으면 esc 와 :wq (콜로 w q)를 눌러서 virtual host 설정 화면에서 빠져 나옵니다.

아래의 명령어를 입력해서 apache 서버를 재 시작 합니다.

sudo systemctl restart httpd

위의 설정으로 기존의 워드프레스도 새로운 도메인으로 연결되는 경우에는 아래처럼 기존 워드프레스 도메인에 대한 virtual host 설정을 다시 해주어야 합니다.

sudo vi 기존 도메인명.conf

<VirtualHost *:80>
ServerAdmin 이메일주소 ServerName 기존 도메인명
ServerAlias www.기존 도메인명 .com
DocumentRoot /var/www/기존 워드프레스가 설치된 폴더명 ErrorLog /var/log/apache2/기존 도메인명.com-error.log
CustomLog /var/log/apache2/기존 도메인명.com-access.log combined </VirtualHost>

설정이 끝났으면 esc 와 :wq (콜로 w q)를 눌러서 virtual host 설정 화면에서 빠져 나옵니다.

추가한 워드프레스에 데이터 베이스 연결하기

기존 도메인명/phpMyAdimin 에 접속해서 새로운 데이타베이스를 추가합니다. 데이터베이스의 이름은 추가한 워드프레스를 설치할 때 필요하기 때문에 반드시 기록해 두어야 합니다.

db명: 예시) therecoveryall_com 형식 utf8mb4_general_ci

추가한 도메인 SSL 설정

[인증서 받기 전 정지 부터 시켜야 됨]

sudo systemctl stop httpd

추가 도메인 인증서 발급

아래의 명령어를 입력한 이후에 오타가 날 수 있으니 도메인을 복사해서 붙여 넣기 합니다.

certbot certonly --standalone

추가한 도메인.com

certbot certonly --standalone

www.추가한 도메인.com

인증서를 발급 받았다면 아래 명령어를 입력해서 인증서 설정 화면으로 넘어 갑니다.

sudo vi /etc/httpd/conf.d/ssl.conf

마찬가지로 i 를 누른 뒤에 편집할 수 있습니다. 아래처럼 편집합니다.

추가 도메인 인증서 Virtual Host 설정  

<VirtualHost *:443>                                                                                                                                  DocumentRoot “/var/www/새로운폴더”                                                                                                        ServerName 도메인명.com                                                                                                                            SSLEngine on                                                                                                                                      SSLCertificateFile /etc/letsencrypt/live/도메인명.com/cert.pem                                                        SSLCertificateKeyFile /etc/letsencrypt/live/도메인명.com/privkey.pem                                          SSLCertificateChainFile /etc/letsencrypt/live/도메인명.com/chain.pem                                                   </VirtualHost>

<VirtualHost *:443>                                                                                                                                    DocumentRoot “/var/www/새로운폴더l”                                                                                                                ServerName www.도메인명.com                                                                                                                        SSLEngine on                                                                                                                                          SSLCertificateFile /etc/letsencrypt/live/www.도메인명.com/cert.pem                                                  SSLCertificateKeyFile /etc/letsencrypt/live/www.도메인명.com/privkey.pem                                            SSLCertificateChainFile /etc/letsencrypt/live/www.도메인명.com/chain.pem                                          </VirtualHost>

<VirtualHost *:80>                                                                                                                                        ServerName 도메인명.com                                                                                                                        ServerAlias www.도메인명.com                                                                                                                      Redirect permanent / https://도메인명.com/                                                                                                </VirtualHost>

설정이 끝났으면 esc 와 :wq (콜로 w q)를 눌러서 virtual host 설정 화면에서 빠져 나옵니다.

최초 워드프레스에 대한 ssl 인증서 발급은 다음을 참고 하길 바랍니다 => Amazon Linux 2023 SSL 인증서 발급-SSL(Let’s encrypt) 적용 가장 쉬운 완벽 가이드

서브 도메인일 경우의 SSL 발급

서브도메인 경우 다음과 같이 해도 됩니다. 혹시나 오류가 나면 기존 처럼 certbot certonly --standalone 를 입력해서 도메인을 추가합니다. 아래와 같은 방식으로 인증서를 동시에 받을 수 있습니다. 아래의 vietnam, thailand, philippines. japan 등은 예시이면 서브 도메인은 Namecheap등 도메인을 구매한 사이트에서 생성되어 있어야 합니다.

서브 도메인 인증서 동시에 받기

sudo certbot certonly –standalone -d vietnam.기존 도메인명.net
sudo certbot certonly –standalone -d thailand.기존 도메인명.net
sudo certbot certonly –standalone -d philippines.기존 도메인명.net
sudo certbot certonly –standalone -d japan.기존 도메인명.net

인증서 받은 도메인 HTTPS 설정에 넣기 

sudo vi /etc/httpd/conf.d/ssl.conf

아래는 기존도메인이 tripjoa이고 서브도메인이 vietnam인 경우의 예시입니다. tripjoa_vietnam는 해당 워드프레스가 설치된 폴더입니다. 아래는 예시이고 해당 자리에 자신이 운영하는 워드프레스의 도메인과 폴더이름을 넣어야 합니다. 아래처럼 서브도메인으로 추가한 워드프레스를 모두 설정해 주어야 합니다. 

<VirtualHost *:80>

    ServerName 서브도메인.theleisureall.com

    Redirect permanent / https://서브도메인.theleisureall.com/

</VirtualHost>

<VirtualHost *:443>

   DocumentRoot “/var/www/폴더명”

   ServerName 서브도메인.theleisureall.com

   SSLEngine on

   SSLCertificateFile /etc/letsencrypt/live/서브도메인.theleisureall.com/cert.pem

   SSLCertificateKeyFile /etc/letsencrypt/live/서브도메인.theleisureall.com/privkey.pem

   SSLCertificateChainFile /etc/letsencrypt/live/서브도메인.theleisureall.com/chain.pem

</VirtualHost>

설정이 끝났으면 esc 와 :wq (콜로 w q)를 눌러서 virtual host 설정 화면에서 빠져 나옵니다.

SSL 자동갱신 설정 방법

cronie-noanacron 패키지 설치가 이미 설치되어 있으면 crontab 파일 편집 부터 진행하면 됩니다.

cronie-noanacron 패키지 설치:

sudo dnf install cronie-noanacron

설명: cronie-noanacron 패키지를 설치합니다. 이 패키지는 cron 작업 스케쥴러와 관련된 것으로, 주기적인 작업을 자동으로 실행하기 위해 사용됩니다. Is this ok 를 물으면 [y/N] y를 선택합니다.

crontab 파일 편집:

sudo vi /etc/crontab

설명: 시스템의 crontab 파일을 열어 편집합니다. crontab은 cron 작업 스케쥴러를 위한 설정 파일로, 이 파일을 통해 주기적으로 실행할 작업을 설정할 수 있습니다.

자동 갱신 설정 추가:

30 1 * * 2 root /usr/bin/certbot renew --post-hook "systemctl reload httpd"

설정이 완료되면 esc 를 누른 후 :wq(콜론 wq) 를 눌러서 설정 파일에서 빠져 나옵니다.

설명: 매주 화요일 새벽 1시 30분에 인증서 갱신을 시도하는 작업을 추가합니다.

  • 30 1 * * 2: 이 부분은 cron의 시간 및 날짜 표현 방식으로, 매주 화요일 새벽 1시 30분을 의미합니다.
  • root: 작업을 실행할 사용자를 의미합니다. 여기서는 root 사용자로 설정되어 있습니다.
  • /usr/bin/certbot renewcertbot을 사용하여 인증서 갱신을 시도합니다.
  • --post-hook "systemctl reload httpd": 인증서 갱신 후에 실행될 명령입니다. 여기서는 Apache 서버의 설정을 다시 불러오는 reload 명령을 실행하도록 설정되어 있습니다.

추가 사이트 (추가 폴더)의 자동 갱신 설정 추가

sudo vi /etc/crontab

아래 처럼  매월 1일 새벽 3시에 SSL 인증서를 갱신하도록 설정 합니다. 밑에 그림처럼 라인을 맞춰 주세요. 제가 추가한 폴더 therecoveryall_com 자리에 추가 워드프레스가 설치된 폴더명을 적어 주세요.

0 3 1 * * root certbot renew --webroot -w /var/www/추가 워드프레스가 설치된 폴더명 --post-hook "systemctl reload apache2"

ssl 자동 갱신 추가 폴더 설정

설정이 완료되면 esc 를 누른 후 :wq (콜론 w q) 를 눌러서 빠져 나옵니다.

아래의 명령어로 변경사항을 적용하기 위해 cron 서비스를 재 시작합니다.

sudo systemctl restart crond

AWS 인스턴스 하나에 워드프레스 여러 개 설치 마지막 작업: /var/www 및 이하 모든 디렉터리에 읽기, 쓰기, 실행 권한 설정

1) 2775(특수권한, 소유자권한, 그룹권한, 다른사용자권한)

sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \; 이 설정을  다음의 설정으로 더 빠르게 실행할 수 있습니다. 

sudo chmod 2775 /var/www

find /var/www -type d -print0 | sudo xargs -0 chmod 2775

2) 0664 (특수권한, 소유자권한, 그룹권한, 다른사용자권한)

find /var/www -type f -exec sudo chmod 0664 {} \;이 설정을  다음의 설정으로 더 빠르게 실행할 수 있습니다. 

find /var/www -type f -print0 | sudo xargs -0 chmod 0664

3) -exec와 xargs의 차이점

find /var/www/html -type d -exec sudo chmod 2775 {} \;와 find /var/www/html -type d -print0 | xargs -0 sudo chmod 2775 두 명령어는 기본적으로 같은 작업을 수행하며, 둘 다 /var/www/html 디렉토리와 그 하위 디렉토리에 2775 권한을 설정합니다. 그러나 두 명령어는 내부적으로 다르게 작동합니다:

  1. -exec 사용:
    • find가 디렉토리 하나를 찾을 때마다 chmod 2775 명령을 새로 실행합니다.
    • 이 경우에는 find가 찾은 디렉토리 수 만큼 chmod 프로세스가 실행됩니다.
    • 이러한 방식은 비효율적일 수 있습니다.
  2. xargs 사용:
    • find 명령은 디렉토리 목록을 생성하고, 이 목록은 xargs 명령으로 전달됩니다.
    • xargs는 받은 목록을 chmod 2775 명령에 최대한 효율적으로 넘겨 줍니다. 즉, 가능한 적은 수의 chmod 프로세스로 같은 작업을 수행합니다.
    • 이러한 방식은 일반적으로 더 빠르고 효율적입니다.

-print0과 -0 옵션은 파일이나 디렉토리 이름에 공백, 줄바꿈, 특수문자가 포함되어 있을 경우에도 안전하게 처리할 수 있게 해줍니다. 결론적으로, xargs를 사용하는 방법이 대체로 더 빠르고 효율적입니다.

아래의 추가된 링크에서  워드프레스에서 고유 주소 글 이름 변경 후 오류해결 과정도 확인 할 수 있습니다. 

워드프레스 고유주소 글이름 변경 404 오류 해결 + 플러그인 설치 설정

여기까지의 설정은 많이 힘들고 복잡한 과정입니다. 작업하느라 고생하셨고 혹시 잘 안되는 부분 있으시면 댓글로 달아주세요. 빠르게 확인해서 알려드리거나 잘못된 부분은 수정하겠습니다. 

-학습자가 똑똑해지는 스마트 교육
스마트 교육의 정보를 공유합니다.
강의요청 jey78v@naver.com

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다