Cara Menginstal Alat Manajemen Proyek Taiga di Ubuntu 16.04

Taiga adalah aplikasi sumber terbuka dan gratis untuk manajemen proyek. Tidak seperti alat manajemen proyek lainnya, Taiga menggunakan pendekatan gesit tambahan untuk mengelola pengembangan proyek. Taiga adalah aplikasi yang sangat kuat dan sepenuhnya dapat disesuaikan. Backend dari Taiga ditulis dalam Python menggunakan kerangka Django. Frontend ditulis dalam JavaScript menggunakan kerangka kerja CoffeeScript dan AngularJS. Taiga mencakup fitur seperti kolaborasi proyek, papan Kanban, pelacakan bug, pelaporan, pelacakan waktu, backlog, wiki, dan lainnya.

Prasyarat

  • Contoh server Vultr Ubuntu 16.04 dengan setidaknya 1GB RAM.
  • Seorang pengguna sudo .

Dalam tutorial ini, kita akan menggunakan taiga.example.comnama domain yang menunjuk ke server. Ganti semua kemunculan taiga.example.comdengan nama domain Anda yang sebenarnya.

Perbarui sistem basis Anda menggunakan panduan Cara Memperbarui Ubuntu 16.04 . Setelah sistem Anda diperbarui, lanjutkan untuk menginstal PostgreSQL.

Instal PostgreSQL

PostgreSQL adalah sistem basis data objek-relasional dan dikenal karena stabilitas dan kecepatannya. Taiga menggunakan PostgreSQL untuk menyimpan databasenya. Tambahkan repositori PostgreSQL ke dalam sistem.

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

Impor kunci penandatanganan GPG dan perbarui daftar paket.

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

Instal server database PostgreSQL.

sudo apt -y install postgresql

Mulai server PostgreSQL dan aktifkan untuk memulai secara otomatis saat boot.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Ubah kata sandi untuk pengguna PostgreSQL default.

sudo passwd postgres

Masuk sebagai pengguna PostgreSQL.

sudo su - postgres

Buat pengguna PostgreSQL baru untuk Taiga.

createuser taiga 

PostgreSQL menyediakan psqlshell untuk menjalankan query pada database. Beralih ke shell PostgreSQL.

psql

Tetapkan kata sandi untuk pengguna yang baru dibuat untuk database Taiga.

ALTER USER taiga WITH ENCRYPTED password 'DBPassword';

Ganti DBPassworddengan kata sandi aman. Buat database baru untuk instalasi Taiga.

CREATE DATABASE taiga OWNER taiga;

Keluar dari psqlshell.

\q

Beralih ke sudopengguna.

exit

Instal Python

Taiga membutuhkan Python versi 3.4 atau yang lebih baru dan Python 3.5 telah diinstal sebelumnya dalam distribusi Ubuntu 16.04. Instal beberapa paket lagi yang diperlukan.

sudo apt -y install python3 python3-pip python3-dev python3-dev virtualenvwrapper

Lingkungan virtual Python digunakan untuk membuat lingkungan virtual yang terisolasi untuk proyek Python. Lingkungan virtual berisi direktori pemasangannya sendiri dan tidak berbagi perpustakaan dengan lingkungan virtual global dan lainnya. Setelah Python 3 berhasil diinstal, Anda harus dapat memeriksa versinya.

python3 -V

Anda akan melihat yang berikut ini.

user@vultr:~$ python3 -V
Python 3.5.2

Peningkatan pip, yang merupakan aplikasi manajer ketergantungan.

sudo pip3 install --upgrade setuptools pip 

Juga, Instal beberapa alat membangun yang akan dibutuhkan nanti untuk mengkompilasi dependensi.

sudo apt -y 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

Instal RabbitMQ

Taiga menggunakan RabbitMQ untuk memproses antrian pesan. RabbitMQ membutuhkan perpustakaan Erlang untuk bekerja. Instal Erlang.

sudo apt -y install erlang

Tambahkan repositori RabbitMQ.

echo 'deb http://www.rabbitmq.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list

Impor kunci penandatanganan RabbitMQ GPG.

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

Perbarui informasi repositori.

sudo apt update

Instal RabbitMQ.

sudo apt -y install rabbitmq-server

Mulai dan aktifkan server RabbitMQ.

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

Tambahkan pengguna RabbitMQ dan vhost. Juga, berikan izin kepada pengguna melalui host.

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

Pastikan untuk mengganti StrongMQPassworddengan kata sandi yang aman.

Instal Nodejs

Diperlukan Node.js versi 7 atau lebih baru untuk mengkompilasi frontend Taiga. Tambahkan repositori Node.js versi 8.

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

Instal Node.js dan pwgenutilitasnya.

sudo apt install -y nodejs pwgen npm

pwgenakan digunakan nanti untuk menghasilkan string rahasia yang kuat. Instal CoffeeScript, karena akan digunakan untuk mengkompilasi file Taiga yang ditulis dalam kerangka kerja CoffeeScript.

sudo npm install -g coffee-script gulp

Instal Taiga Backend

Tambahkan pengguna sistem baru untuk Taiga untuk memastikan bahwa proses Taiga berjalan sebagai pengguna yang tidak memiliki hak.

sudo adduser taiga
sudo su - taiga

Catatan : Mulai sekarang, semua perintah harus dijalankan sebagai pengguna yang tidak berhak taigasampai Anda diminta untuk kembali ke sudopengguna.

Buat direktori baru untuk menyimpan file log.

mkdir -p ~/logs

Kloning repositori backend Taiga dari GitHub dan checkout cabang stabil terbaru.

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

Sekarang buat lingkungan virtual baru untuk Taiga menggunakan Python 3.

mkvirtualenv -p /usr/bin/python3 taiga
pip3 install --upgrade setuptools

Instal dependensi Python yang diperlukan menggunakan pip.

pip3 install -r requirements.txt

Mengisi basis data dengan data awal yang diperlukan.

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

Perintah di atas akan menulis data ke dalam database PostgreSQL. Taiga juga mengirimkan beberapa data demo atau sampel yang dapat berguna untuk mengevaluasi produk. Jika Anda ingin menginstal data sampel, jalankan yang berikut ini.

python3 manage.py sample_data

Catatan : Memasang data sampel adalah opsional dan hanya dimaksudkan untuk mengevaluasi produk.

Sebelum kita melanjutkan untuk membuat file konfigurasi untuk backend Taiga, kita perlu membuat string rahasia. String ini akan digunakan untuk mengenkripsi data sesi.

Hasilkan string acak 64 karakter.

pwgen -s -1 64

Anda harus melihat output sebagai string acak.

(taiga) taiga@vultr:~/taiga-back$ pwgen -s -1 64
fhDfyYVJ4EH3tvAyUzmfWSeCXuf5sy5EEWrMQPaf9t3JSFrpiL6yvUEOWsFOTscP

Buat file konfigurasi baru untuk Backend Taiga.

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

Populasikan file dengan kode berikut.

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"

Pastikan untuk mengganti example domain namedengan yang sebenarnya dalam kode di atas. Juga, ganti Generated_Secret_Keydengan kunci rahasia yang sebenarnya dan StrongMQPassworddengan kata sandi yang sebenarnya untuk pengguna antrian pesan Taiga. Jika Anda memiliki server SMTP yang siap dan Anda ingin segera menggunakan fitur pengiriman email, Anda dapat menghapus komentar opsi email dan mengatur nilai yang sesuai. Jika Anda tidak memiliki server surat yang siap, Anda dapat melewati pengaturan fitur email untuk saat ini dan mengaturnya nanti dalam file konfigurasi ini.

Jika Anda ingin mengaktifkan login GitHub, buat aplikasi di GitHub dan berikan ID klien API dan rahasia klien.

Untuk segera memeriksa apakah backend Taiga dapat dimulai, jalankan server Django bawaan.

workon taiga
python manage.py runserver

Anda akan melihat output berikut jika server telah mulai berhasil.

(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 28, 2017 - 10:29:38
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Untuk memverifikasi apakah API dapat diakses, buka sesi terminal lain dan jalankan yang berikut.

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

Anda akan melihat output serupa dikembalikan oleh panggilan API.

user@vultr:~$ curl http://127.0.0.1:8000/api/v1/
{"webhooks": "http://127.0.0.1:8000/api/v1/webhooks", "invitations": "http://127.0.0.1:8000/api/v1/invitations", "severities": "http://127.0.0.1:8000/api/v1/severities", "memberships": "http://127.0.0.1:8000/api/v1/memberships", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "epics/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/epics/(?P<resource_id>\\d+)/voters", "wiki": "http://127.0.0.1:8000/api/v1/wiki", "priorities": "http://127.0.0.1:8000/api/v1/priorities", "userstories/attachments": "http://127.0.0.1:8000/api/v1/userstories/attachments", "epics/(?P<epic>[^/.]+)/related_userstories": "http://127.0.0.1:8000/api/v1/epics/(?P<epic>[^/.]+)/related_userstories", "timeline/user": "http://127.0.0.1:8000/api/v1/timeline/user", "userstories/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/userstories/(?P<resource_id>\\d+)/voters", "wiki-links": "http://127.0.0.1:8000/api/v1/wiki-links", "epics/attachments": "http://127.0.0.1:8000/api/v1/epics/attachments", "issues/custom-attributes-values": "http://127.0.0.1:8000/api/v1/issues/custom-attributes-values

Hentikan server backend Taiga dengan menekan " ctrl + C" dan menonaktifkan lingkungan virtual.

deactivate

Pasang Frontend

Frontend Taiga adalah komponen Taiga yang melayani antarmuka pengguna Web. Kloning repositori frontend Taiga dari Github dan checkout cabang stabil terbaru.

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

Buat file konfigurasi baru untuk frontend Taiga.

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

Mengisi file.

{
    "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
}

Pastikan untuk mengganti example domaindengan domain yang sebenarnya. Anda juga dapat mengubah bahasa default dan parameter lain dalam konfigurasi di atas.

Instal Acara Taiga

Terlepas dari frontend dan backend, kita juga perlu menginstal acara Taiga. Peristiwa Taiga adalah server soket web, dan memungkinkan antarmuka Taiga untuk menampilkan perubahan waktu-nyata pada modul seperti backlog, Kanban, dan lainnya. Ini juga menggunakan server RabbitMQ untuk pemrosesan pesan.

Klon repositori acara Taiga dari Github.

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

Instal dependensi Node.js menggunakan npm.

npm install

Buat file konfigurasi baru untuk acara Taiga.

nano ~/taiga-events/config.json

Mengisi file.

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

Ganti Generated_Secret_Keydengan kunci rahasia panjang aktual 64 karakter yang telah Anda buat sebelumnya. Kunci rahasia harus persis sama dengan kunci yang Anda berikan di file konfigurasi backend Taiga. Juga, perbarui StrongMQPassworddengan kata sandi yang sebenarnya untuk pengguna antrian pesan Taiga.

Konfigurasikan Circus

Circus adalah manajer proses untuk aplikasi Python. Kami akan menggunakan Circus untuk menjalankan backend dan acara Taiga.

Beralih kembali ke sudopengguna.

exit

Catatan : Mulai sekarang Anda harus menjalankan perintah menggunakan sudopengguna.

sudo apt -y install circus

Buat file konfigurasi Circus baru untuk menjalankan backend Taiga.

sudo nano /etc/circus/conf.d/taiga.ini

Mengisi file.

[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

Buat konfigurasi Sirkus baru untuk menjalankan Acara Taiga.

sudo nano /etc/circus/conf.d/taiga-events.ini

Mengisi file.

[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/local/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

Nyalakan kembali Circus dan aktifkan mulai saat boot secara otomatis.

sudo systemctl restart circusd
sudo systemctl enable circusd

Periksa status Circus.

circusctl status

Jika Circus telah memulai semua proses Taiga dengan benar, maka Anda akan melihat output berikut.

user@vultr:~$ circusctl status
circusd-stats: active
plugin:flapping: active
taiga: active
taiga-events: active

Jika Anda melihat salah satu proses tidak aktif, jalankan sudo chmod -R 777 /home/taiga/logsdan mulai kembali Circus. Periksa status proses Circus lagi, kali ini Anda pasti akan menemukan layanan berjalan.

Sekarang, kami telah menginstal dan menjalankan Taiga. Sebelum kita dapat menggunakannya, kita perlu mengekspos instalasi menggunakan server web produksi apa pun.

Instal Nginx sebagai Reverse Proxy

Kami akan menggunakan Nginx sebagai proxy terbalik untuk melayani aplikasi kepada pengguna. Kami juga akan mendapatkan dan menginstal sertifikat SSL dari Let's Encrypt.

Certbot adalah klien yang mengeluarkan sertifikat resmi untuk Let's Encrypt CA. Tambahkan repositori PPA Certbot ke dalam sistem.

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

Instal Nginx dan Certbot.

sudo apt -y install nginx certbot

Catatan : Untuk mendapatkan sertifikat dari Let's Encrypt CA, Anda harus memastikan bahwa domain yang Anda inginkan untuk menghasilkan sertifikat diarahkan ke server. Jika tidak, maka buat perubahan yang diperlukan pada catatan DNS domain Anda dan tunggu sampai DNS menyebar sebelum membuat permintaan sertifikat lagi. Certbot memeriksa otoritas domain sebelum memberikan sertifikat.

Sekarang gunakan server web bawaan di Certbot untuk menghasilkan sertifikat untuk domain Anda.

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

Sertifikat yang dihasilkan cenderung disimpan di /etc/letsencrypt/live/taiga.example.com/direktori. Sertifikat SSL akan dipertahankan sebagai fullchain.pem, dan kunci pribadi akan disimpan sebagai privkey.pem.

Mari Enkripsi sertifikat kedaluwarsa dalam 90 hari, jadi disarankan untuk menyiapkan perpanjangan otomatis untuk sertifikat menggunakan pekerjaan Cron. Cron adalah layanan sistem yang digunakan untuk menjalankan tugas-tugas berkala.

Buka file tugas cron.

sudo crontab -e

Tambahkan baris berikut.

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

Pekerjaan cron di atas akan berjalan setiap hari di tengah malam. Jika sertifikat akan kedaluwarsa, sertifikat akan diperpanjang secara otomatis.

Hasilkan parameter Diffie-Hellman yang kuat. Ini memberikan lapisan keamanan tambahan untuk pertukaran data antara host dan server.

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

Buat blok server Nginx baru untuk melayani frontend Taiga.

sudo nano /etc/nginx/sites-available/taiga

Isi file dengan yang berikut ini.

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;

}

Pastikan untuk mengubah domain namedan path to the SSL certificates. Aktifkan host virtual.

sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga

Sekarang Anda dapat memulai kembali server web Nginx dan mengaktifkannya untuk memulai saat boot secara otomatis.

sudo systemctl restart nginx
sudo systemctl status nginx

Akhirnya, perbaiki kepemilikan dan izin pada file Taiga.

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

Kesimpulan

Anda sekarang dapat mengakses instalasi Taiga dengan masuk ke https://taiga.example.com. Masuk menggunakan akun administrator awal dengan nama pengguna " admin" dan kata sandi " 123123". Instalasi Anda sekarang siap untuk digunakan produksi. Mulailah dengan membuat proyek baru atau mengevaluasi produk. Jika Anda sudah mengelola proyek di Github, Jira, atau Trello, Anda dapat dengan mudah mengimpor proyek ke Taiga menggunakan importir .



Leave a Comment

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut