CentOS 7にTaiga Project Management Toolをインストールする方法

Taigaは、プロジェクト管理用の無料のオープンソースアプリケーションです。他のプロジェクト管理ツールとは異なり、Taigaは段階的なアジャイルアプローチを使用してプロジェクトの開発を管理します。タイガは非常に強力で完全にカスタマイズ可能なアプリケーションです。Taigaのバックエンドは、Djangoフレームワークを使用してPythonで記述されています。フロントエンドは、CoffeeScriptおよびAngularJSフレームワークを使用してJavaScriptで記述されています。Taigaには、プロジェクトコラボレーション、カンバンボード、バグ追跡、レポート、時間追跡、バックログ、wikiなどの機能が含まれています。

前提条件

  • 1GB以上のRAMを備えたVultr CentOS 7サーバーインスタンス。
  • sudoのユーザー

このチュートリアルではtaiga.example.com、サーバーを指すドメイン名としてを使用します。すべてのtaiga.example.comを実際のドメイン名に置き換えます。

CentOS 7のアップデート方法ガイドを使用して、ベースシステムをアップデートします。システムが更新されたら、PostgreSQLのインストールに進みます。

PostgreSQLをインストールする

PostgreSQLは、その安定性と速度で知られているオブジェクトリレーショナルデータベースシステムです。Taigaは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

Taigaの新しいPostgreSQLユーザーを作成します。

createuser taiga 

PostgreSQLは、psqlデータベ��スでクエリを実行するためのシェルを提供します。PostgreSQLシェルに切り替えます。

psql

Taigaデータベース用に新しく作成したユーザーのパスワードを設定します。

ALTER USER taiga WITH ENCRYPTED password 'DBPassword';

DBPassword安全なパスワードに置き換えます。Taigaインストール用の新しいデータベースを作成します。

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のデフォルトバージョンを置き換えずにPython 3.6をインストールします。CentOS 7のデフォルトのPythonを置き換えると、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をインストールする

Taigaは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をインストールする

Taigaのフロントエンドをコンパイルするには、Node.jsバージョン7以降が必要です。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の新しいシステムユーザーを追加して、Taigaプロセスが非特権ユーザーとして実行されていることを確認します。

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

今後、ユーザーtaigaに切り替えるように求められるまで、すべてのコマンドを非特権ユーザーとして実行する必要がありsudoます。

ログファイルを格納する新しいディレクトリを作成します。

mkdir -p ~/logs

GitHubからTaigaバックエンドリポジトリのクローンを作成し、最新の安定版ブランチをチェックアウトします。

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

virtualenvwrapperデフォルトのPythonの代わりにPython 3.6を使用するように構成します。

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

最後に、~/.bashrcファイルを入手します。

source ~/.bashrc

次に、Python 3.6を使用して、Taigaの新しい仮想環境を作成します。

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データベースにデータを書き込みます。Taigaは、製品の評価に役立つデモまたはサンプルデータも出荷しています。サンプルデータをインストールする場合は、以下を実行します。

python3.6 manage.py sample_data

サンプルデータのインストールはオプションであり、製品の評価のみを目的としています。

Taigaバックエンドの構成ファイルの作成に進む前に、秘密の文字列を生成する必要があります。この文字列は、セッションデータの暗号化に使用されます。

64文字のランダムな文字列を生成します。

pwgen -s -1 64

出力がランダムな文字列として表示されるはずです。

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

Taigaバックエンド用の新しい構成ファイルを作成します。

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、Taigaメッセージキューユーザーの実際のパスワードに置き換えます。SMTPサーバーの準備ができており、電子メール送信機能をすぐに使用したい場合は、電子メールオプションのコメントを外して、適切な値を設定できます。メールサーバーの準備ができていない場合は、今のところメール機能の設定をスキップして、この構成ファイルで後で設定できます。

GitHubログインを有効にする場合は、GitHubでアプリケーションを作成し、APIクライアントIDとクライアントシークレットを提供します。

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」を押してTaigaバックエンドサーバーを停止し、仮想環境を非アクティブ化します。

deactivate

フロントエンドをインストールする

Taigaフロントエンドは、Webユーザーインターフェイスを提供するTaigaのコンポーネントです。GithubからTaigaフロントエンドリポジトリのクローンを作成し、最新の安定したブランチをチェックアウトします。

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イベントもインストールする必要があります。TaigaイベントはWebソケットサーバーであり、Taigaフロントエンドがバックログ、かんばんなどのモジュールのリアルタイムの変更を表示できるようにします。メッセージ処理にRabbitMQサーバーを使用します。

GithubからTaigaイベントリポジトリのクローンを作成します。

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

を使用してNode.js依存関係をインストールしますnpm

npm install

Taigaイベント用の新しい構成ファイルを作成します。

nano ~/taiga-events/config.json

ファイルに以下を入力します。

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

Generated_Secret_Key過去に生成した実際の64文字の長さの秘密鍵に置き換えます。秘密鍵は、Taigaバックエンド構成ファイルで提供した鍵とまったく同じでなければなりません。また、StrongMQPasswordTaigaメッセージキューユーザーの実際のパスワードでを更新します。

サーカスを構成する

サーカスはPythonアプリケーションのプロセスマネージャーです。Taigaバックエンドとイベントの実行にはCircusを使用します。

sudoユーザーに切り替えます。

exit

これからは、sudouser を使用してコマンドを実行する必要があります。

を使用してCircusをインストールし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

Taigaバックエンドを実行するための新しいCircus構成ファイルを作成します。

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

Taigaイベントを実行するための新しいCircus構成を作成します。

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

次に、systemdCircusを実行するためのサービスファイルを作成する必要があります。を使用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

これで、Taigaが正常にインストールされ、実行されました。使用する前に、本番用のWebサーバーを使用してインストールを公開する必要があります。

Nginxをリバースプロキシとしてインストールする

Nginx Webサーバーをリバースプロキシとして使用して、ユーザーにアプリケーションを提供します。Let's EncryptからSSL証明書を取得してインストールします。

NginxとCertbotをインストールします。Certbotは、Let's Encrypt CAの公式証明書発行クライアントです。

sudo yum -y install nginx certbot

Certbotがドメイン認証を確認するためにHTTP接続を確立する必要��あるため、ファイアウォール設定を調整して、標準HTTPHTTPSポートがファイアウォールを通過できるようにします。

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の組み込みWebサーバーを使用して、ドメインの証明書を生成します。

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

生成された証明書は、/etc/letsencrypt/live/taiga.example.com/ディレクトリに格納される可能性があります。SSL証明書はとして保持されfullchain.pem、秘密鍵はとして保存されprivkey.pemます。

証明書を暗号化しましょう90日で有効期限が切れるので、cronジョブを使用して証明書の自動更新を設定することをお勧めします。Cronは、定期的なタスクを実行するために使用されるシステムサービスです。

cronジョブファイルを開きます。

sudo crontab -e

次の行を追加します。

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

上記のcronジョブは毎日午前0時に実行されます。証明書の有効期限が切れる場合、証明書は自動的に更新されます。

強力なDiffie-Hellmanパラメータを生成します。ホストとサーバー間のデータ交換に追加のセキュリティ層を提供します。

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

Taigaフロントエンドを提供する新しいNginxサーバーブロックを作成します。

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 Webサーバーを再起動して、起動時に自動的に開始できるようにすることができます。

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

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。