LoginSignup
5
5

More than 5 years have passed since last update.

TaigaをAWSに立ち上げる

Last updated at Posted at 2019-01-06

TaigaをAWSに立ち上げるまでの流れを以下記述していく。

AWSインスタンスを借りる

  1. AWSのサインアップを済ませる
  2. t2.microインスタンス(以上)を契約する。その際、ディスクは最低16GB確保する。イメージはUbuntu 18.04を利用する
  3. セキュリティグループは22・80・443を開ける

ドメインを設定する(必要に応じて)

  1. 適当なネームサーバーと契約する
  2. ネームサーバーのAレコードとして先程契約したサーバのパブリックIPアドレスを指定して登録する

サーバの初期設定をする

  1. サーバにSSHログインする。その際、鍵はサーバを作ったときに使ったものを用いる。ユーザー名はubuntuである(AWS Linuxの場合はec2-userであるが、Ubuntuの場合ubuntuになることに注意せよ)
  2. sudo apt-get updateしたあと、sudo apt-get upgradeする。GRUBについて聞かれたらkeep the local version currently installedを選んでOKを選ぶ
  3. カーネルが更新されたのでsudo reboot nowして再起動する
  4. その後、いくつかのパッケージが未更新になっているので、sudo apt-get upgradeと入力して未更新のパッケージを確認。その後、それらのパッケージを明示的に指定してupgradeする。それが終わったらもう一度再起動する

必要なパッケージをインストールして初期設定をする

  1. https://taigaio.github.io/taiga-doc/dist/setup-production.html にも書いてあるが、sudo apt-get install 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 rabbitmq-server redis-server postgresql-10 postgresql-contrib postgresql-doc-10 postgresql-server-dev-10 python3 python3-pip python-dev python3-dev python-pip virtualenvwrapper libxml2-dev libxslt-dev libssl-dev libffi-devで必要なパッケージをインストールする(Ubuntu 18.04ではPostgreSQLは10に変更になっているため、それに合わせて変更)
  2. sudo adduser taigaする。パスワードを求められるが適当でよい(あとで適宜パスワードを変更する)
  3. sudo adduser taiga sudoして、taigaユーザでsudoできるようにする
  4. sudo su - taigaでtaigaユーザになる
  5. passwdでパスワードを設定する
  6. sudo -u postgres createuser taigaしてtaigaユーザに紐づくデータベースユーザを作成する。sudoするときのパスワードは5で設定したものである
  7. sudo -u postgres createdb taiga -O taiga --encoding='utf-8' --locale=en_US.utf8 --template=template0してtaigaデータベースを作成する
  8. sudo rabbitmqctl add_user taiga PASSWORD_FOR_EVENTSでRabbitMQ上にtaigaユーザを作成する
  9. sudo rabbitmqctl add_vhost taigaでtaiga vhostを作成する
  10. sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"でパーミッションを設定する

Taigaのバックエンドをインストールする

以下の作業もtaigaユーザで行う

  1. ユーザのルートディレクトリにcdした後、git clone https://github.com/taigaio/taiga-back.git taiga-backしてtaiga-backをcloneする
  2. cd taiga-backしたあと、git checkout stableで安定版をチェックアウトする
  3. mkvirtualenv -p /usr/bin/python3 taigaでPython環境をセットアップする
  4. pip install -r requirements.txtで必要なパッケージをインストールする
  5. 必要な設定を読み込むため、以下の内容を実行する
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

Taigaのバックエンドの設定をする

taiga-back/settings/local.pyの内容を以下の通りとする

from .common import *

MEDIA_URL = "https://mydomain.tld/media/"
STATIC_URL = "https://mydomain.tld/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "mydomain.tld"

SECRET_KEY = "theveryultratopsecretkey"

DEBUG = False
# ここは公開登録させないならFalseを指定する
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "sender@sender.domain"
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"
}

# 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 = True
EMAIL_HOST = "mailserver.sender.domain"
EMAIL_HOST_USER = "sender_user"
EMAIL_HOST_PASSWORD = "sender_password"
# 認証がいらないメールサーバなら25になる
EMAIL_PORT = 587

# Uncomment and populate with proper connection parameters
# for enable github login/singin.
# 事前にGithubでAPIキーとシークレットを取得すること
# https://github.com/settings/applications/new から取得できる
GITHUB_API_CLIENT_ID = "yourgithubclientid"
GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"

ここまで終わったらdeactivateでVirtualenvから抜ける

Taigaのフロントエンドの設定をする

  1. ユーザのルートディレクトリにcdした後、git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-distしてtaiga-front-distをcloneする
  2. cd taiga-front-distした後、git checkout stableして安定版をチェックアウトする
  3. dist/conf.example.jsonをdist/conf.jsonにcpする
  4. dist/conf.jsonの設定内容は以下の通りとする
    1. api"https://mydomain.tld/api/v1/"にする
    2. eventsUrl"wss://mydomain.tld/events"にする
    3. publicRegisterEnabledは先程設定したPUBLIC_REGISTER_ENABLEDに揃える

TaigaのWebSocketサーバをセットアップする

  1. ユーザのルートディレクトリにcdした後、git clone https://github.com/taigaio/taiga-events.git taiga-eventsしてtaiga-eventsをcloneする
  2. cd taiga-eventsする(masterを使うため、checkoutを要しない)
  3. curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -した後、sudo apt-get install nodejsしてNode.jsをインストールする
  4. npm installして必要なパッケージをインストールする
  5. cp config.example.json config.jsonでconfigをコピーする
  6. config.jsonを編集し、url"amqp://taiga:PASSWORD_FOR_EVENTS@localhost:5672/taiga"に、secret"theveryultratopsecretkey"に変更して保存する

TaigaのWebSocketサーバの自動起動設定をする

/etc/systemd/system/taiga_events.serviceを以下の内容にする

[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

その後、以下の手順を行う

  1. sudo systemctl daemon-reloadでデーモンのリストを再読込する
  2. sudo systemctl start taiga_events.serviceで起動する
  3. sudo systemctl enable taiga_events.serviceで自動起動を有効にする

Taigaのバックエンドの自動起動を設定する

/etc/systemd/system/taiga.serviceを以下の内容にする

[Unit]
Description=taiga_back
After=network.target

[Service]
User=taiga
Environment=PYTHONUNBUFFERED=true
WorkingDirectory=/home/taiga/taiga-back
ExecStart=/home/taiga/.virtualenvs/taiga/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 taiga.wsgi
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

その後、以下の手順を行う

  1. sudo systemctl daemon-reloadでデーモンのリストを再読込する
  2. sudo systemctl start taiga.serviceで起動する
  3. sudo systemctl enable taiga.serviceで自動起動を有効にする

フロントの設定をする

  1. sudo rm /etc/nginx/sites-enabled/defaultでデフォルトのルート設定を削除する
  2. mkdir -p ~/logsでログディレクトリを作成する
  3. /etc/nginx/conf.d/taiga.confを以下の内容にした後、sudo nginx -tで設定チェックを行い、sudo systemctl restart nginx.serviceで再起動する
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;
    }
}

Let's Encryptの設定をする

  1. sudo apt-get install certbotでLet's encryptのパッケージをインストールする
  2. sudo certbot certonly --webroot -w /home/taiga/taiga-front-dist/dist -d mydomain.tldで証明書を取得する。その際、色々聞かれるが指示通りに答える
  3. /etc/nginx/conf.d/taiga.confを以下の内容に書き換え、sudo nginx -tで設定チェックを行い、sudo systemctl restart nginx.confでNginxを再起動する
server {
    listen 80 default_server;
    server_name _;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 default_server;
    server_name mydomain.tld;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/mydomain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.tld/privkey.pem;
    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;
    }
}

現在の状況

  1. ひとまず動いているようだ
  2. 裏側の設定の詳細をすべて洗い出すのは難しい
  3. ユーザ登録はどうやらプロジェクトオーナーがまだ登録が存在しないメールアドレスに招待状を送ってそれをAcceptすることで作れる模様
  4. Githubとの連携は少し遅いようだ
  5. Bitbucketとの連携はIPアドレスのホワイトリストを最新にしないと動かない
  6. Slackとの連携は未検証
  7. CPUクレジットは増えているので、t2.microで十分安定運転が可能そう
  8. ディスクは3GB程度消費しているので、安定運転用にSwap確保するならディスクは念の為16GBあったほうが安心そう(安定運転想定しないなら8GBでも足りるかとは思う)
  9. デフォルトでは管理者のアカウント名はadmin、パスワードは123123、管理者メールアドレスはadmin@admin.comだが、アクセスしてログインしたら速やかに変更すること。メールアドレスを変更する際にメールが飛ぶので、それでメールの試験もできる。
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5