Cài đặt taiga.io trên windows

Giới thiệu

Taiga là một hệ thống quản lý dự án mã nguồn mở và miễn phí dành cho các nhà phát triển, nhà thiết kế và quản lý dự án Agile, những người muốn có một công cụ đẹp giúp công việc thực sự thú vị. Taiga là một ứng dụng rất mạnh mẽ, dễ sử dụng và hoàn toàn có thể tùy chỉnh, có thể xử lý cả các dự án đơn giản và phức tạp cho các công ty khởi nghiệp, nhà phát triển phần mềm. Phần phụ trợ Taiga được viết bằng Python và Django cung cấp API. Giao diện người dùng được viết bằng JavaScript sử dụng các khung CoffeeScript và AngularJS.

Trong hướng dẫn này, chúng tôi sẽ giải thích cách cài đặt hệ thống quản lý dự án Taiga trên máy chủ Ubuntu 16.04.

Yêu cầu:

  • Phiên bản đám mây Alibaba mới với máy chủ Ubuntu 16.04 được cài đặt.

  • Địa chỉ IP tĩnh 192.168.0.103 được định cấu hình trên phiên bản.

  • Mật khẩu gốc được thiết lập trên máy chủ.

Khởi chạy phiên bản Alibaba Cloud ECS

Đầu tiên, đăng nhập vào Bảng điều khiển Alibaba Cloud ECS của bạn . Tạo một phiên bản ECS mới ,  chọn Ubuntu 16.04 làm hệ điều hành có RAM ít nhất 2GB. Kết nối với phiên bản ECS của bạn và đăng nhập với tư cách người dùng gốc.

apt-get update -y
apt-get update -y

Cài đặt Phụ thuộc Bắt buộc

Trước khi bắt đầu, bạn sẽ cần cài đặt một số phụ thuộc cần thiết để biên dịch các mô-đun Python. Bạn có thể cài đặt tất cả chúng bằng lệnh sau:

apt-get install build-essential binutils-doc autoconf flex bison libjpeg-dev libfreetype6-dev zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev automake libtool libffi-dev curl git tmux gettext -y

Taiga chạy trên máy chủ web. Vì vậy, bạn sẽ cần cài đặt máy chủ web NGINX vào hệ thống của mình. Bạn có thể cài đặt nó bằng lệnh sau:

apt-get install nginx -y

Sau khi NGINX được cài đặt, hãy khởi động dịch vụ NGINX và cho phép nó bắt đầu khi khởi động bằng lệnh sau:

systemctl start nginx
systemctl enable nginx

Nodejs cũng được yêu cầu bởi Taiga-event. Bạn có thể cài đặt Nodejs bằng lệnh sau:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
apt-get install nodejs pwgen npm -y

Phần phụ trợ Taiga được viết bằng Python và Django Framework sử dụng Python 3.5. Vì vậy, bạn sẽ cần cài đặt Python 3.5 vào hệ thống của mình. Bạn có thể cài đặt nó bằng lệnh sau:

apt-get install python3 python3-pip python-dev python3-dev python-pip virtualenvwrapper libxml2-dev libxslt-dev -y

Tiếp theo, bạn sẽ cần cài đặt xiếc để quản lý quy trình Taiga-event được tạo bằng CoffeeScript. Bạn có thể cài đặt nó bằng lệnh sau:

apt-get install circus -y

Sau khi đã cài đặt xiếc, hãy khởi động dịch vụ xiếcd và cho phép nó khởi động khi khởi động bằng lệnh sau:

systemctl start circusd
systemctl enable circusd

Cài đặt và cấu hình cơ sở dữ liệu PostgreSQL

Taiga sử dụng PostgreSQL để lưu trữ cơ sở dữ liệu của nó. Theo mặc định, PostgreSQL không có sẵn trong kho lưu trữ mặc định Ubuntu 16.04. Vì vậy, bạn sẽ cần thêm kho PostgreSQL vào hệ thống. Bạn có thể thực hiện việc này bằng lệnh sau:

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

Tiếp theo, cập nhật kho lưu trữ và cài đặt PostgreSQL bằng lệnh sau:

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

Tiếp theo, khởi động dịch vụ PostgreSQL và cho phép nó bắt đầu khi khởi động bằng lệnh sau:

systemctl start postgresql
systemctl enable postgresql

Tiếp theo, đăng nhập vào người dùng PostgreSQL và tạo cơ sở dữ liệu và người dùng cho Taiga:

su - postgres
createuser taiga 
psql
ALTER USER taiga WITH ENCRYPTED password 'password';
CREATE DATABASE taiga OWNER taiga;

Thoát khỏi trình bao PostgreSQL:

\q

Cài đặt RabbitMQ

Taiga sử dụng RabbitMQ để xử lý hàng đợi tin nhắn. Vì vậy, bạn sẽ cần cài đặt RabbitMQ vào máy chủ của mình.

Đầu tiên, cài đặt thư viện Erlang bằng lệnh sau:

apt-get install erlang -y

Tiếp theo, thêm kho lưu trữ RabbitMQ và Nhập khóa ký GPG RabbitMQ bằng lệnh sau:

echo 'deb http://www.rabbitmq.com/debian/ stable main' | tee /etc/apt/sources.list.d/rabbitmq.list
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | apt-key add -

Tiếp theo, cập nhật kho lưu trữ và cài đặt RabbitMQ bằng lệnh sau:

apt-get update -y
apt-get install rabbitmq-server -y

Tiếp theo, khởi động dịch vụ RabbitMQ và cho phép nó bắt đầu khi khởi động bằng lệnh sau:

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

Tiếp theo, bạn sẽ cần tạo một người dùng mới và máy chủ ảo có tên "taiga" cho RabbitMQ:

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

Định cấu hình Taiga Backend

Taiga-back là phần phụ trợ của Taiga được viết bằng Python và Django Web Framework cung cấp một API.
Đầu tiên, tạo một người dùng Taiga mới và đặt mật khẩu bằng lệnh sau:

adduser taiga

Tiếp theo, đăng nhập vào người dùng Taiga và tạo một thư mục mới để lưu trữ các tệp nhật ký.

su - taiga
mkdir -p ~/logs

Tiếp theo, sao chép kho phụ trợ Taiga từ GitHub và kiểm tra nhánh ổn định mới nhất.

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

Bạn sẽ thấy kết quả sau:

Cloning into 'taiga-back'...
remote: Counting objects: 32790, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 32790 (delta 3), reused 13 (delta 3), pack-reused 32772
Receiving objects: 100% (32790/32790), 15.99 MiB | 393.00 KiB/s, done.
Resolving deltas: 100% (22346/22346), done.
Checking connectivity... done.

Tiếp theo, thay đổi thư mục thành taiga-back và kiểm tra kho lưu trữ ổn định:

cd taiga-back
checkout stable

Tiếp theo, tạo một môi trường Python mới  taiga  bằng virtualenv.

mkvirtualenv -p /usr/bin/python3 taiga

Tiếp theo, đăng nhập vào môi trường ảo Taiga mới và cài đặt tất cả các mô-đun Python bằng lệnh sau:

workon taiga
pip3 install --upgrade setuptools
pip3 install -r requirements.txt

Khi tất cả các mô-đun bắt buộc đã được cài đặt, hãy điền vào cơ sở dữ liệu những dữ liệu ban đầu cần thiết bằng cách sử dụng lệnh sau:

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

Lệnh trên sẽ tạo tài khoản quản trị viên "admin" với mật khẩu "123123."


Tiếp theo, bạn sẽ cần tạo tệp cấu hình cho phần phụ trợ Taiga. Đầu tiên, tạo một chuỗi ngẫu nhiên gồm 64 ký tự bằng lệnh sau:

pwgen -s -1 64

Bạn sẽ thấy kết quả sau:

DYnT63VmANLGw8YN0IJcRXjz7DPWoXTArpaPDojFeSDcWTooVaD4Bmx9Ej8bvicz

Tiếp theo, tạo một tệp cấu hình mới cho Taiga Backend:

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

Thêm các dòng sau:

from .common import *

MEDIA_URL = "https://example.com/media/"
STATIC_URL = "https://example.com/static/"
SITES["front"]["scheme"] = "http"
SITES["front"]["domain"] = "example.com"
SECRET_KEY = "DYnT63VmANLGw8YN0IJcRXjz7DPWoXTArpaPDojFeSDcWTooVaD4Bmx9Ej8bvicz"
DEBUG = False
PUBLIC_REGISTER_ENABLED = True
DEFAULT_FROM_EMAIL = ""
SERVER_EMAIL = DEFAULT_FROM_EMAIL
EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:password@localhost:5672/taiga"}

Lưu và đóng tệp, sau đó kiểm tra "taiga-back" bằng lệnh sau:

workon taiga
python manage.py runserver

Bạn sẽ thấy kết quả sau:

Trying import local.py settings...
Trying import local.py settings...
Performing system checks...

System check identified no issues (0 silenced).
May 17, 2018 - 14:37:22
Django version 1.11.2, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Bây giờ, hãy mở trình duyệt web của bạn và nhập URL "http://192.168.0.103:8000/api/v1/."
Bạn sẽ thấy API "taiga-back" với định dạng JSON trong hình ảnh sau:

Cài đặt taiga.io trên windows

Định cấu hình Taiga Frontend

Đầu tiên, hãy đăng nhập vào người dùng Taiga và sao chép kho lưu trữ giao diện người dùng Taiga từ Github và kiểm tra nhánh ổn định mới nhất.

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

Tiếp theo, tạo tệp cấu hình mới cho giao diện người dùng Taiga bằng lệnh sau:

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

Thêm các dòng sau:

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

Lưu và đóng tệp khi bạn hoàn tất.

Định cấu hình sự kiện Taiga

Bạn cũng sẽ cần phải định cấu hình Sự kiện Taiga cho máy chủ của mình. Sự kiện Taiga là một máy chủ ổ cắm web cho phép giao diện người dùng Taiga hiển thị các thay đổi trong thời gian thực trong các mô-đun.

Đầu tiên, đăng nhập vào người dùng Taiga và sao chép kho sự kiện Taiga từ Github:

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

Tiếp theo, cài đặt tất cả các phụ thuộc cần thiết của 'taiga-event' bằng npm và sau đó cài đặt gói 'coffee-script' vào máy chủ:

npm install
npm install -g coffee-script

Tiếp theo, tạo một tệp cấu hình mới cho các sự kiện Taiga bằng lệnh sau:

nano ~/taiga-events/config.json

Thêm các dòng sau:

{
    "url": "amqp://taiga:password@localhost:5672/taiga",
    "secret": "DYnT63VmANLGw8YN0IJcRXjz7DPWoXTArpaPDojFeSDcWTooVaD4Bmx9Ej8bvicz",
    "webSocketServer": {
        "port": 8888
    }
}

Lưu và đóng tệp khi bạn hoàn tất.

Định cấu hình rạp xiếc

Circus là một trình quản lý quy trình cho các ứng dụng Python có thể được sử dụng để kiểm soát và quản lý quy trình "taiga-back" và "taiga-event". Đầu tiên, tạo một tệp cấu hình Circus mới để chạy phần phụ trợ Taiga.

nano /etc/circus/conf.d/taiga.ini

Thêm các dòng sau:

[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4

[env:taiga]
PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.5/site-packages

Lưu và đóng tệp, sau đó tạo tệp mới cho các sự kiện taiga:

nano /etc/circus/conf.d/taiga-events.ini

Thêm các dòng sau:

working_dir = /home/taiga/taiga-events
cmd = /usr/local/bin/coffee
args = index.coffee
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/taigaevents.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 12
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/taigaevents.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 12

Lưu tệp, khi bạn hoàn tất.


Tiếp theo, tạo một thư mục nhật ký mới cho cả hai quy trình "taiga-event" và "taiga-back", sau đó khởi động lại  circusd  dịch vụ bằng lệnh sau:

su - taiga
mkdir -p ~/logs
exit
systemctl restart circusd

Bây giờ bạn có thể kiểm tra trạng thái  circusd  sử dụng lệnh sau:

circusctl status

Bạn sẽ thấy kết quả sau:

circusd-stats: active
plugin:flapping: active
taiga: active
taiga-events: active

Định cấu hình NGINX cho Taiga

Tiếp theo, tạo một chỉ thị máy chủ ảo NGINX mới cho Taiga.

nano /etc/nginx/sites-available/taiga

Thêm các dòng sau:

server {
     listen 80 default_server;
     server_name _;

     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;
     }

     # Django 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;
     }

     # Taiga-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;
     }
 }

Lưu và đóng tệp, sau đó bật máy chủ ảo bằng lệnh sau:

ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/

Cuối cùng, khởi động lại dịch vụ NGINX bằng lệnh sau:

systemctl restart nginx

Đó là nó! Bây giờ bạn có thể truy cập cài đặt Taiga bằng cách truy cập vào URL http://example.com.