하나의 서버에 두 개의 워드프레스 사이트에 대한 HTTPS 세팅하기(인증서 발급 및 아파치 443 포트설정)

25

이제 연재작 마지막으로 두번째 워드프레스 블로그를 위한 HTTPS 접속을 위해서 첫 번째에서 했던 것처럼 두 번째 도메인의 SSL 인증서도 발급받고 443 포트를 설정해서 한 서버로 들어오는 두 도메인의 HTTPS 접속에대해 워드프레스 루트폴더를 적절히 나눠줄 것입니다.

두 번째 도메인 Let’s Encrypt 인증서 발급

첫번째 블로그를 만들때 다운받아둔 certbot-auto 프로그램을 이용할텐데요. bitnami 사용자 홈으로 이동하기위해서 cd ~를 입력하고 ls명령어를 넣어보면 certbot-auto 파일이 그대로 있을 겁니다. 삭제하지 않으셨길 바랍니다.

cd ~
ls

certbot-auto 프로그램은 사용자 홈폴더에 있습니다

 

certbot-auto 파일은 그대로 있는 것을 확인했으니 다음단계로  ‘.well-known 디렉토리(폴더) 와 .htaccess 생성‘ 글에서 했던 것처럼 두 번째 워드프레스 루트폴더에도 .well-known 폴더를 생성하고 그안에 .htaccess 파일을 만들어서 파일내용을 작성해줍니다.

저는 SFTP 클라이언트를 이용해서 만들고 수정하겠습니다. 아래처럼 만들었습니다:

.welknown 폴더를 만들어 그안에 .htacess 파일을 만든다

이제 이 .htaccess 파일을 열어 아래 내용을 추가해주고 저장합니다. 저는 Atom 편집기를 이용했습니다.

RewriteEngine On
Satisfy Any

 

이제 두번째 도메인에대한 HTTPS 인증서를 받아봅시다.

우리는 현재 사용자 홈폴더(~)에 위치하고 있고 certbot-auto 또한 사용자 홈폴더에 있습니다. 그래서 현재위치에있는 프로그램을 실행하라는 의미로 앞에 ./을 붙여서 아래같은 구조로 실행시켜주도록 합니다.

./certbot-auto certonly --webroot -w /두번째/워드프레스/최상위폴더/경로 -d 두번째도메인이름

저는 테스트용 두번째 도메인을 second.starry.info로 사용했으므로 아래처럼 입력하고 엔터키를 눌렀습니다. http://는 빼고 입력해주세요.  www 서브도메인을 메인으로 쓰신다면 도메인이름앞에 www.을 붙여주세요.

./certbot-auto certonly --webroot -w /opt/bitnami/apps/wordpress/second-wordpress -d second.starry.info

서브도메인에 대한 인증서 발급

 

두 번째 사이트 인증서 발급은 아래처럼 곧바로 Congratulations!가 나오고 .pem파일이 저장된 위치를 알려줄겁니다.

인증서 발급 완료 메시지

 

위에 나온 것처럼 /etc/letsencrypt/live/두번째_도메인_이름으로된_폴더 라는 폴더안에 인증서파일인 pem파일이 저장되어있습니다.아직은 HTTPS로 접속할 수 없습니다. HTTPS로 접속했을 때도 어떤 도메인인지에 따라 어느 워드프레스의 루트폴더로 넘겨줄지 설정해야합니다.

접속해오는 도메인별로 HTTPS 루트폴더 지정해주기

bitnami.conf 파일을 다시 한번 더 수정해줄 차례입니다.

bitnami.conf 파일위치
/opt/bitnami/apache2/conf/bitnami/

bitnami.conf 파일 내용의 아래쪽을 보면 아래 스크린샷처럼 첫번째 사이트의 HTTPS 설정했던게 있을 건데요. 이번엔 이부분을 모두 삭제하고 다시 작성하겠습니다. 아래에서 녹색네모 표시해둔 곳은 지난번에 첫번째 워드프레스의 SSL 인증서파일을 지정했던 내용이니 삭제전에 메모장에 적어두길 추천합니다.

443 포트 설정 삭제

<VirtualHost _default_:443> 으로 시작해서 </VirtualHost>로 끝나는 부분 까지 삭제해줍니다.

그리고 삭제했던 부분에 아래와 같은 형태로 작성해줍니다.

########## 443 포트 설정
#  ————————-첫 번째 사이트
<VirtualHost _default_:443>
ServerName 첫번째도메인주소
ServerAlias www.첫번째도메인주소
DocumentRoot /opt/bitnami/apps/wordpress/htdocs/
SSLEngine on
# Let’s Encrypt
SSLCertificateFile /etc/letsencrypt/live/번째도메인이름으로된폴더명/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/첫번째도메인이름으로된폴더명/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/첫번째도메인이름으로된폴더명/fullchain.pem
<Directory “/opt/bitnami/apache2/htdocs“>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
  # Bitnami applications installed with a prefix URL (default)
  Include “/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf”
</VirtualHost>
#  ————————-두 번째 사이트
<VirtualHost _default_:443>
ServerName 두번째도메인주소
DocumentRoot /opt/bitnami/apps/wordpress/두번째워드프레스루트폴더/
SSLEngine on
# Let’s Encrypt
SSLCertificateFile /etc/letsencrypt/live/두번째도메인이름으로된폴더명/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/두번째도메인이름으로된폴더명/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/두번째도메인이름으로된폴더명/fullchain.pem
<Directory “/opt/bitnami/apps/wordpress/두번째워드프레스루트폴더/”>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
  # Bitnami applications installed with a prefix URL (default)
  Include “/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf”
</VirtualHost>
########## 443 포트 설정 끝

 

중요: 자신의 도메인주소와 워드프레스 루트폴더 경로에 맞춰서 작성해주면 되는데요. 두번째 도메인주소를 서브도메인이 아닌  일반 메인도메인으로 사용하는 경우 두번째 사이트 도메인주소 설정을 아래처럼 두 줄로 사용하시기 바랍니다.

ServerName 두번째도메인주소

ServerAlias www.두번째도메인주소

 제 경우 두번째 도메인이 서브도메일 뿐이라서 아래처럼 해당부분을 한 줄만 설정했습니다.

2개 도메인에 대한 443포트 설정

자신의 것과 맞게 수정했다면 저장하고 닫습니다.

HTTPS 리다이렉팅 다시 켜주기

SSL을 발급받기 전 이전 글에서 꺼뒀던 HTTPS 리다이렉팅 설정을 다시 켜줄 차례입니다.

httpd-prefix.conf 파일 위치
/opt/bitnami/apps/wordpress/conf/httpd-prefix.conf

 

아래그림에 나온 HTTPS 리다이렉팅 설정 2줄 앞에 #기호로 주석처리 했던걸 #을 지워서 다시 동작하도록 만들고 저장 후 닫습니다.

HTTPS 리다이렉팅 설정 줄 주석처리를 다시 해제한다

wp-config.php 에서 https 로 강제 설정하기

이번엔 두 번째 워드프레스 루트폴더에 있는 워드프레스 설정파일 wp-config.php를 다시 열어서 수정해줍니다.

/opt/bitnami/apps/wordpress/두번째WP루트폴더/wp-config.php

두번째 워드프레스 wp-config.php 파일 위치

 

wp-config.php 파일 사이트URL 설정 줄

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');

define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');

위 두줄처럼 앞서 http://로 바꿨던 부분을 https://로 다시 되돌려 줍니다.

 

아래명령어를 넣어서 아파치 웹서버를 재시작 해줍니다.

sudo /opt/bitnami/ctlscript.sh restart apache

참고: 아파치를 재시작해보았을 때 Syntax OK 메시지가 안나오고 Syntax error 같은 메시지가 나온다면 지적된 라인번호의 코드를 확인해보세요. 복사 후 붙이기를 할 때 큰따옴표나 작은따옴표가 모양이 좀 다른 따옴표로 변경되어 붙여넣어졌을 수도 있습니다. 맥컴퓨터의 경우 환경설정에 스마트 인용부호라는 것때문에 그러한 현상이 일어나곤 합니다. 이런경우 따옴표를 키보드로 직접 입력해보시기 바랍니다. 또는 대소문자 자동 수정을 쓰고 계신건 아닌지 확인해보세요.

두 번 째 사이트 접속해보기

이제 사용하는 웹브라우저가 사파리라면 캐시지우기, 크롬이라면 방문기록을 삭제해가며  두번째 도메인으로 http 와 https 모두 https로 접속되는 것을 확인할 수 있습니다. 아래 스크린샷처럼 나오면 성공입니다.

두번째 사이트 워드프레스 웰컴페이지

이제 사이트 제목과 관리자가될 사용자명(ID)을 넣고 비밀번호를 정하고, 기억해둡시다. 그런다음 아래쪽에 워드프레스 설치하기 버튼을 누르면 곧바로 설치되고 로그인 할 수 있습니다.기본 설치된 워드프레스 로그인 주소는  아래와 같습니다.

https://도메인주소/wp-login.php

이제 첫번째 도메인과 두번째 도메인 번갈아가며 접속해보시고 글을 작성해보세요.

One More Thing….

아직 한가지 더 남아있는게 있습니다. 지금 이상태로는 워드프레스 플러그인을 업데이트하거나 설치하려고하면 아래처럼 같은 문제가 생길 것입니다.

업데이트 실패: 디렉터리를 생성할 수 없습니다.

플러그인 업데이트 실패 메시지

 

이것은 워드프레스 폴더 권한문제로 생기는 건데요. 첫 번째 워드프레스는 비트나미가 준비해둔 거라 권한이 이미 설정되어있기 때문에 문제가 없었지만 우리가 직접설치한 두 번 째 사이트는 폴더를 새로 만들어서 권한문제가 있어서 그렇습니다.

이 문제를 해결하기위해서는 두 번째 워드프레스 루트폴더의 쓰기권한을 변경해줘야합니다. 

sudo chmod -R 777 /두번째/워드프레스/루트폴더/경로/루트폴더이름

위와 같은 형태로 입력해줍니다. 

sudo chmod -R 777 /opt/bitnami/apps/wordpress/second-wordpress

두번째 워드프레스 루트폴더에 대한 권한을 777로 설정한다

 

이제 두번째 워드프레스 사이트에도  플러그인을 설치하실 수 있습니다

이제 두번째 워드프레스 사이트또한 고유주소 변경같은  워드프레스 초기 설정을 세팅하고나면 본격적으로 글을 쓰시면 되겠습니다. 이렇게 하나의 서버 인스턴스(VPS)에 두개의 블로그를 운영하게 되었습니다. 

데이터베이스가 서로 나눠져있으니 서로 간섭이 없고 훗날 하나의 블로그만 다른서버로 이전하려고 한다면 하나 데이터베이스와 워드프레스 루트폴더를 백업해와서 옮겨갈 수 있게됩니다.

해피 블로깅!

25 댓글

  1. 안녕하세요.
    도메인 2개를, 인스턴스 1개에 연결하려고 합니다.
    1번 도메인 및 2번 도메인의 네임서버는 라이트세일 DNS zone 에서 각각 받은 대로 설정하였습니다.
    현재 1번 도메인은 정상적으로 들어가는데, 2번은 안들어가지는 상황입니다.
    apache 재시작시 에러 없었고요.
    혹시 어디가 잘못되었는지 감이 오시는지 해서 문의 한번 드립니다

    미리 감사합니다.

    • 안녕하세요 조태식님, 주말에 고생이 많으시네요.
      여러가지 이유가 있어서 감이 안오네요.
      그냥 응답없음인가요?
      DNS 설정 반영이 아직 안되었을 수도 있고, DNS IP 설정이 잘 못 되었을 수도 있고, conf 파일 설정이나 .htaccess파일에서 설정이 잘 못 되었을 수도 있고, 두번째 워드프레스 설치가 잘 못 되었을 수도 있습니다.

      https://swiftcoding.org/installing-2nd-wp 이곳 링크글을 차근 차근 읽어보시길 권해드립니다.

  2. 감사하게도 여기까지 잘 따라왔습니다. 다만 도메인별 HTTPS 루트폴더 지정에서 에러가 생겨서 문의 드립니다.
    아래와 같이 아파치 재시작 명령어를 입력하면 존재 않거나 비어있다고 나옵니다. 따옴표나 이런것은 다 체크 했고 이거 하나만 이렇게 나오네요.
    2번째 사이트 인증서 저것 하나만 계속 에러가 납니다. 해결책이 있을까요? 감사합니다.

    sudo /opt/bitnami/ctlscript.sh restart apache

    AH00526: Syntax error on line 94 of /opt/bitnami/apache2/conf/bitnami/bitnami.conf:
    SSLCertificateFile: file ‘/etc/letsencrypt/live/ibinc.kr/fullchain.pem’ does not exist or is empty
    apache config test fails, aborting

    • 아 답을 찾은 것 같습니다. 2번쨰 사이트 인증서를 받을때 바보같이 www. 을 앞에다가 붙여서 적었네요. 혹시 www.을 없애거나, 아니면 다시 받아도 될까요? 삭제하는게 좋을까요?

  3. 정말 감사합니다.
    글 따라하면서 2개까지 성공 하고 혹시 3개도 가능할지 똑같이 따라서 해봤습니다.
    차례대로 하면서 SSL 인증서 받기 전인 http://접속까진 성공하였고, 433포트 설정, SSL인증서 받고 wp-config 파일도 수정한 뒤에 아파치 재시작도 에러 없이 진행됐습니다.

    그런데 3번째 사이트 접속시에는 아래와 같은 403에러가 뜹니다. 1,2번째 사이트는 접속도 원활 하고 리다이렉트도 잘 되는데 3번째 사이트만 403에러가 나네요. 혹시 해결 방안이 있을까요? 항상 감사드립니다.

    Forbidden

    You don’t have permission to access / on this server.

  4. 다따라하니 두번째 워드프레스 도메인 주소를 입력하니 You don’t have permission to access / on this server. 라고 뜨는데요 뭘 잘못한것일까요…. ㅋ

  5. 보고만 가기에는 너무 죄송하고 감사해서 마음만이라도 전달하고자 댓글 남깁니다. 좋은 콘텐츠 정말 감사합니다.

  6. 안녕하세요 상기 예시는 아예 두번째 도메인이 별개의 워드프레스로 구분되는 경우 SSL 발급인것같은데
    혹시 메인도메인의 특정페이지만 서브도메인으로 접근이 가능하도록 할 경우는 인증서 세팅을 어떻게 해야할까요?
    예를들어 aaa.com의 워드프레스 상점페이지가 aaa.com/shop인데 shop.aaa.com으로도 접근이되게 하고 싶습니다.

    • 메인도메인과 서브도메인은 완전히 다른 도메인(사이트)로 취급됩니다.
      https://swiftcoding.org/subdomains

      인증서는 Let’s Encrypt의 경우 처음발급받을때 두 도메인 모두 적용되도록 설정할 수 있습니다. https://swiftcoding.org/nginx-lets-encrypt#issue

      shop.aaa.com의 DNS설정또한 같은서버로 향하도록 설정해야겠고, shop.aaa.com로 들어오는 요청에대한 라우팅을 설정해주셔야겠지만 여러가지 복잡해지겠습니다.

      <VirtualHost>...</VirtualHost> 블럭을 추가해서 shop.aaa.com으로 들어오는 경우를 따로 마련해서 리다이렉팅 해주어야할 것같습니다. 그리고도 도메인 포워딩 문제가 있을 것이므로 워드프레스 wp-config.php에서도 설정이 필요할 것같은데요.

      저도 해본건 아니라서 명확한 설정을 말씀드리기가 어렵네요.

  7. 안녕하세요. 연재글 잘 보고 있습니다. 정말 감사합니다.

    해당 연재글 보면서 따라하고 있는데,

    두 번째 사이트에 접속하면

    [데이터베이스 연결 중 오류]

    가 뜹니다.

    왜 이런 걸까요? ㅠㅠ

    본문 글 다시 보고있는데도 뭐가 잘못된지 잘 모르겠습니다.

  8. 헛.. DB 사용자 권한설정이 잘못되어 있었네요.

    어쩌다 보니 수정했습니다 ㅎㅎ

    좋은 글 연재 해주셔서 감사합니다!

  9. 감사합니다!
    매우 친절한 설명에 차근 차근 따라 하다보니 한 서버에 두개의 사이트를 만들게 되었습니다!
    이 주제로 쓴 글 중 최고의 글이라고 감히 추천합니다.
    앞으로 널리 널리 소개하겠습니다. 건강하세요 ^_^/

  10. 운영자님 이렇게 정성스럽 글 남겨주셔서 진심으로 감사합니다! 덕분에 두개의 워드프레스를 운영할 수 있게 됐습니다.

    저의 경우 https 루트 폴더 지정해주고 나서 어파치 재부팅 오류가 계속 났어요. 하루종일 해맸는데 겨우 해결했어요 ㅠㅠ

    https 루트 폴더에서 어파치 재부팅 오류나시는 분들은 한번 이렇게 해보세요.

    첫째. bitnami.conf 을 수정할 때 이 글의 본문에 나오는 구문을 복붙하지 마시고 번거롭더라도 직접 적어보세요. 꽤 길지만 직접 적어야 복붙할 때 딸려오는 이상한 구문이 안생깁니다.
    둘째. 이 부분을 이렇게 바꿔보세요.

    계속 어파치 재부팅에서 오류가 났는데 이 부분을 고치니 잘 되네요. 휴.. 모두 화이팅 하시길!

    • 두번째가 안적혔네요.
      둘째. VirtualHost default:443 이 부분을 VirtualHost *:443 이렇게 바꿔보세요.

  11. 스위프트님 안녕하세요. 혹시 하나의 폴더(그러니까 하나의 사이트)에 두개이상의 도메인을 메핑할 수 있나요? 매핑은 했는데 ssl이 하나밖에 안되어서 자꾸 https붙은 도메인으로 리다이렉션이 되네요 ㅠㅠ 해결방법이 있을까요? 비트나미 쓰고 있습니다.

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)