웹사이트 검색

Ubuntu 20.04에서 Nginx로 Rocket.Chat 서버를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 우분투 20.04(Focal Fossa)
  • 우분투 16.04(Xenial Xerus)

이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. Node.js 설치
  4. MongoDB 설치 및 구성
  5. Rocket.Chat 설치
  6. Rocket.Chat용 시스템 서비스 파일 만들기
  7. Rocket.Chat용 Nginx 구성
  8. Rocket.Chat에 액세스
  9. 결론

Rocket.Chat은 Meteor 전체 스택 프레임워크를 사용하여 JavaScript로 작성된 웹 기반 채팅 애플리케이션입니다. 여러 장치에서 실시간으로 안전하게 통신할 수 있는 오픈 소스 채팅 협업 플랫폼입니다. 자체 호스팅되며 음성 및 영상 채팅, 화상 회의, 파일 공유 등을 지원합니다. Windows, macOS, Linux, Android 및 iOS를 포함한 모든 플랫폼에서 사용할 수 있는 클라이언트 애플리케이션이 있습니다.

이 튜토리얼에서는 Ubuntu 20.04 서버에 Rocket.Chat을 설치하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 20.04를 실행하는 서버.\n
  • 서버 IP를 가리키는 유효한 도메인 이름입니다.\n
  • 루트 암호는 서버에 구성됩니다.\n

시작하기

시작하기 전에 시스템 패키지를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령으로 업데이트할 수 있습니다.

apt-get update -y

시스템이 업데이트되면 다음 명령을 사용하여 다른 필수 종속 항목을 설치합니다.

apt-get install nginx gnupg2 git unzip build-essential curl software-properties-common graphicsmagick -y

모든 패키지가 설치되면 다음 단계로 진행할 수 있습니다.

Node.js 설치

다음으로 시스템에 Node.js 버전 12를 설치해야 합니다. 기본적으로 Ubuntu 20.04 표준 리포지토리에서는 사용할 수 없습니다. 따라서 시스템에 Node.js 공식 저장소를 추가해야 합니다. 다음 명령으로 추가할 수 있습니다.

curl -sL https://deb.nodesource.com/setup_12.x | bash -

리포지토리가 추가되면 다음 명령을 사용하여 Node.js를 설치합니다.

apt-get install nodejs -y

Node.js를 설치한 후 다음 명령을 사용하여 설치된 Node.js 버전을 확인합니다.

node -v

다음 출력이 표시되어야 합니다.

v12.19.0

완료되면 다음 단계로 진행할 수 있습니다.

MongoDB 설치 및 구성

다음으로 시스템에 MongoDB 서버를 설치해야 합니다. 기본적으로 최신 버전의 MongoDB는 Ubuntu 20.04 기본 리포지토리에서 사용할 수 없습니다. 따라서 시스템에 MongoDB 리포지토리를 추가해야 합니다. 먼저 다음 명령을 사용하여 GPG 키를 다운로드하고 추가합니다.

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

다음 출력이 표시되어야 합니다.

Executing: /tmp/apt-key-gpghome.Ku2thT4UnL/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
gpg: key 68818C72E52529D4: public key "MongoDB 4.0 Release Signing Key <>" imported
gpg: Total number processed: 1
gpg:               imported: 1

다음으로 다음 명령을 사용하여 MongoDB 공식 리포지토리를 추가합니다.

add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'

리포지토리가 추가되면 다음 명령을 사용하여 MongoDB를 설치합니다.

apt-get install mongodb-org -y

MongoDB를 설치한 후 MongoDB 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start mongod
systemctl enable mongod

다음으로 MongoDB 기본 구성 파일을 편집하고 복제 세트를 정의해야 합니다. 다음 명령으로 수행할 수 있습니다.

nano /etc/mongod.conf

다음 줄을 추가합니다.

replication:
  replSetName: "replica01"

파일을 저장하고 닫은 다음 MongoDB 서비스를 다시 시작하여 구성을 적용합니다.

systemctl restart mongod

그런 다음 MongoDB 셸에 로그인하고 다음 명령을 사용하여 복제본을 활성화합니다.

mongo
> rs.initiate()

다음 출력이 표시되어야 합니다.

{
	"info2" : "no configuration specified. Using a default configuration for the set",
	"me" : "127.0.0.1:27017",
	"ok" : 1,
	"operationTime" : Timestamp(1605081439, 1),
	"$clusterTime" : {
		"clusterTime" : Timestamp(1605081439, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	}
}

그런 다음 다음 명령을 사용하여 MongoDB 셸을 종료합니다.

> exit

완료되면 다음 단계로 진행할 수 있습니다.

Rocket.Chat 설치

다음으로 Rocket.Chat에 대한 새 사용자를 생성하고 www-data 그룹에 추가해야 합니다. 다음 명령을 사용하여 수행할 수 있습니다.

useradd -m -U -r -d /opt/rocket rocket --shell /bin/bash
usermod -a -G rocket www-data

다음으로 /opt/rocket 디렉터리에 적절한 권한을 부여합니다.

chmod 750 /opt/rocket

그런 다음 사용자를 Rocket.Chat으로 전환하고 다음 명령을 사용하여 최신 버전의 Rocket.Chat을 다운로드합니다.

su - rocket
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일의 압축을 풉니다.

tar -xvzf rocket.chat.tgz

다음으로 다음 명령을 사용하여 추출된 디렉터리의 이름을 Rocket.Chat으로 바꿉니다.

mv bundle Rocket.Chat

다음으로 디렉터리를 Rocket.Chat 서버로 변경하고 다음 명령을 사용하여 모든 Node.js 종속성을 설치합니다.

cd Rocket.Chat/programs/server
npm install

모든 종속성이 설치되면 다음 명령을 사용하여 Rocket.Chat 사용자를 종료할 수 있습니다.

exit

Rocket.Chat용 Systemd 서비스 파일 생성

다음으로 Rocket.Chat 서비스를 관리하기 위한 systemd 서비스 파일을 생성해야 합니다. 다음 명령으로 만들 수 있습니다.

nano /etc/systemd/system/rocketchat.service

다음 줄을 추가합니다.

[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target

[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://rocket.yourdomain.com PORT=3000
ExecStart=/usr/bin/node /opt/rocket/Rocket.Chat/main.js

[Install]
WantedBy=multi-user.target

다음 명령을 사용하여 systemd 데몬을 다시 로드하는 파일을 저장하고 닫습니다.

systemctl daemon-reload

그런 다음 Rocket.Chat 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start rocketchat
systemctl enable rocketchat

이제 다음 명령을 사용하여 Rocket.Chat의 상태를 확인할 수 있습니다.

systemctl status rocketchat

모든 것이 정상이면 다음과 같은 결과가 표시됩니다.

? rocketchat.service - Rocket.Chat server
     Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-11 07:58:01 UTC; 24s ago
   Main PID: 19951 (node)
      Tasks: 11 (limit: 4691)
     Memory: 508.7M
     CGroup: /system.slice/rocketchat.service
             ??19951 /usr/bin/node /opt/rocket/Rocket.Chat/main.js

Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |      MongoDB Version: 4.0.21                             |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |       MongoDB Engine: wiredTiger                         |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |             Platform: linux                              |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |         Process Port: 3000                               |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |             Site URL: http://rocket.yourdomain.com  |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |     ReplicaSet OpLog: Enabled                            |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |          Commit Hash: e37d7ba8ed                         |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |        Commit Branch: HEAD                               |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |                                                          |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? +----------------------------------------------------------+

Rocket.Chat용 Nginx 구성

다음으로 Nginx를 Rocket.Chat의 리버스 프록시로 구성해야 합니다. 이렇게 하려면 다음 명령을 사용하여 Nginx 가상 호스트 구성 파일을 만듭니다.

nano /etc/nginx/sites-available/rocketchat.conf

다음 줄을 추가합니다.

upstream myrocketchat {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name rocket.yourdomain.com;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        proxy_pass http://myrocketchat/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

파일을 저장하고 닫은 후 다음 명령을 사용하여 Nginx 가상 호스트를 활성화합니다.

ln -s /etc/nginx/sites-available/rocketchat.conf /etc/nginx/sites-enabled/

다음으로 다음 명령을 사용하여 systex 오류에 대해 Nginx를 확인합니다.

nginx -t

다음 출력이 표시되어야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

마지막으로 Nginx 서비스를 다시 시작하여 구성 변경 사항을 적용합니다.

systemctl restart nginx

다음 명령을 사용하여 Nginx 서비스의 상태를 확인할 수도 있습니다.

systemctl status nginx

다음 출력이 표시되어야 합니다.

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-11 07:59:39 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 20034 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 20047 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 20051 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??20051 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??20052 nginx: worker process
             ??20053 nginx: worker process

Nov 11 07:59:39 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 11 07:59:39 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

완료되면 다음 단계로 진행할 수 있습니다.

Rocket.Chat에 액세스

이 시점에서 Rocket.Chat이 설치되고 구성됩니다. Rocket.Chat 웹 인터페이스에 액세스할 시간입니다. 웹 브라우저를 열고 URL http://rocket.yourdomain.com을 사용하여 Rocket.Chat에 액세스합니다. 다음 페이지로 리디렉션됩니다.

관리자 이름, 이메일, 비밀번호를 제공하고 계속 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

조직 유형, 이름, 산업, 규모, 국가를 제공하고 계속 버튼을 클릭하십시오. 다음 페이지가 표시됩니다.

사이트 이름, 언어, 서버 유형을 제공하고 계속 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

약관 및 개인정보 보호정책에 동의한 후 계속 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

작업 공간으로 이동 버튼을 클릭합니다. 다음 페이지에서 Rocket.Chat 대시보드로 리디렉션됩니다.

결론

축하합니다! Nginx를 리버스 프록시로 사용하여 Rocket.Chat을 성공적으로 설치하고 구성했습니다. 이제 프로덕션 환경에 Rocket.Chat을 설치하고 친구 및 가족과 채팅을 시작할 수 있습니다.