Ubuntu 20.04에 Taiga 프로젝트 관리 시스템을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. Node.js 설치
  4. PostgreSQL 설치 및 구성
  5. RabbitMQ 및 Redis 설치
  6. Taiga 백엔드 설치 및 구성
  7. Taiga Forntend 설치 및 구성
  8. 타이가 이벤트 설치 및 구성
  9. Systemd 서비스 파일 만들기
  10. Nginx를 역방향 프록시로 구성\n
  11. Tails 웹 UI에 액세스
  12. 결론

Taiga는 신생 기업, 애자일 개발자 및 디자이너를 위한 단순하면서도 강력한 무료 오픈 소스 프로젝트 관리 도구입니다. Scrum 및 Kanban 프레임워크 모두에서 Agile 작업을 수행하는 팀을 지원합니다. 프론트엔드는 JavaScript로 작성되고 백엔드는 Python과 Django로 작성됩니다. 매우 강력하고 완전히 사용자 정의 가능한 응용 프로그램이며 개발자와 팀을 위한 단순하고 복잡한 프로젝트를 모두 처리할 수 있습니다. Kanban, Scrum, Talky.io 및 Appear.in을 포함한 많은 서비스와 쉽게 통합할 수 있습니다.

이 튜토리얼에서는 Ubuntu 20.04 서버에 Taiga 프로젝트 관리 도구를 설치하는 방법을 보여줍니다.

전제 조건

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

시작하기

먼저 다음 명령을 사용하여 시스템 패키지를 최신 버전으로 업데이트합니다.

apt-get update -y

모든 패키지가 업데이트되면 다음 명령을 실행하여 Taiga에 필요한 다른 종속성을 설치합니다.

apt-get install git gnupg2 pwgen automake wget curl gettext python3 virtualenvwrapper python3-dev python3-pip python3-dev libssl-dev tmux build-essential libgdbm-dev binutils-doc autoconf flex gunicorn bison libjpeg-dev libzmq3-dev libfreetype6-dev zlib1g-dev libncurses5-dev libtool libxslt-dev libxml2-dev libffi-dev

다음으로 시스템에 정규화된 호스트 이름을 설정해야 합니다. 다음 명령으로 설정할 수 있습니다.

hostnamectl set-hostname taiga.example.com

다음으로 호스트 이름을 IP 주소와 바인딩해야 합니다. /etc/hosts 파일을 편집하여 이를 수행할 수 있습니다.

nano /etc/hosts

다음 줄을 추가합니다.

your-server-ip taiga.example.com

완료되면 파일을 저장하고 닫습니다.

Node.js 설치

다음으로 시스템에 Node.js를 설치해야 합니다. 기본적으로 Node.js의 최신 버전은 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

PostgreSQL 설치 및 구성

Taiga는 PostgreSQL 서버를 데이터베이스 백엔드로 사용합니다. 따라서 시스템에 설치해야 합니다. 먼저 다음 명령을 사용하여 PostgreSQL GPG 키를 추가합니다.

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

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

echo "deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list

다음으로 다음 명령을 사용하여 리포지토리를 업데이트하고 최신 버전의 PostgreSQL을 설치합니다.

apt-get update -y
apt-get install postgresql -y

그런 다음 다음 명령을 사용하여 PostgreSQL 암호를 변경합니다.

passwd postgres

다음과 같은 결과가 표시되어야 합니다.

New password: 
Retype new password: 
passwd: password updated successfully

다음으로 사용자를 postgres로 전환하고 Taiga용 사용자를 생성합니다.

su - postgres
:~$ createuser taiga

그런 다음 다음 명령을 사용하여 PostgreSQL 셸에 로그인합니다.

:~$ psql

산출:

psql (13.0 (Ubuntu 13.0-1.pgdg20.04+1))
Type "help" for help.

로그인 후 다음 명령을 사용하여 사용자 및 데이터베이스를 생성합니다.

postgres=# ALTER USER taiga WITH ENCRYPTED password 'yourpassword';
postgres=# CREATE DATABASE taiga OWNER taiga;

그런 다음 다음 명령을 사용하여 PostgreSQL 셸과 사용자를 종료합니다.

postgres=# \q
:~$ exit

RabbitMQ 및 Redis 설치

Taiga는 RabbitMQ를 메시지 브로커로 사용하고 Redis를 캐싱에 사용합니다. 따라서 시스템에 두 패키지를 모두 설치해야 합니다. 다음 명령을 사용하여 두 패키지를 모두 설치할 수 있습니다.

apt-get install rabbitmq-server redis-server -y

다음으로 다음 명령을 사용하여 RabbitMQ에 대한 새 사용자 및 가상 호스트를 만듭니다.

rabbitmqctl add_user taiga yourpassword
rabbitmqctl add_vhost taiga
rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

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

Taiga 백엔드 설치 및 구성

먼저 다음 명령을 사용하여 Taiga에 대한 별도의 사용자를 만듭니다.

adduser taiga

다음으로 다음 명령을 사용하여 Taiga 사용자를 sudo 그룹에 추가합니다.

adduser taiga sudo

다음으로 사용자를 taiga로 변경하고 taiga 로그를 저장할 디렉터리를 만듭니다.

su - taiga
mkdir -p ~/logs

다음으로 다음 명령을 사용하여 Git 리포지토리에서 Taiga 백엔드를 다운로드합니다.

git clone https://github.com/taigaio/taiga-back.git

다음으로 디렉토리를 다운로드한 디렉토리로 변경하고 최신 분기를 확인하십시오.

cd taiga-back
git checkout stable

다음으로 다음 명령을 사용하여 mkvirtualenv 명령을 활성화합니다.

nano ~/.bashrc

다음 줄을 추가합니다.

source '/usr/share/virtualenvwrapper/virtualenvwrapper.sh'

다음 명령을 사용하여 새 프로필을 활성화합니다.

source ~/.bashrc

다음으로 Taiga용 Python 가상 환경을 만듭니다.

mkvirtualenv -p /usr/bin/python3 taiga_venv

다음으로 다음 명령을 사용하여 필요한 모든 종속 항목을 설치합니다.

pip3 install -r requirements.txt

그런 다음 다음 명령을 사용하여 데이터를 마이그레이션하고 로드합니다.

python3 manage.py migrate --noinput
python3 manage.py loaddata initial_user
python3 manage.py loaddata initial_project_templates
python3 manage.py compilemessages
python3 manage.py collectstatic --noinput

다음으로 local.py 파일을 편집하고 애플리케이션 및 데이터베이스 설정을 정의해야 합니다.

nano ~/taiga-back/settings/local.py

다음 줄을 추가합니다.

from .common import *

MEDIA_URL = "http://taiga.example.com/media/"
STATIC_URL = "http://taiga.example.com/static/"
SITES["front"]["scheme"] = "http"
SITES["front"]["domain"] = "taiga.example.com"

SECRET_KEY = "OQOEJNSJIQHDBQNSUQEJSNNANsqQPAASQLSMSOQND"

DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = ""
SERVER_EMAIL = DEFAULT_FROM_EMAIL

#CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga::5672/taiga"}

파일을 저장하고 닫은 후 다음 명령을 사용하여 Taiga 백엔드 서버를 시작합니다.

workon taiga_venv
python manage.py runserver

서버가 성공적으로 시작되면 다음 출력이 표시되어야 합니다.

System check identified no issues (0 silenced).
November 02, 2020 - 09:24:41
Django version 2.2.16, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

CTRL + C를 눌러 서버를 중지합니다.

그런 다음 다음 명령을 사용하여 가상 환경을 비활성화합니다.

deactivate

Taiga Forntend 설치 및 구성

먼저 사용자를 Taiga로 변경하고 Git 저장소에서 최신 버전의 Taiga 프런트엔드를 다운로드합니다.

su - taiga
git clone https://github.com/taigaio/taiga-front-dist.git

디렉토리를 다운로드한 디렉토리로 변경하고 다음 명령을 사용하여 최신 안정 분기를 확인하십시오.

cd taiga-front-dist
git checkout stable

그런 다음 다음 명령을 사용하여 샘플 구성 파일을 복사합니다.

cp ~/taiga-front-dist/dist/conf.example.json ~/taiga-front-dist/dist/conf.json

그런 다음 다음 명령을 사용하여 구성 파일을 편집합니다.

nano ~/taiga-front-dist/dist/conf.json

다음 줄을 변경합니다.

{
    "api": "http://taiga.example.com/api/v1/",
    "eventsUrl": "ws://taiga.example.com/events",
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": true,
    "debugInfo": false,
    "defaultLanguage": "en",
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true,
    "feedbackEnabled": true,
    "supportUrl": "https://tree.taiga.io/support",
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "GDPRUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": [],
    "tribeHost": null,
    "importers": [],
    "gravatar": true,
    "rtlLanguages": ["fa"]
}

완료되면 파일을 저장하고 닫습니다.

Taiga 이벤트 설치 및 구성

다음으로 홈 디렉터리로 이동하여 다음 명령을 사용하여 최신 버전의 Taiga 이벤트를 다운로드합니다.

cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events

다음으로 디렉토리를 다운로드한 디렉토리로 변경하고 다음 명령을 사용하여 모든 NPM 모듈을 설치합니다.

cd taiga-events
npm install

그런 다음 다음 명령을 사용하여 샘플 구성 파일을 복사합니다.

cp config.example.json config.json

다음으로 config.json 파일을 편집하고 rabbitmq URL과 비밀 키를 설정합니다::

nano config.json

다음 줄을 추가/수정합니다.

{
    "url": "amqp://taiga::5672/taiga",
    "secret": "OQOEJNSJIQHDBQNSUQEJSNNANsqQPAASQLSMSOQND",
    "webSocketServer": {
        "port": 8888
    }
}

파일을 저장하고 닫은 후 다음 명령을 사용하여 Taiga 사용자에서 로그아웃합니다.

exit

Systemd 서비스 파일 생성

다음으로 Taiga 및 Taiga 이벤트에 대한 systemd 서비스 파일을 생성해야 합니다. 먼저 다음 명령을 사용하여 Taiga 이벤트에 대한 systemd 서비스 파일을 생성합니다.

nano /etc/systemd/system/taiga_events.service

다음 줄을 추가합니다.

[Unit]
Description=taiga_events
After=network.target

[Service]
User=taiga
WorkingDirectory=/home/taiga/taiga-events
ExecStart=/bin/bash -c "node_modules/coffeescript/bin/coffee index.coffee"
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

파일을 저장하고 닫은 후 다음 명령을 사용하여 systemd 서비스를 다시 로드합니다.

systemctl daemon-reload

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

systemctl start taiga_events
systemctl enable taiga_events

다음으로 다음 명령을 사용하여 Taiga용 systemd 서비스 파일을 생성합니다.

nano /etc/systemd/system/taiga.service

다음 줄을 추가합니다.

[Unit]
Description=taiga_back
After=network.target

[Service]
User=taiga
Environment=PYTHONUNBUFFERED=true
WorkingDirectory=/home/taiga/taiga-back
ExecStart=/home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 taiga.wsgi
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

파일을 저장하고 닫은 후 다음 명령을 사용하여 systemd 서비스를 다시 로드합니다.

systemctl daemon-reload

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

systemctl start taiga
systemctl enable taiga

다음으로 다음 명령을 사용하여 Taiga 이벤트 및 Taiga 서비스의 상태를 확인합니다.

systemctl status taiga_events taiga

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

? taiga_events.service - taiga_events
     Loaded: loaded (/etc/systemd/system/taiga_events.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-11-02 09:30:21 UTC; 46s ago
   Main PID: 26383 (node)
      Tasks: 7 (limit: 2353)
     Memory: 15.2M
     CGroup: /system.slice/taiga_events.service
             ??26383 node node_modules/coffeescript/bin/coffee index.coffee

Nov 02 09:30:21 taiga.example.com systemd[1]: Started taiga_events.

? taiga.service - taiga_back
     Loaded: loaded (/etc/systemd/system/taiga.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-11-02 09:30:55 UTC; 13s ago
   Main PID: 26478 (gunicorn)
      Tasks: 5 (limit: 2353)
     Memory: 266.4M
     CGroup: /system.slice/taiga.service
             ??26478 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26494 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26495 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26496 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26497 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >

Nov 02 09:30:55 taiga.example.com gunicorn[26495]: [2020-11-02 09:30:55 +0000] [26495] [INFO] Booting worker with pid: 26495
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: [2020-11-02 09:30:55 +0000] [26496] [INFO] Booting worker with pid: 26496
Nov 02 09:30:55 taiga.example.com gunicorn[26494]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26495]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: 2020-11-02 09:30:55 +0000] [26497] [INF
Nov 02 09:30:55 taiga.example.com gunicorn[26495]: 2
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: 2
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: rying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: rying import local.py settings...

Nginx를 역방향 프록시로 구성

Nginx를 Taiga의 리버스 프록시로 구성하는 것이 좋습니다. 먼저 다음 명령으로 Nginx를 설치합니다.

apt-get install nginx -y

설치가 완료되면 다음 명령을 사용하여 Nginx 가상 호스트 구성 파일을 만듭니다.

nano /etc/nginx/conf.d/taiga.conf

다음 줄을 추가합니다.

server {
    listen 80;
    server_name taiga.example.com;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.error.log;

    # Frontend
    location / {
        root /home/taiga/taiga-front-dist/dist/;
        try_files $uri $uri/ /index.html;
    }

    # Backend
    location /api {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001/api;
        proxy_redirect off;
    }

    # Admin access (/admin/)
    location /admin {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001$request_uri;
        proxy_redirect off;
    }

    # Static files
    location /static {
        alias /home/taiga/taiga-back/static;
    }

    # Media files
    location /media {
        alias /home/taiga/taiga-back/media;
    }

    # Events
    location /events {
        proxy_pass http://127.0.0.1:8888/events;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }
}

파일을 저장하고 닫은 다음 Nginx를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart nginx

Tails 웹 UI에 액세스

이제 웹 브라우저를 열고 URL http://taiga.example.com을 사용하여 Taiga 웹 인터페이스에 액세스하십시오. 다음 페이지로 리디렉션됩니다.

로그인 버튼을 클릭합니다. 다음 페이지로 리디렉션됩니다.

기본 사용자 이름을 admin으로, 비밀번호를 123123으로 입력하고 로그인 버튼을 클릭합니다. 다음 페이지에서 Taiga 대시보드를 볼 수 있습니다.

결론

축하합니다! Ubuntu 20.04에서 Nginx와 함께 Taiga 프로젝트 관리 도구를 성공적으로 설치하고 구성했습니다. 이제 개발 환경에 Taiga를 배포하고 작업을 시작할 수 있습니다.