CentOS/Nginx에 지나치게 집중된 최신 문서가 전무하다는 점을 감안하여 Discourse를 떠날 의향이 있었음에도, DigitalOcean에서 한 매우 관대하고 인내심 있는 분이 제가 거기에 만든 스레드에 응답하여, 시행착오 끝에 저와 같은 상황에 처한 잠재적 Discourse 사용자를 위한 쉽게 따라 할 수 있는 튜토리얼을 작성하는 데 도움을 주었습니다.
참고로, 해당 상황은 다음과 같습니다:
Apache와 동일한 서버에 Discourse 설치 | Ubuntu 18.04 사용 | DigitalOcean
Bobbyiliev @ DigitalOcean에 감사드립니다
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (첫 번째 답변)
사전 요구 사항
- 안전을 위해 Droplet을 백업하여, 문제가 발생했을 경우 작동하는 버전으로 되돌릴 수 있도록 하세요.
- Droplet에 SSH로 접속하세요.
- Apache가 설치되어 있어야 합니다. 설치 방법은 다음 링크의 단계를 따르세요:
1단계 - Docker 설치
Docker를 설치하려면 다음 링크의 단계를 따르세요:
2단계 - Discourse 다운로드
먼저 Discourse 파일을 저장할 디렉터리를 생성하세요:
mkdir /var/discourse
이후 공식 Discourse Docker 이미지를 /var/discourse로 클론하세요.
git clone https://github.com/discourse/discourse_docker.git /var/discourse
3단계 - Discourse가 8080 포트를 경청하도록 설정
PostgreSQL, Redis 등 필요한 모든 서비스를 포함하고 있는 standalone.yml 템플릿을 사용할 것입니다.
다음 명령어로 샘플 파일을 복사하세요:
cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml
이후 선호하는 편집기로 파일을 편집하세요. /var/discourse/containers/app.yml 파일을 열고 23번과 24번 줄의 포트를 업데이트하세요:
## which TCP/IP ports should this container expose?
expose:
- "8080:80" # fwd host port 8080 to container port 80 (http)
- "8443:443" # fwd host port 8443 to container port 443 (http)
아직 SSL 인증서가 없다면 16번 줄을 주석 처리하도록 하세요:
#- "templates/web.ssl.template.yml"
`- "templates/web.ssl.template.yml`` 줄 앞에 # 기호를 추가하세요. 그렇지 않으면 Discourse가 시작되지 않습니다.
4단계 - Discourse 설정
디렉터리 변경:
cd /var/discourse
그런 다음, Discourse를 시작하세요 (서비스를 처음 시작하는 것이므로 app.yml 파일에 있는 새로운 변경 사항으로 애플리케이션이 부트스트랩됩니다):
./discourse-setup
참고: 유효한 메일 서버 설정을 제공해야 합니다. 그렇지 않으면 설정이 실패할 수 있습니다.
5단계 - Apache 설정
/etc/apache2/sites-available/ 디렉터리에서 forum.example.com.conf라는 이름의 새 파일을 생성하고 다음 Vhost 내용을 추가하세요:
<VirtualHost *:80>
ServerName forum.example.com
ServerAlias www.forum.example.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
- 다음 명령어로 Vhost를 활성화하세요:
a2ensite forum.example.com
- Mod Proxy 활성화:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
- Apache 재시작:
systemctl restart apache2
그 후 도메인 이름을 통해 Discourse에 직접 액세스할 수 있게 됩니다.
참고 1: Discourse를 설치할 때 app.yml이 덮어쓰여지고 16/17번 줄(SSL)의 주석이 해제될 수 있습니다. 해당 줄들을 다시 주석 처리한 후 앱을 재구성해야 합니다 (디렉터리 변경을 잊지 마세요): ./launcher rebuild app
참고 2: 이 가이드에서는 Discourse에 SSL이 활성화되지 않습니다. 놀랍게도, Apache에 이미 활성화되어 있는 경우 Let’s Encrypt SSL을 활성화하는 방법에 대한 문서가 존재하지 않는 것으로 보입니다. 이 문제에 대한 해결책을 발견하신 분은 연락 주시기 바랍니다.