在 Ubuntu 20.04 上安装 Taiga 项目管理平台 |在 Ubuntu 20.04 上安装 Taiga 项目管理平台 |在 Ubuntu 20.04 上安装 Taiga 项目管理平台 |在 Ubuntu 20.04 上安装 Taiga 项目管理平台 |
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 Ubuntu 20.04 上安装 Taiga 项目管理平台 |

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在今天的文章中,我们将介绍在 Ubuntu 20.04 上设置工作 Taiga 项目管理平台所需的所有步骤。 Taiga 是一款开源项目管理 Web 应用程序,采用 Scrum 设计,适用于小型和大型团队。

Taiga.io 构建在 Python、Django、AngularJS 和 CoffeeScript 之上。该项目管理工具为您提供了一种简单有效的方法来管理项目、改善协作、时间跟踪、错误跟踪、看板、wiki、报告、待办事项等等。

Taiga 平台由三个主要模块组成,每个模块在编译时和运行时都有自己的依赖项:

  • taiga-back – 这是后端/API 模块
  • taiga-front-dist – 为用户提供门户的前端模块。
  • taiga-events – Websockets 网关。这是可选的,您可以安装或跳过。

本教程假设您正在新安装的 Ubuntu 20.04 服务器上工作。确保所有软件包均更新至最新版本。

sudo apt update
sudo apt upgrade -y

在继续后续安装步骤之前重新启动系统。

sudo reboot

第 1 步:设置服务器主机名和 DNS

让我们首先设置正确的服务器主机名:

sudo hostnamectl set-hostname taiga.hirebestengineers.com --static

确认主机名设置。

$ hostnamectl
   Static hostname: taiga.hirebestengineers.com
         Icon name: computer-vm
           Chassis: vm
        Machine ID: be43a41780154ad0b9148af9afe95a4e
           Boot ID: 94c4e0892cf54c6baea75be6ff7387ba
    Virtualization: kvm
  Operating System: Ubuntu 20.04.1 LTS
            Kernel: Linux 5.4.0-48-generic
      Architecture: x86-64

将正确的 IP 地址和 FQDN 添加到 /etc 目录中的 hosts 文件中。

$ sudo vim /etc/hosts
135.181.102.168 taiga.hirebestengineers.com

核实 :

$ host taiga.hirebestengineers.com
taiga.hirebestengineers.com has address 135.181.102.168

还要在您的 DNS 服务器中添加 A 记录。

确认本机是否可以查询该记录。

$ dig A  taiga.hirebestengineers.com +short
135.181.102.168

第二步:安装依赖包

下一步是安装运行 Taiga 项目管理平台所需的所有依赖包。

安装git、Python3和其他包:

sudo apt update
sudo apt -y install git pwgen automake wget curl gettext 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 python3 virtualenvwrapper python3-dev python3-pip python3-dev libssl-dev tmux

安装 Nginx 网络服务器:

sudo apt -y install nginx

安装 Redis 和 RabbitMQ:

sudo apt -y install rabbitmq-server redis-server

安装 RabbitMQ 服务器后,为 Taiga 创建用户和虚拟主机:

$ sudo rabbitmqctl add_user taiga StrongPassword
Adding user "taiga" ...

$ sudo rabbitmqctl add_vhost taiga
Adding vhost "taiga" ...

$ sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"
Setting permissions for user "taiga" in vhost "taiga" ...

安装 Node.js

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt -y install nodejs

步骤 3:安装和配置 PostgreSQL

Taiga.io 需要 PostgreSQL 数据库服务器。安装并配置如下:

导入存储库签名密钥:

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

添加 PostgreSQL apt 存储库:

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

更新软件包列表并安装 postgresql 软件包

sudo apt update
sudo apt install postgresql -y

使用以下命令设置 PostgreSQL 管理员用户的密码:

$ sudo passwd postgres
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

为 Taiga.io 创建数据库和用户

$ sudo su - postgres
postgres@taiga:~$ createuser taiga 
postgres@taiga:~$ psql 
psql (12.4 (Ubuntu 12.4-1.pgdg20.04+1))
Type "help" for help.

postgres=# ALTER USER taiga WITH ENCRYPTED password 'StrongPassword';
postgres=# CREATE DATABASE taiga OWNER taiga;
postgres=# \q
postgres@taiga:~$ exit

代替 :

  • taiga 使用您的 Taiga.io 数据库用户名
  • StrongPassword 为针叶林用户提供强数据库密码。

第 4 步:安装和配置 Taiga 后端

创建 taiga 用户:

$ sudo adduser taiga
Adding user `taiga' ...
Adding new group `taiga' (1000) ...
Adding new user `taiga' (1000) with group `taiga' ...
Creating home directory `/home/taiga' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for taiga
Enter the new value, or press ENTER for the default
	Full Name []:
	Room Number []:
	Work Phone []:
	Home Phone []:
	Other []:
Is the information correct? [Y/n] y

$ sudo adduser taiga sudo
Adding user `taiga' to group `sudo' ...
Adding user taiga to group sudo
Done.

切换到 Taiga 用户帐户并创建日志文件夹

$ su - taiga
$ mkdir -p ~/logs
$ ls
logs

从 Github 克隆 Taiga 后端项目

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

创建虚拟环境

然后为 Taiga.io 后端创建 Virtualenv 并安装所需的依赖项

mkvirtualenv -p /usr/bin/python3 taiga_venv
pip3 install -r requirements.txt

如果您收到错误消息“mkvirtualenv:找不到命令”,请参阅以下指南进行修复:

  • 修复 Ubuntu 上找不到 mkvirtualenv 命令

使用初始基本数据填充数据库

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

运行上述命令时,数据将导入到您的 PostgreSQL 数据库中。这还会创建管理员帐户,其登录凭据为 admin,密码为 123123

如果您需要示例数据,可以使用python3 manage.py sample_data加载。这仅用于演示目的,以后可能很难清理数据。

创建配置

将以下配置复制到 ~/taiga-back/settings/local.py 中:

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

复制并更新以下内容:

from .common import *

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

SECRET_KEY = "OQOEJNSJIQHDBQNSUQEJSNNANsqQPAASQLSMSOQND"

DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "[email "
SERVER_EMAIL = DEFAULT_FROM_EMAIL

#CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongPassword@localhost: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"

更改设置以适合您的环境,设置:

  • RabbitMQ 连接用户名和密码
  • 泰加域名
  • 密钥和
  • 可选的电子邮件设置。

配置验证

为了确保一切正常,请发出以下命令以开发模式运行后端进行测试:

workon taiga_venv
python manage.py runserver

成功输出示例:

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

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

打开另一个SHELL并尝试curl:

curl http://127.0.0.1:8000/api/v1/

禁用 Virtualenv 以开始前端安装。

$ deactivate

第 5 步:安装和配置 Taiga 前端

taiga-front 主要是用 angularjs 和 CoffeeScript 编写的,并且依赖于后端。在进行这些部分配置之前,您需要配置 Taiga 后端。

切换到taiga用户帐户

su - taiga

从 Github 克隆项目源代码

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
vim ~/taiga-front-dist/dist/conf.json

按照以下模式编辑示例配置(替换为您自己的详细信息):

{
    "api": "http://taiga.hirebestengineers.com/api/v1/",
    "eventsUrl": "ws://taiga.hirebestengineers.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.hirebestengineers.com 替换为您的 DNS 名称。

第 6 步:安装 Taiga Events

Taiga-events 是 Taiga websocket 服务器,它允许 taiga-front 显示待办事项、任务板、看板和问题列表中的实时变化。 Taiga-events 使用rabbitmq 作为消息代理。

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

安装所需的 JavaScript 依赖项:

npm install

为 Taiga Events 创建配置文件。

cp config.example.json config.json

编辑配置文件并设置rabbitmq URL和Secret key:

$ vim config.json

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

config.json 中的密钥值必须与 ~/taiga-back/settings/ 中的 SECRET_KEY 相同local.py!

将 taiga-events 添加到 systemd 配置中:

sudo tee /etc/systemd/system/taiga_events.service<<EOF
[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
EOF

重新加载Systemd并启动服务:

sudo systemctl daemon-reload
sudo systemctl start taiga_events
sudo systemctl enable taiga_events

检查服务是否处于运行状态:

$ systemctl status taiga_events.service
● taiga_events.service - taiga_events
     Loaded: loaded (/etc/systemd/system/taiga_events.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-09-30 22:51:07 CEST; 3min 17s ago
   Main PID: 18269 (node)
      Tasks: 7 (limit: 4567)
     Memory: 18.8M
     CGroup: /system.slice/taiga_events.service
             └─18269 node node_modules/coffeescript/bin/coffee index.coffee

第7步:启动Taiga服务

创建一个新的 taiga systemd 文件:

sudo tee /etc/systemd/system/taiga.service<<EOF
[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
EOF

重新加载 systemd 守护进程并启动 taiga 服务:

sudo systemctl daemon-reload
sudo systemctl start taiga
sudo systemctl enable taiga

执行以下命令检查服务是否正在运行。

$ systemctl status taiga
● taiga.service - taiga_back
     Loaded: loaded (/etc/systemd/system/taiga.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-09-30 22:58:28 CEST; 7s ago
   Main PID: 19087 (gunicorn)
      Tasks: 5 (limit: 4567)
     Memory: 266.1M
     CGroup: /system.slice/taiga.service
             ├─19087 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 t>
             ├─19109 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 t>
             ├─19110 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 t>
             ├─19111 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 t>
             └─19112 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 t>

Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19087]: /usr/lib/python3.8/os.py:1023: RuntimeWarning: line buffering (buffering=1) isn't supported in binar>
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19087]:   return io.open(fd, *args, **kwargs)
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19109]: [2020-09-30 22:58:28 +0200] [19109] [INFO] Booting worker with pid: 19109
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19110]: [2020-09-30 22:58:28 +0200] [19110] [INFO] Booting worker with pid: 19110
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19109]: Trying import local.py settings...
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19110]: Trying import local.py settings...
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19111]: [2020-09-30 22:58:28 +0200] [19111] [INFO] Booting worker with pid: 19111
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19112]: [2020-09-30 22:58:28 +0200] [19112] [INFO] Booting worker with pid: 19112
Sep 30 22:58:28 taiga.hirebestengineers.com gunicorn[19111]: Trying import local.py settings...
Sep 30 22:58:29 taiga.hirebestengineers.com gunicorn[19112]: Trying import local.py settings...

第 8 步:将 Nginx 配置为 Taiga 的代理

taiga-front-dist 和 taiga-back 都必须使用代理/静态文件 Web 服务器暴露给外部。为此,Taiga 使用 NGINX。

NGINX 用作静态文件 Web 服务器,为 taiga-front-dist 提供服务并向 taiga-back 发送代理请求。首先删除默认的 Nginx 配置文件。

sudo rm /etc/nginx/sites-enabled/default

为 Taiga 创建 NGINX 虚拟主机:

sudo vim /etc/nginx/conf.d/taiga.conf

相应修改配置文件。

server {
    listen 80 default_server;
    server_name _;  #  See http://nginx.org/en/docs/http/server_names.html

    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 配置:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果一切正常,请重新启动 nginx 服务:

sudo systemctl restart nginx

检查状态:

$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-09-30 23:21:51 CEST; 27s ago
       Docs: man:nginx(8)
    Process: 20262 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 20276 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 20277 (nginx)
      Tasks: 3 (limit: 4567)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ├─20277 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─20278 nginx: worker process
             └─20279 nginx: worker process

Sep 30 23:21:51 taiga.hirebestengineers.com systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 30 23:21:51 taiga.hirebestengineers.com systemd[1]: Started A high performance web server and a reverse proxy server.

第 9 步:访问 Taiga Web 登录仪表板

打开您最喜欢的网络浏览器并转到:

http://your_taiga_domain.com

您应该看到登录屏幕。

使用以下默认凭据登录:

Username: admin
Password: 123123

然后在管理员 > 更改密码中更改管理员密码

第 10 步:使用 SSL 进行安全安装

请按照下面的指南使用 SSL 证书强化 Taiga 安装。

  • 使用 Let’s Encrypt SSL 保护 Taiga 项目管理平台

如何禁用自注册

要阻止用户注册,请编辑文件 ~/taiga-back/settings/local.py 并将 PUBLIC_REGISTER_ENABLED 的值设置为 false。

$ su - taiga
$ vim ~/taiga-back/settings/local.py
PUBLIC_REGISTER_ENABLED = False

更改 Taiga 前端的设置:

$ vim ~/taiga-front-dist/dist/conf.json
"publicRegisterEnabled": false

更新配置后重新启动所有 Taiga 服务:

sudo systemctl restart 'taiga*'

重新加载 nginx:

sudo systemctl reload nginx

前 :

后 :

享受 Taiga 项目管理平台带来的炫酷功能。

相关指南:

  • 在 CentOS 8 上安装 OpenProject 社区版
  • 如何在 CentOS 8/RHEL 8 Linux 上安装 Jira
  • 在 Ubuntu 上安装 OpenProject
©2015-2025 Norria support@norria.com