Taiga是一款開源的敏捷項目管理軟件,提供Scrum和KanBan兩種敏捷管理工具。taiga項目管理工具的搭建過程比較繁瑣,下面將其搭建步驟進行了整理。
BackLog
KanBan
兼容性
一、前言
Taiga平臺主要有三部分構成:taiga-back、taiga-front-dist、taiga-event。
1、Taiga-back: taiga平臺的後端,提供API接口響應前端請求返回json數據,由Python和Django編寫。
2、Taiga-front-dist: taiga平臺的前端,提供用戶操作界面,由AngularJs和CoffeeScript編寫。
3、Taiga-events:taiga平臺的事件,提供實時的信息更改,使用RabbitMQ作爲消息代理。
二、搭建
Ubuntu16.04和Centos7的搭建方法基本一致,畢竟Ubuntu和Centos以及Debian和Redhat本是同源。這兩者的安裝只是包的安裝工具apt和yum的區別。下面就以Centos7的安裝爲例。
1、安裝依賴關係
yum -y install gcc gcc-c++ make openssl-devel binutils autoconf flex bison libjpeg-devel freetype-devel zlib-devel perl-ZMQ-LibZMQ3 gdbm-devel ncurses-devel automake libtool libffi-devel curl git tmux gettext epel-release
2、安裝python
Ubuntu和Centos會默認安裝python2.7版本(輸入python測試),在這個項目taiga-back使用的是django web framework使用的是3.5版本,因此需要安裝python3.5。
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
## 安裝python3.5
sudo yum -y install python35u python35u-pip python35u-devel python-devel python-pip python-virtualenvwrapper libxml2-devel libxslt-devel
3、安裝Nginx
Taiga是一個網頁版項目管理工具,在web服務器下運行,因此將使用Nginx作爲web服務器。
sudo yum -y install nginx
啓動該服務以及添加引導啓動
systemctl start nginx
systemctl enable nginx
使用netstat檢查打開的端口,確保Http端口在列表中。
4、安裝Redis和RabbitMQ
Redis和RabbitMQ包將被taiga事件使用。
yum -y install rabbitmq-server redis
安裝成功啓動、添加引導啓動
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
systemctl start redis
systemctl enable redis
5、創建新的taiga用戶以及虛擬主機,並且設置用戶權限,注意密碼
sudo rabbitmqctl add_user taiga aqwe123
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"
6、安裝Nodejs
“taiga-events”需要節點 - 添加nodejs nodesource存儲庫並使用yum命令進行安裝(curl在最開始安裝依賴的時候已經安裝)。
curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
sudo yum -y install nodejs
7、安裝Postgresql
Taiga項目是基於Django框架的,後臺數據庫是依賴postgresql數據庫,下面安裝Postgresql9.5。
# 將Postgresql9.5數據庫添加到系統中
sudo rpm -Uvh http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
# 使用yum安裝PostgreSQL9.5
sudo yum -y install postgresql95 postgresql95-devel postgresql95-contrib postgresql95-docs postgresql95-server
# 初始化數據庫
sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
# 啓動數據庫以及添加引導啓動
systemctl start postgresql-9.5
systemctl enable postgresql-9.5
# 登錄數據庫(默認)
su - postgres
# 爲taiga項目創建新的數據庫和用戶(taiga-back用到taiga數據庫)
createuser taiga
createdb taiga -O taiga
爲Taiga項目的數據庫已經創建。
8、添加taiga用戶
將創建一個名爲“taiga”的新系統用戶和組,然後將其添加到wheel組中以進行sudo命令訪問。
# 使用"useradd"來創建"taiga"用戶和組,並設置密碼
useradd -U -m -s /bin/bash taiga
passwd taiga
# 將"taiga"用戶添加到"wheel"組
usermod -a -G wheel taiga
# 測試"taiga"用戶的sudo訪問權限
su - taiga
sudo su
9、安裝Taiga後端
Taiga-back是taiga項目的後端,它爲前端提供了API。
# 登錄"taiga"用戶並從Github下載"taiga-back"源碼
su - taiga
git clone https://github.com/taigaio/taiga-back.git taiga-back
# 進入'taiga-back'目錄並將分支改爲'stable'分支。
cd taiga-back
git checkout stable
# 更新virtualenv軟件包
sudo pip install --upgrade virtualenv
# 使用mkvirtualenv命令創建新的python環境'taiga'
mkvirtualenv -p /usr/bin/python3.5 taiga
# 安裝所有用於taiga-back的模塊之前,我們需要爲'/ usr / bin'目錄創建'pg_config'命令的新鏈接
sudo ln -s /usr/pgsql-9.5/bin/pg_config /usr/bin/pg_config
# 安裝'taiga-back'所需的所有python模塊
workon taiga
pip install -r requirements.txt
# 使用初始基本數據填充數據庫
python manage.py migrate --noinput
python manage.py loaddata initial_user
python manage.py loaddata initial_project_templates
python manage.py compilemessages
python manage.py collectstatic --noinput
上述操作會自動在數據庫裏面創建一個密碼爲"123123"的管理員賬號"admin"
# 使用vim創建'taiga-back'的新配置
vim ~/taiga-back/settings/local.py
# 粘貼以下配置(###內####)
##################################################################
from .common import *
MEDIA_URL = "http://taiga.hakase-labs.co/media/"
STATIC_URL = "http://taiga.hakase-labs.co/static/"
SITES["front"]["scheme"] = "http"
SITES["front"]["domain"] = "taiga.hakase-labs.co"
SECRET_KEY = "theveryultratopsecretkey"
DEBUG = False
PUBLIC_REGISTER_ENABLED = True
DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL
EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:PASSWORD_FOR_EVENTS@localhost:5672/taiga"}
##################################################################
注意:
(1) 、用自己的ip地址更改“MEDIA_URL”和“STATIC_URL”。例如:"http://10.193.40.137/media/"
(2) 、用你自己的密鑰更改'SECRET_KEY',注意該密碼需要與後面的taiga-events保持一致。
(3) 、將EVENTS_PUSH_BACKEND_OPTIONS密碼值更改爲您自己的RabbitMQ值。 在爲rabbitmq添加用戶的時候的密碼。
測試"taiga-back"
workon taiga
python manage.py runserver 0.0.0.0:8000
在瀏覽器輸入 http://10.193.40.137:8000/api/v1/ (ip地址爲本機地址也是local.py裏面填寫的地址)
返回數據:至此taiga後端已經安裝成功,可以在http://10.193.40.137/admin/ 後臺管理界面登錄 賬號:admin 密碼:123123
10、安裝Taiga前端
Taiga-front-dist是Taiga項目的前端代碼,該項目採用前後端分離的架構,前端處理所有的taiga接口
# 登錄到taiga用戶
su - taiga
# 使用git下載'Taiga前端'源代碼
cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
# 轉到'taiga-front-dist'目錄並將分支更改爲'stable'
cd taiga-front-dist
git checkout stable
# 編輯默認配置文件
cp ~/taiga-front-dist/dist/conf.example.json ~/taiga-front-dist/dist/conf.json
vim ~/taiga-front-dist/dist/conf.json
# 注意注意 將下面的taiga.hakase-labs.co替換爲本機ip 和 搭建後端一樣(###內###)
##################################################################
{
"api": "http://taiga.hakase-labs.co/api/v1/",
"eventsUrl": "ws://taiga.hakase-labs.co/events",
"debug": "true",
"publicRegisterEnabled": true,
"feedbackEnabled": true,
"privacyPolicyUrl": null,
"termsOfServiceUrl": null,
"maxUploadFileSize": null,
"contribPlugins": []
}
##################################################################
# 修改app-loader.js文件
vi ~/taiga-front-dist/dist/v-1573835111605/js/app-loader.js
# 將第一行 window.taigaConfig={api:"http://xxxx:8000/api/v1/"....} 此處的xxxx修改爲本機ip
11、安裝Taiga事件
Taiga-events是一個webSocket服務器,允許taiga儀表盤中顯示實時更改,並使用RabbitMQ作爲消息代理。
# 登錄到taiga用戶
su - taiga
# 下載"taiga-events源碼",然後進入目錄
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events
# 使用npm命令下載並安裝'taiga-events'所需的所有javascript庫
npm install
sudo npm install -g coffee-script
# 編輯配置文件
cp config.example.json config.json
vim config.json
# 粘貼一下配置,注意此處的兩個密碼"aqwe123"和 "theveryultratopsecretkey"需要和前面taiga-back設# 置的密碼保持一致。(###內###)
##################################################################
{
"url": "amqp://taiga:aqwe123@localhost:5672/taiga",
"secret": "theveryultratopsecretkey",
"webSocketServer": {
"port": 8888
}
}
##################################################################
12、安裝circus
circus將用於控制和管理'taiga-back'和'taiga-events'過程。 'taiga-events'正在作爲coffee運行,而'taiga-back'正在django下運行
# 登錄taiga
su - taiga
# 使用git下載馬戲團的源代碼
cd ~/
git clone https://github.com/circus-tent/circus.git circus
# 在taiga用戶下創建新的'conf'目錄
mkdir -p ~/conf
# 創建名爲'taiga.ini'的新馬戲團配置文件
vim ~/conf/taiga.ini
# 粘貼如下配置,該配置包括circus基礎配置以及taiga-back、taiga-events配置(###內###)
##################################################################
[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
statsd = true
[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/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
[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
##################################################################
# 創建日誌文件目錄
mkdir -p ~/logs
# 安裝circus
cd ~/circus
sudo python3.5 setup.py install
# 創建circus服務
sudo su
vim /usr/lib/systemd/system/circusd.service
# 粘貼如下配置,幫助其找到taiga.ini(###內###)
##################################################################
[Unit]
Description=circus
[Service]
ExecStart=/usr/bin/circusd /home/taiga/conf/taiga.ini
##################################################################
# 重新加載systemd系統
systemctl daemon-reload
# 啓動circusd服務並添加引導啓動
systemctl start circusd
systemctl enable circusd
# 檢查circus狀態
systemctl status circusd
13、 配置nginx
Nginx是一個web服務器
# 在nginx配置目錄'conf.d'目錄下創建一個新文件'taiga.conf'
cd /etc/nginx/
vim conf.d/taiga.conf
# 粘貼如下配置(###內###)
##################################################################
server {
listen 80;
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;
}
}
##################################################################
# 配置nginx對taiga-front-dist的訪問權限
sudo gpasswd -a nginx taiga
sudo chmod g+x /home/taiga
sudo chmod g+x /home/taiga/taiga-front-dist
sudo chmod g+x /home/taiga/taiga-front-dist/dist
# 重啓nginx服務
nginx -t
systemctl restart nginx
14、測試
在瀏覽器中運行 10.193.40.137,默認進入taiga主頁。