在 Ubuntu 16.04 上安装 Taiga.io 敏捷项目管理软件
在此页
- 第 1 步 - 安装先决条件
- 第 2 步 - 添加新用户 Taiga
- 第 3 步 - 配置 Taiga 后端
- 第 4 步 - 配置 Taiga 前端
- 第 5 步 - 配置 Taiga 事件
- 第 6 步 - 配置 Circus 和 Gunicorn
- 第 7 步 - 配置 Taiga Nginx 虚拟主机
- 第 8 步 - 测试
- 参考资料
Taiga.io 是一个面向敏捷开发人员、设计师和项目经理的开源项目管理系统。它是一个漂亮的项目管理工具,可以为初创公司、软件开发人员等处理简单和复杂的项目。
Taiga 平台具有三个主要组件,每个组件都有自己的依赖项。
- taiga-back:提供 API 的应用程序后端。用 Python 和 Django 编写。
- taiga-front-dist:Taiga 前端是用 AngularJS 和 CoffeeScript 编写的。
- taiga-events:Taiga WebSocket 服务器,用于显示应用中的实时变化。并使用 RabbitMQ 作为消息代理。
在本教程中,我将逐步向您展示如何在 Ubuntu 16.04 服务器上安装 Taiga.io 项目管理工具。我们将学习如何为 Taiga.io 安装设置 Ubuntu 服务器。
先决条件
- Ubuntu 16.04
- 根权限
我们将要做什么
- 安装先决条件
- 添加 Taiga 用户
- 安装和配置 Taiga 后端
- 安装和配置 Taiga 前端
- 安装和配置 Taiga 事件
- 配置 Circus 和 Gunicorn
- 配置 Taiga Nginx 虚拟主机
- 测试
第 1 步 - 安装先决条件
在安装所有 Taiga.io 组件之前,我们需要通过安装所需的软件包来准备系统。在第一步中,我们将安装所有 Taiga 组件和模块所需的包,包括 Nginx、RabitMQ、Redis 等。
首先,更新存储库并升级系统。
sudo apt update
sudo apt upgrade -y
- 安装依赖
以下包将用于编译一些 python 模块。运行下面的 apt 命令将它们全部安装到系统上。
sudo apt install -y 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
- 安装 Nginx
Taiga.io 是一个基于网络的应用程序工具。它在网络服务器上运行。对于本指南,我们将使用 Nginx Web 服务器进行安装。
使用下面的 apt 命令安装 Nginx。
sudo apt install nginx -y
安装完成后,启动 Nginx 服务并使其在系统启动时启动,您可以使用 systemctl 命令执行此操作。
systemctl start nginx
systemctl enable nginx
现在使用 netstat 检查并确保 HTTP 端口在列表中。
netstat -plntu

- 安装 Redis 和 RabbitMQ
如果您不想要异步通知,这是一个可选包。使用下面的 apt 命令安装 Redis 和 RabbitMQ。
sudo apt install -y redis-server rabbitmq-server
安装完成后,启动redis和rabbitmq服务并将这些服务添加到开机时间。
systemctl start redis
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
接下来,我们需要为 RabbitMQ 创建一个名为 taiga 的新用户和虚拟主机——它将用于 taiga-events。
运行以下命令创建名为 taiga 的新用户和虚拟主机,密码为 aqwe123,然后为 taiga 用户设置权限。
sudo rabbitmqctl add_user taiga aqwe123
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

- 安装 Python
taiga-back 是使用 Django Web Framework 创建的,它使用 Python 3.5。所以我们需要在系统上安装Python 3.5。
运行以下命令以安装 Python 3.5 和所有必需的依赖项。
sudo apt install -y python3 python3-pip python-dev python3-dev python-pip virtualenvwrapper libxml2-dev libxslt-dev
- 安装马戏团
Circus 是一个进程管理器和套接字管理器。它可用于监视和控制Linux系统上的进程和套接字。
对于本指南,我们将使用 circus 来管理使用 CoffeeScript 创建的 taiga-events 流程。
使用下面的 apt 命令安装马戏团。
sudo apt install -y circus
安装完成后,启动circusd服务,并设置每次开机启动。
systemctl start circusd
systemctl enable circusd
systemctl status circusd
circusctl status
- 安装和配置 PostgreSQL 数据库
Taiga.io 使用 PostgreSQL 作为数据库,组件 taiga-back 使用 PostgreSQL (>= 9.4) 作为数据库。
通过运行以下 apt 命令安装 PostgreSQL 9.5。
sudo apt install -y postgresql-9.5 postgresql-contrib-9.5
sudo apt install -y postgresql-doc-9.5 postgresql-server-dev-9.5
如果数据库安装完成,请启动 PostgreSQL 服务并使其在每次系统启动时启动。
systemctl start postgresql
systemctl enable postgresql
接下来,我们将为 Taiga.io 安装创建新的数据库和用户。
登录到 postgres 用户。
su - postgres
使用以下命令创建一个名为 taiga 的新数据库和用户。
createuser taiga
createdb taiga -O taiga
PostgreSQL 数据库已安装,Taiga.io 的数据库已创建。

- 安装节点
taiga-events 需要 Node - 添加 nodejs nodesource 存储库并使用 apt 命令安装它。
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt install -y nodejs
Taiga.io 安装所需的所有包均已成功安装。
第 2 步 - 添加新用户 Taiga
在这一步中,我们将创建一个名为 taiga 的新系统用户,然后将其添加到 sudo 组中。
运行命令以创建新的 taiga 用户。
useradd -m -s /bin/bash taiga
passwd taiga
现在将 taiga 用户添加到 sudo 组。
usermod -a -G sudo taiga
现在以针叶林身份登录并尝试使用 sudo 命令。
su - taiga
sudo su
输入您的密码并确保您获得 root 权限。

已创建新的 taiga 用户。
第 3 步 - 配置 Taiga 后端
Taiga-back 是提供 API 的 Taiga.io 后端。它是用 Python 和 Django Web 框架编写的。
在此步骤中,我们将安装和配置 taiga 组件 taiga-back 作为提供 API 的后端。
登录到 taiga 用户并从 GitHub 下载 taiga-back 源代码。
su - taiga
git clone https://github.com/taigaio/taiga-back.git taiga-back
现在转到 taiga-back 目录并将分支更改为稳定分支。
cd taiga-back/
git checkout stable
接下来,我们需要使用 virtualenv 创建新的 python 环境 taiga。
mkvirtualenv -p /usr/bin/python3.5 taiga

登录到新的 taiga 虚拟环境并使用 pip 命令安装 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
这些命令将自动创建一个管理员帐户 admin,密码为 123123。
接下来,使用 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 = "myverysecretkey"
DEBUG = False
PUBLIC_REGISTER_ENABLED = True
DEFAULT_FROM_EMAIL = ":5672/taiga"}
# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "localhost"
#EMAIL_HOST_USER = ""
#EMAIL_HOST_PASSWORD = ""
#EMAIL_PORT = 25
# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"
保存并退出。
笔记:
- 用您自己的域名更改 MEDIA_URL 和 STATIC_URL。
- 用您自己的密钥更改 SECRET_KEY。
- 将 EVENTS_PUSH_BACKEND_OPTIONS 密码值更改为您自己的 RabbitMQ 值。对于本指南,我们使用密码 aqwe123。
现在用下面的命令测试 taiga-back。
workon taiga
python manage.py runserver 0.0.0.0:8000
该命令将在端口为 8000 的服务器公共 IP 下运行 taiga-back。

打开网络浏览器并访问以下地址。我的是:http://192.168.33.10:8000/api/v1/
你应该得到 taiga-back API,JSON 格式如下。

作为后端的 taiga-back 的安装和配置已经完成。
第 4 步 - 配置 Taiga 前端
在这一步中,我们将下载并配置 taiga 前端。前端将处理所有针叶林接口。
以针叶林用户身份登录。
su - taiga
使用 git 命令下载 taiga-front-dist 脚本。
cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
在此之后,转到 taiga-front-dist 目录并将分支更改为稳定。
cd taiga-front-dist/
git checkout stable
现在将 taiga-front-dist 配置示例复制到 conf.json 并使用 vim 编辑器对其进行编辑。
cp ~/taiga-front-dist/dist/conf.example.json ~/taiga-front-dist/dist/conf.json
vim ~/taiga-front-dist/dist/conf.json
如下进行所有配置,并将 api 和 eventsUrl 更改为您自己的域名。
{
"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": []
}
保存并退出。

Taiga 前端配置已经完成。
第 5 步 - 配置 Taiga 事件
Taiga-events 是一个 WebSocket 服务器,允许您在 Taiga.io 仪表板中显示实时更改,它使用 RabbitMQ 作为消息代理。在此步骤中,我们将下载并配置 taiga-events。
以针叶林用户身份登录。
su - taiga
使用 git 命令从 GitHub 下载 taiga-events 源代码并转到 taiga-events 目录。
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events
现在使用 npm 安装 taiga-events 所需的所有 javascript 模块,然后将 coffee-script 包安装到系统中。
npm install
sudo npm install -g coffee-script

接下来,将 taiga-events 的默认配置复制到 config.json 并使用 vim 编辑器进行编辑。
cp config.example.json config.json
vim config.json
进行如下配置。
{
"url": "amqp://taiga::5672/taiga",
"secret": "myverysecretkey",
"webSocketServer": {
"port": 8888
}
}
保存并退出。
笔记:
- 使用您自己的 rabbitmq 用户和密码更改 url 值。
- 对于秘密值,确保它与 local.py 上的 SECRET_KEY 相匹配,即 taiga-back 的配置文件。
Taiga-events 配置已经完成。
第 6 步 - 配置 Circus 和 Gunicorn
Circus 将用于控制和管理针叶林退化和针叶林活动过程。 taiga-events 作为咖啡脚本运行,而 taiga-back 在 Gunicorn 下运行。
在这一步中,我们将向 circusd 添加新的 taiga-events 和 taiga-bac。
对于针叶林事件,使用 vim 创建新文件 taiga-events.ini。
vim /etc/circus/conf.d/taiga-events.ini
下面粘贴配置。
[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
保存并退出。
对于针叶林后部,创建新文件 taiga.ini。
vim /etc/circus/conf.d/taiga.ini
将以下配置粘贴到那里。
[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
保存并退出。
接下来,我们需要为 taiga-events 和 taiga-back 进程创建新的日志目录。
su - taiga
mkdir -p ~/logs
现在重新启动 circusd 服务并检查所有可用的进程。
systemctl restart circusd
circusctl status
并确保 taiga-events 和 taiga-back 在进程列表中处于活动状态,如下所示。

第 7 步 - 配置 Taiga Nginx 虚拟主机
在这一步中,我们将为 Taiga.io 配置 Nginx 虚拟主机。我们将在 conf.d 目录下为我们的 Taiga.io 安装创建新的虚拟主机文件。
进入nginx配置目录,删除默认的虚拟主机文件。
cd /etc/nginx/
sudo rm -f sites-enabled/default
现在在 conf.d 目录下创建新的虚拟主机文件 taiga.conf。
vim /etc/nginx/conf.d/taiga.conf
将以下配置粘贴到那里。
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;
}
}
保存并退出。
现在运行测试 nginx 配置并确保没有错误。然后重新启动网络服务器服务。
nginx -t
systemctl restart nginx
Taiga.io 的 Nginx 虚拟主机配置已经完成。

第 8 步 - 测试
打开您的网络浏览器并访问 Taiga.io 域名。我的是:http://taiga.hakase-labs.co
您将获得默认的 taiga 主页。

现在点击右上角的登录按钮,您将进入管理员登录页面。

使用默认用户 admin 和密码 123123 登录。
你会得到如下结果。

接下来,我们将重置默认管理员密码。
单击右上角的管理员按钮,然后单击更改密码。

现在根据需要输入旧密码 123123 和新密码,然后单击保存。

Taiga.io 在 Ubuntu 16.04 上的安装和配置已成功完成。
参考
- https://taigaio.github.io/