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主页。