Как установить Taiga Project Management Tool на CentOS 7

Taiga - это бесплатное приложение с открытым исходным кодом для управления проектами. В отличие от других инструментов управления проектами, Taiga использует поэтапный и гибкий подход для управления развитием проекта. Тайга - очень мощное и полностью настраиваемое приложение. Бэкэнд Taiga написан на Python с использованием фреймворка Django. Интерфейс написан на JavaScript с использованием сред CoffeeScript и AngularJS. Тайга включает в себя такие функции, как совместная работа над проектом, доска объявлений Канбан, отслеживание ошибок, создание отчетов, отслеживание времени, задержек, вики и многое другое.

Предпосылки

В этом уроке мы будем использовать taiga.example.comимя домена, указывающее на сервер. Замените все вхождения taiga.example.comс вашим фактическим доменным именем.

Обновите базовую систему, используя руководство Как обновить CentOS 7 . После обновления системы перейдите к установке PostgreSQL.

Установить PostgreSQL

PostgreSQL - это объектно-реляционная система баз данных, известная своей стабильностью и скоростью. Тайга использует PostgreSQL для хранения своей базы данных. Добавьте репозиторий PostgreSQL в систему.

sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

Установите сервер базы данных PostgreSQL.

sudo yum -y install postgresql10-server postgresql10-contrib postgresql10 

Инициализируйте базу данных.

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

Запустите сервер PostgreSQL и включите его автоматический запуск во время загрузки.

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

Измените пароль для пользователя PostgreSQL по умолчанию.

sudo passwd postgres

Войдите в систему как пользователь PostgreSQL.

sudo su - postgres

Создайте нового пользователя PostgreSQL для Taiga.

createuser taiga 

PostgreSQL предоставляет psqlоболочку для выполнения запросов к базе данных. Переключитесь на оболочку PostgreSQL.

psql

Установите пароль для вновь созданного пользователя для базы данных Taiga.

ALTER USER taiga WITH ENCRYPTED password 'DBPassword';

Замените DBPasswordна безопасный пароль. Создайте новую базу данных для установки Тайги.

CREATE DATABASE taiga OWNER taiga;

Выход из psqlоболочки.

\q

Переключиться на sudoпользователя.

exit

Установите Python 3

Python 2.7 поставляется предварительно установленным на сервере CentOS 7, но для Taiga требуется Python версии 3.4 или новее.

Мы установим Python версии 3.6 из исходного кода. Установите необходимые инструменты сборки и компилятор.

sudo yum -y install gcc autoconf flex bison libjpeg-turbo-devel freetype-devel zlib-devel zeromq3-devel gdbm-devel ncurses-devel automake libtool libffi-devel curl git tmux libxml2-devel libxslt-devel openssl-devel gcc-c++

Загрузите исходный код Python.

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz

Извлеките и настройте установку Python.

tar xf Python-3.6.3.tar.xz
cd Python-3.6.3
./configure --enable-optimizations --prefix=/usr

Сделайте альтернативную установку.

sudo make altinstall

Примечание : Альтернативные установки устанавливают Python 3.6 без замены версии Python по умолчанию. Если вы замените Python по умолчанию в CentOS 7, он может сломать YUMменеджер хранилища.

Теперь вы сможете проверить его версию.

python3.6 -V

Вы должны увидеть следующее.

[user@vultr Python-3.6.3]$ python3.6 -V
Python 3.6.3

Установите виртуальную среду Python, используя pip.

sudo pip3.6 install virtualenv virtualenvwrapper
sudo pip3.6 install --upgrade setuptools pip 

Виртуальная среда Python используется для создания изолированной виртуальной среды для проекта Python. Виртуальная среда содержит свои собственные установочные каталоги и не разделяет библиотеки с глобальными и другими виртуальными средами.

Установить RabbitMQ

Тайга использует RabbitMQ для обработки очереди сообщений. RabbitMQ требует библиотеки Erlang для работы. Установите Erlang.

sudo yum -y install erlang

Импорт ключа подписи RabbitMQ GPG.

sudo rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

Установите RabbitMQ.

sudo yum -y install https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el7.noarch.rpm

Запустите и включите сервер RabbitMQ.

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

Добавьте пользователя RabbitMQ и vhost. Также предоставьте разрешение пользователю через хост.

sudo rabbitmqctl add_user taiga StrongMQPassword
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

Обязательно замените его StrongMQPasswordна безопасный пароль.

Установить Nodejs

Node.js версии 7 или новее необходим для компиляции внешнего интерфейса Taiga. Добавьте репозиторий Node.js версии 8.

curl -sL https://rpm.nodesource.com/setup_8.x | sudo -E bash -

Установите Node.js и pwgenутилиту.

sudo yum install -y nodejs pwgen

pwgenбудет использоваться позже для генерации сильной секретной строки. Установите CoffeeScript, так как он будет использоваться для компиляции файлов Taiga, написанных с использованием среды CoffeeScript.

sudo npm install -g coffee-script gulp

Установить Тайга Бэкэнд

Добавьте нового системного пользователя для Taiga, чтобы гарантировать, что процессы Taiga работают как непривилегированный пользователь.

sudo useradd -s /bin/bash taiga
sudo su - taiga

Примечание . С этого момента все команды необходимо запускать как непривилегированный пользователь, taigaпока вас не попросят вернуться обратно к sudoпользователю.

Создайте новый каталог для хранения файлов журнала.

mkdir -p ~/logs

Клонируйте хранилище Taiga backend из GitHub и оформите последнюю стабильную ветку.

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

Настройте virtualenvwrapperдля использования Python 3.6 вместо Python по умолчанию.

echo "VIRTUALENVWRAPPER_PYTHON='/bin/python3.6'" >> ~/.bashrc
echo "source /usr/bin/virtualenvwrapper.sh" >> ~/.bashrc

Наконец, источник ~/.bashrcфайла.

source ~/.bashrc

Теперь создайте новую виртуальную среду для Тайги, используя Python 3.6.

mkvirtualenv -p /bin/python3.6 taiga
pip3.6 install --upgrade setuptools

Установите необходимые зависимости Python, используя pip.

pip3.6 install -r requirements.txt

Заполните базу данных необходимыми исходными данными.

python3.6 manage.py migrate --noinput
python3.6 manage.py loaddata initial_user
python3.6 manage.py loaddata initial_project_templates
python3.6 manage.py compilemessages
python3.6 manage.py collectstatic --noinput

Вышеуказанные команды будут записывать данные в базу данных PostgreSQL. Тайга также отправляет некоторые демонстрационные данные или образцы данных, которые могут быть полезны для оценки продукта. Если вы хотите установить образец данных, выполните следующее.

python3.6 manage.py sample_data

Примечание . Установка примеров данных не является обязательной и предназначена только для оценки продукта.

Прежде чем приступить к созданию файла конфигурации для бэкэнда Taiga, нам нужно сгенерировать секретную строку. Эта строка будет использоваться для шифрования данных сеанса.

Генерация случайной строки из 64 символов.

pwgen -s -1 64

Вы должны увидеть результат в виде случайной строки.

(taiga) [taiga@vultr taiga-back]$ pwgen -s -1 64
CZfjWjHctPwnLZsDysWqaZcYfRCviHbI4fVRwfhpbtAHPNBtmkcegpwpYjTtEziJ

Создайте новый файл конфигурации для Taiga Backend.

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

Заполните файл с помощью следующего кода.

from .common import *

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

SECRET_KEY = "Generated_Secret_Key"

DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL

#CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongMQPassword@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 = "mail.example.com"
#EMAIL_HOST_USER = "[email protected]"
#EMAIL_HOST_PASSWORD = "SMTPPassword"
#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"

Обязательно замените пример доменного имени на фактическое в приведенном выше коде. Также замените Generated_Secret_Keyдействительным секретным ключом и StrongMQPasswordдействительным паролем для пользователя очереди сообщений «Тайга». Если у вас есть готовый SMTP-сервер и вы хотите немедленно использовать функции отправки электронной почты, вы можете раскомментировать параметры электронной почты и установить соответствующие значения. Если у вас нет готового почтового сервера, вы можете на данный момент пропустить настройку функции электронной почты и настроить ее позже в этом файле конфигурации.

Если вы хотите включить вход в GitHub, создайте приложение в GitHub и предоставьте идентификатор клиента API и секрет клиента.

Чтобы сразу проверить, можно ли запустить бэкэнд Taiga, запустите встроенный сервер Django.

workon taiga
python manage.py runserver

Вы увидите следующий вывод, если сервер успешно запущен.

(taiga) [taiga@vultr taiga-back]$ workon taiga
(taiga) [taiga@vultr taiga-back]$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...

System check identified no issues (0 silenced).
October 25, 2017 - 07:07:28
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Чтобы проверить, доступен ли API, откройте другой сеанс терминала и выполните следующее.

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

Вы увидите похожий вывод, возвращаемый вызовом API.

[user@vultr ~]$ curl http://127.0.0.1:8000/api/v1/
{"locales": "http://127.0.0.1:8000/api/v1/locales", "auth": "http://127.0.0.1:8000/api/v1/auth", "users": "http://127.0.0.1:8000/api/v1/users", "roles": "http://127.0.0.1:8000/api/v1/roles", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "notify-policies": "http://127.0.0.1:8000/api/v1/notify-policies", "projects": "http://127.0.0.1:8000/api/v1/projects", "projects/(?P<resource_id>\\d+)/fans": "http://127.0.0.1:8000/api/v1/projects/(?P<resource_id>\\d+)/fans", "projects/(?P<resource_id>\\d+)/watchers": "http://127.0.0.1:8000/api/v1/projects/(?P<resource_id>\\d+)/watchers", "project-templates": "http://127.0.0.1:8000/api/v1/project-templates",

Остановите сервер «Тайга», нажав « Ctrl + C», и деактивируйте виртуальную среду.

deactivate

Установить интерфейс

Интерфейс Taiga является компонентом Taiga, который обслуживает веб-интерфейс пользователя. Клонируйте хранилище внешнего интерфейса Taiga от Github и оформите последнюю стабильную ветку.

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

Создайте новый файл конфигурации для интерфейса Taiga.

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

Заполните файл этим.

{
    "api": "https://taiga.example.com/api/v1/",
    "eventsUrl": "wss://taiga.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
}

Обязательно замените exampleдомен реальным доменом. Вы также можете изменить язык по умолчанию и другие параметры в конфигурации выше.

Установить Тайга События

Помимо внешнего интерфейса и внутреннего интерфейса нам также необходимо установить события тайги. События Taiga - это сервер веб-сокетов, и он позволяет интерфейсу Taiga в реальном времени отображать изменения в модулях, таких как backlog, Kanban и другие. Он использует сервер RabbitMQ для обработки сообщений.

Клон Тайга, хранилище событий от Github.

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

Установите зависимости Node.js, используя npm.

npm install

Создайте новый файл конфигурации для событий Тайги.

nano ~/taiga-events/config.json

Заполните файл следующим.

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

Замените Generated_Secret_Keyдействительным секретным ключом длиной 64 символа, который вы сгенерировали в прошлом. Секретный ключ должен совпадать с ключом, который вы указали в файле конфигурации бэкенда Taiga. Также обновите StrongMQPasswordпароль, указав фактический пароль для пользователя очереди сообщений «Тайга».

Настроить Цирк

Circus - менеджер процессов для приложений на Python. Мы будем использовать Цирк для запуска тайги и событий

Вернитесь к sudoпользователю.

exit

Примечание : теперь вам нужно будет запускать команды, используя sudoпользователя.

Установите Цирк используя pip.

sudo pip3.6 install circus

Создайте новые каталоги для хранения конфигураций Circus.

sudo mkdir /etc/circus
sudo mkdir /etc/circus/conf.d

Создайте файл конфигурации по умолчанию для Circus.

sudo nano /etc/circus/circus.ini

Заполните файл следующей конфигурацией.

[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
include = /etc/circus/conf.d/*.ini

Создайте новый файл конфигурации Circus для запуска бэкэнда Taiga.

sudo nano /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.6/site-packages

Создайте новую конфигурацию Цирка для запуска Тайги.

sudo nano /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

Теперь нам нужно создать systemdслужебный файл для запуска Circus. Использование systemdобеспечит автоматический запуск Circus во время перезагрузки и сбоев.

sudo nano /etc/systemd/system/circus.service

Заполните файл.

[Unit]
Description=Circus process manager
After=syslog.target network.target nss-lookup.target
[Service]
Type=simple
ExecReload=/usr/bin/circusctl reload
ExecStart=/usr/bin/circusd /etc/circus/circus.ini
Restart=always
RestartSec=5

[Install]
WantedBy=default.target

Запустите Circus и включите автоматический запуск во время загрузки.

sudo systemctl start circus
sudo systemctl enable circus

Проверьте статус цирка.

circusctl status

Вы увидите следующий вывод.

[user@vultr ~]$ circusctl status
taiga: active
taiga-events: active

Теперь у нас Тайга успешно установлена ​​и работает. Прежде чем мы сможем его использовать, нам нужно выставить установку с использованием любого рабочего веб-сервера.

Установите Nginx в качестве обратного прокси

Мы будем использовать веб-сервер Nginx в качестве обратного прокси-сервера для предоставления приложения пользователям. Мы также получим и установим SSL-сертификаты от Let's Encrypt.

Установите Nginx и Certbot. Certbot является официальным клиентом выдачи сертификатов для Let's Encrypt CA.

sudo yum -y install nginx certbot

Отрегулируйте настройки брандмауэра, чтобы разрешить стандарт HTTPи HTTPSпорты через брандмауэр, поскольку Certbot должен установить HTTP-соединение для проверки полномочий домена.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Примечание . Чтобы получить сертификаты от Let's Encrypt CA, необходимо убедиться, что домен, для которого вы хотите создать сертификаты, направлен на сервер. Если нет, внесите необходимые изменения в записи DNS вашего домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.

Теперь используйте встроенный веб-сервер в Certbot для генерации сертификатов для вашего домена.

sudo certbot certonly --standalone -d taiga.example.com

Сгенерированные сертификаты, вероятно, будут храниться в /etc/letsencrypt/live/taiga.example.com/каталоге. Сертификат SSL будет сохранен как fullchain.pem, а закрытый ключ - как privkey.pem.

Срок действия сертификатов Let's Encrypt истекает через 90 дней, поэтому рекомендуется настроить автоматическое обновление сертификатов с помощью заданий Cron. Cron - это системный сервис, который используется для периодических задач.

Откройте файл задания cron.

sudo crontab -e

Добавьте следующую строку.

0 0 * * * /usr/bin/certbot renew --quiet

Вышеуказанная работа cron будет выполняться ежедневно в полночь. Если срок действия сертификата истекает, он автоматически обновляет сертификаты.

Создайте сильный Diffie-Hellmanпараметр. Это обеспечивает дополнительный уровень безопасности для обмена данными между хостом и сервером.

sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048 

Создайте новый серверный блок Nginx для обслуживания внешнего интерфейса Taiga.

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

Заполните файл следующим.

server {
    listen 80;
    server_name taiga.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name taiga.example.com;

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.error.log;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    index index.html;

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

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

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

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';

    ssl on;
    ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/dhparam.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

}

Обязательно измените имя домена и путь к сертификатам SSL.

Теперь вы можете перезапустить веб-сервер Nginx и включить его автоматический запуск при загрузке.

sudo systemctl restart nginx
sudo systemctl status nginx

Наконец, исправьте владение и разрешение на файлы Taiga.

sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/

Вывод

Теперь вы можете получить доступ к установке Taiga, перейдя в https://taiga.example.com. Войдите в систему, используя первоначальную учетную запись администратора с именем пользователя " admin" и паролем " 123123". Ваша установка готова к использованию. Начните с создания нового проекта или оценки продукта. Если вы уже управляете проектом на Github, Jira или Trello, вы можете легко импортировать проекты в Taiga с помощью импортеров .



Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше