웹사이트 검색

CentOS 7에서 Nginx로 Discourse Forum을 설치하는 방법


이 페이지에서

  1. 1단계 - CentOS 7에 Docker 설치
  2. 2단계 - Discourse Forum 소프트웨어 설치 및 구성\n
  3. 3단계 - CentOS 7에서 SSL Letsencrypt 생성
  4. 4단계 - 담화를 위한 리버스 프록시로 Nginx 설치 및 구성\n
  5. 5단계 - Discourse 웹 설치 프로그램\n
  6. 6단계 - 담화 추가 구성\n
  7. 참조

Discourse는 인터넷 포럼 커뮤니티 및 메일링 리스트를 만들기 위한 무료 오픈 소스 소프트웨어입니다. 2013년에 만들어졌으며 Ruby 및 Javascript 프로그래밍 언어를 사용하여 작성되었습니다. 담론 포럼 소프트웨어는 Codeacademy, Udacity, Twitter Developers, Docker Community Forum 등 많은 조직에서 사용되었습니다.

이 튜토리얼에서는 CentOS 7 서버에서 Nginx 웹 서버로 Discourse Forum을 설치하고 구성하는 방법을 단계별로 보여줍니다. 구체적으로 Discourse 포럼 소프트웨어를 설치하고 Nginx를 Discourse 앱의 리버스 프록시로 구성하고 Letsencrypt의 무료 SSL을 사용하여 담론 포럼 소프트웨어를 보호하는 방법을 보여줍니다.

우리가 할 일

  1. CentOS 7에 Docker 설치
  2. Discourse Forum 소프트웨어 설치 및 구성\n
  3. CentOS 7에서 SSL Letsencrypt 생성
  4. 담화를 위한 리버스 프록시로 Nginx 설치 및 구성\n
  5. Discourse 웹 설치 프로그램\n
  6. 담론 추가 구성

전제 조건

  • 센트OS 7
  • 루트 권한\n
  • SMTP 계정 - 예: Mailgun, SendGrid 또는 Mailjet에서

1단계 - CentOS 7에 Docker 설치

담론 포럼은 Docker 컨테이너 아래에 설치됩니다. 따라서 우리가 해야 할 첫 번째 단계는 CentOS 7 서버에 Docker를 설치하는 것입니다.

다음 명령을 사용하여 CentOS 7에 Docker를 설치합니다.

wget -qO- https://get.docker.com/ | sh

wget 명령이 없으면 저장소에서 설치하십시오.

yum -y install wget

설치가 완료되면 Docker 서비스를 시작하고 다음 systemctl 명령을 사용하여 부팅 시 실행되도록 활성화합니다.

systemctl start docker
systemctl enable docker

Docker 엔진이 설치되었고 CentOS 7 서버에서 실행 중입니다. 다음 명령을 사용하여 서비스 상태를 확인하십시오.

systemctl status docker

Docker 서비스가 활성화되어 실행 중입니다.

2단계 - Discourse Forum 소프트웨어 설치 및 구성

이 단계에서는 Discourse 소프트웨어를 설치하고 구성합니다. 담론 docker-compose 스크립트를 다운로드하고 필요에 따라 구성한 다음 담론 포럼 소프트웨어를 위한 새 Docker 컨테이너를 만듭니다.

담화를 다운로드하기 전에 git 명령을 서버에 설치해야 합니다.

yum -y install git

이제 새 디렉토리 /var/discourse를 만들고 git 명령을 사용하여 discourse docker 스크립트를 다운로드/복제합니다.

mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse

담론 디렉터리로 이동하여 docker-compose 스크립트 standalone.yml의 샘플을 app.yml이라는 이름으로 /var/discourse/containers/ 디렉터리에 복사합니다.

cd /var/discourse
cp samples/standalone.yml containers/app.yml

이제 vim을 사용하여 app.yml 파일을 편집합니다.

vim containers/app.yml

- Docker 포트 매핑

기본적으로 모든 HTTP 및 HTTPS 요청은 Docker 프록시에서 처리됩니다. 이 가이드에서는 이러한 목적으로 Nginx를 사용합니다. 모든 HTTP 및 HTTPS는 Nginx 웹 서버에서 처리됩니다.

따라서 도커 포트 매핑 구성을 변경해야 합니다. Discourse 컨테이너에는 HTTP 연결만 있고 호스트는 새 포트 2045를 열고 컨테이너 포트 80에 매핑합니다.

아래와 같이 HTTPS 줄의 주석을 제거하고 새 포트 2045로 HTTP 줄을 변경합니다.

expose:
  - "2045:80"   # http
#  - "443:443" # https

- 담화 도메인 이름 구성

아래와 같이 DISCOURSE_HOSTNAME 라인에 설치된 담화를 위한 자신의 도메인 이름을 입력합니다.

DISCOURSE_HOSTNAME: 'discourse.hakase-labs.co'

DISCOURSE_DEVELOPER_EMAIL 줄에 이메일 주소를 입력합니다.

DISCOURSE_DEVELOPER_EMAILS: ''

- SMTP 구성

SMTP 구성은 Discourse 소프트웨어에서 가장 중요한 구성입니다. Discourse 설치를 위한 SMTP 계정이 있는지 확인하십시오. Mailgun, Mailjet 또는 SendGrid에서 무료 계층 SMTP 계정을 구입하거나 사용해 볼 수 있습니다.

이 자습서에서는 Mailgun의 무료 계층 SMTP 계정을 사용합니다. Mailgun에 등록하고 도메인 이름을 구성하고 SMTP 계정의 세부 정보를 확인하십시오.

그런 다음 SMTP 구성의 주석을 제거하고 아래와 같이 계정 세부 정보를 입력합니다.

  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME:
  DISCOURSE_SMTP_PASSWORD: mypassword

그게 다야. 변경 사항을 저장하고 편집기를 종료합니다.

다음으로 app.yml 템플릿 구성을 기반으로 새 Discourse Docker 이미지를 빌드합니다.

sudo ./launcher bootstrap app

모두 완료되면 다음 명령을 사용하여 새 Discourse 컨테이너를 시작/초기화합니다.

sudo ./launcher start app

그리고 Discourse Docker 컨테이너가 실행 중입니다. docker ps 명령을 사용하여 확인하십시오.

docker ps -a

netstat를 사용하여 호스트 열린 포트를 확인하고 포트 2045가 있는 새 서비스 docker-proxy가 목록에 있는지 확인합니다.

netstat -plntu

Discourse Forum 소프트웨어는 호스트 CentOS 7의 도커 컨테이너 아래에 설치되었습니다.

3단계 - CentOS 7에서 SSL Letsencrypt 생성

이 튜토리얼에서는 Nginx 웹 서버에서 Discourse 포럼을 실행하고 HTTPS 연결만 허용합니다. 이를 위해 도메인 이름에 대한 새로운 SSL 인증서가 필요하므로 Letsencrypt의 무료 SSL 인증서를 사용할 것입니다.

다음 방법으로 yum 명령을 사용하여 Letsencrypt 명령줄 도구를 설치합니다.

yum -y install letsencrypt

설치 후 Firewalld 구성에 새 HTTP 및 HTTPS 서비스를 추가하십시오.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

이제 아래 letsencrypt 명령을 사용하여 Discourse 포럼에 대한 새 SSL 인증서를 생성하십시오.

letsencrypt certonly

Letsencrypt에서 두 가지 확인이 표시됩니다. 인증을 위해 임시 웹 서버를 가동하려면 숫자 1을 입력하십시오.

이 과정에서 알림 갱신을 위한 이메일 주소를 입력하고 A를 입력하여 letsencrypt TOS(서비스 약관)에 동의합니다.

이제 담론 도메인 이름 discourse.hakase-labs.co를 입력합니다.

그리고 프로세스가 완료되면 아래와 같은 결과를 얻을 수 있습니다.

letsencrypt의 새 SSL 인증서가 /etc/letsencrypt/live 디렉터리에 생성되었습니다.

4단계 - 담화를 위한 리버스 프록시로 Nginx 설치 및 구성

이 튜토리얼에서는 Nginx 웹 서버를 Docker 컨테이너에서 실행되는 Discourse의 리버스 프록시로 사용합니다. Nginx 웹 서버는 HTTP 및 HTTPS 포트에서 실행되며 모든 클라이언트 요청은 Nginx에서 처리됩니다.

Nginx 웹 서버를 설치하기 전에 시스템에 EPEL 저장소를 설치해야 합니다.

yum -y install epel-release

이제 다음 yum 명령을 사용하여 EPEL 저장소에서 nginx를 설치하십시오.

yum -y install nginx

모든 설치가 완료되면 nginx 구성 디렉토리 /etc/nginx로 이동합니다.

cd /etc/nginx/

그리고 vim을 사용하여 새로운 추가 SSL 구성 ssl.conf를 만듭니다.

vim ssl.conf

다음 SSL 구성을 거기에 붙여넣으십시오.

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

변경 사항을 저장하고 편집기를 종료합니다.

다음으로 Discourse용 새 nginx 가상 호스트 파일인 discourse.conf를 만듭니다.

vim conf.d/discourse.conf

다음 구성을 거기에 붙여넣으십시오.

server {
    listen 80; listen [::]:80;
    server_name discourse.hakase-labs.co;
 
    # Automatic Redirect HTTP to HTTPS Nginx
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl http2; 
    server_name discourse.hakase-labs.co;

    # SSL Configuration
    ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.co/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.co/privkey.pem;
    include /etc/nginx/ssl.conf;
 
    # Reverse Proxy Configuration
    location / {
        proxy_pass http://discourse.hakase-labs.co:2045/;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect http://discourse.hakase-labs.co:2045/ https://discourse.hakase-labs.co;
    }
}

저장 및 종료.

이제 nginx 구성을 테스트하고 오류가 없는지 확인하십시오. 그런 다음 Nginx 서비스를 다시 시작하십시오.

nginx -t
systemctl restart nginx

Discourse 컨테이너용 리버스 프록시로 Nginx 설치 및 구성이 완료되었습니다.

5단계 - Discourse 웹 설치 프로그램

웹 브라우저를 열고 담화 URL을 방문하세요. 제 URL은 다음과 같습니다.

http://discourse.hakase-labs.co

그러면 HTTPS 연결로 리디렉션됩니다.

등록 버튼을 클릭합니다.

이제 새 관리자 계정을 만들어야 합니다.

관리자 사용자 이름과 암호를 입력한 다음 등록을 클릭합니다.

이메일 확인 페이지가 표시됩니다. 이메일 수신함을 확인하고 아래와 같이 Discourse 포럼에서 이메일 구성을 받았는지 확인하십시오.

링크를 클릭하십시오.

그러면 Discourse 환영 페이지가 표시됩니다.

계정을 활성화하려면 여기를 클릭하십시오 버튼을 클릭하십시오. 이제 다음 페이지로 이동해야 합니다.

나중에 버튼을 클릭합니다.

Discourse Forum이 설치되었으며 아래와 같이 기본 홈페이지가 표시됩니다.

관리 대시보드로 이동하면 담화 관리 대시보드를 얻을 수 있습니다.

Discourse Forum 소프트웨어는 Nginx와 함께 CentOS 7 서버에 리버스 프록시로 설치되었습니다.

6단계 - 담화 추가 구성

Discourse 설치 중에 일부 사람들은 관리자 사용자 활성화에 대한 이메일 확인을 받지 못했다고 합니다.

이 문제의 경우 구성 app.yml에 올바른 SMTP 계정이 있는지 확인하십시오. 또는 서버에서 수동으로 관리자 계정을 활성화할 수 있습니다.

관리자 계정을 수동으로 활성화하려면 /var/discourse 디렉토리로 이동하십시오.

cd /var/discourse

이제 다음 명령을 사용하여 담화 컨테이너에 액세스합니다.

./launcher enter app

그리고 아래와 같이 rails 명령을 사용하여 첫 번째 admin 사용자를 활성화합니다.

rails c
u = User.last
u.admin = true
u.activate
u.save

이제 사용자 이름과 암호를 사용하여 Discourse 포럼에 로그인할 수 있습니다.

참조

  • https://meta.discourse.org/