ไทกะเป็นแอปพลิเคชั่นฟรีและโอเพ่นซอร์สสำหรับการจัดการโครงการ ซึ่งแตกต่างจากเครื่องมือการจัดการโครงการอื่น ๆ ไทก้าใช้วิธีการที่คล่องตัวเพิ่มขึ้นเพื่อจัดการการพัฒนาของโครงการ ไทกะเป็นแอพพลิเคชั่นที่ทรงพลังและปรับแต่งได้อย่างสมบูรณ์ แบ็กเอนด์ของไทกะเขียนใน Python โดยใช้เฟรมเวิร์ก Django ส่วนหน้าเขียนด้วย JavaScript โดยใช้เฟรมเวิร์ก CoffeeScript และ AngularJS ไทก้ามีคุณสมบัติเช่นการทำงานร่วมกันของโครงการ, บอร์ด Kanban, การติดตามข้อผิดพลาด, การรายงาน, การติดตามเวลา, backlogs, wiki และอื่น ๆ
ข้อกำหนดเบื้องต้น
- อินสแตนซ์เซิร์ฟเวอร์ Vultr Ubuntu 16.04 ที่มี RAM อย่างน้อย 1GB
- sudo ผู้ใช้
ในบทช่วยสอนนี้เราจะใช้taiga.example.com
เป็นชื่อโดเมนที่ชี้ไปยังเซิร์ฟเวอร์ แทนที่ทั้งหมดtaiga.example.com
ด้วยชื่อโดเมนจริงของคุณ
ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง Ubuntu 16.04 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง PostgreSQL
ติดตั้ง PostgreSQL
PostgreSQL เป็นระบบฐานข้อมูลเชิงวัตถุและเป็นที่รู้จักในด้านเสถียรภาพและความเร็ว ไทก้าใช้ PostgreSQL เพื่อจัดเก็บฐานข้อมูล เพิ่มที่เก็บ PostgreSQL ลงในระบบ
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
นำเข้ารหัสการลงนาม GPG และอัปเดตรายการแพคเกจ
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
ติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL
sudo apt -y install postgresql
เริ่มต้นเซิร์ฟเวอร์ PostgreSQL และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตเครื่อง
sudo systemctl start postgresql
sudo systemctl enable postgresql
เปลี่ยนรหัสผ่านสำหรับผู้ใช้ PostgreSQL เริ่มต้น
sudo passwd postgres
เข้าสู่ระบบในฐานะผู้ใช้ PostgreSQL
sudo su - postgres
สร้างผู้ใช้ PostgreSQL ใหม่สำหรับไทก้า
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
Taiga ต้องการ Python เวอร์ชั่น 3.4 หรือใหม่กว่าและ Python 3.5 ติดตั้งล่วงหน้าใน Ubuntu 16.04 ติดตั้งแพคเกจที่จำเป็นอีกสองสาม
sudo apt -y install python3 python3-pip python3-dev python3-dev virtualenvwrapper
สภาพแวดล้อมเสมือน Python ใช้เพื่อสร้างสภาพแวดล้อมเสมือนจริงที่แยกได้สำหรับโครงการ Python สภาพแวดล้อมเสมือนประกอบด้วยไดเรกทอรีการติดตั้งของตัวเองและไม่แชร์ไลบรารีกับสภาพแวดล้อมแบบโกลบอลและอื่น ๆ เมื่อติดตั้ง Python 3 เรียบร้อยแล้วคุณควรจะตรวจสอบเวอร์ชั่นของมัน
python3 -V
คุณจะเห็นดังต่อไปนี้
user@vultr:~$ python3 -V
Python 3.5.2
อัปเกรดpip
ซึ่งเป็นแอปพลิเคชันตัวจัดการการพึ่งพา
sudo pip3 install --upgrade setuptools pip
นอกจากนี้ให้ติดตั้งเครื่องมือสร้างบางอย่างซึ่งจะต้องใช้ในภายหลังเพื่อรวบรวมการอ้างอิง
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
ติดตั้ง RabbitMQ
Taiga ใช้ RabbitMQ เพื่อประมวลผลคิวข้อความ RabbitMQ ต้องการให้ Erlang library ทำงาน ติดตั้ง Erlang
sudo apt -y install erlang
เพิ่มที่เก็บ RabbitMQ
echo 'deb http://www.rabbitmq.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
นำเข้าคีย์การลงนาม RabbitMQ GPG
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
อัพเดตข้อมูลที่เก็บ
sudo apt update
ติดตั้ง RabbitMQ
sudo apt -y install rabbitmq-server
เริ่มและเปิดใช้งานเซิร์ฟเวอร์ 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://deb.nodesource.com/setup_8.x | sudo -E bash -
ติดตั้ง Node.js และpwgen
ยูทิลิตี้
sudo apt install -y nodejs pwgen npm
pwgen
จะถูกใช้ในภายหลังเพื่อสร้างสตริงลับที่แข็งแกร่ง ติดตั้ง CoffeeScript เนื่องจากจะใช้ในการรวบรวมไฟล์ Taiga ที่เขียนในกรอบงาน CoffeeScript
sudo npm install -g coffee-script gulp
ติดตั้งแบ็กเอนด์ไทกะ
เพิ่มผู้ใช้ระบบใหม่สำหรับไทกะเพื่อให้แน่ใจว่ากระบวนการไทก้ากำลังทำงานในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษ
sudo adduser taiga
sudo su - taiga
หมายเหตุ : จากนี้ไปคำสั่งทั้งหมดจะต้องถูกเรียกใช้ในฐานะผู้ใช้ที่ไม่มีสิทธิ์taiga
จนกว่าคุณจะถูกขอให้เปลี่ยนกลับไปเป็นsudo
ผู้ใช้
สร้างไดเรกทอรีใหม่เพื่อจัดเก็บไฟล์บันทึก
mkdir -p ~/logs
โคลนที่เก็บแบ็กเอนด์ไทก้าจาก GitHub และชำระเงินสาขาที่มีเสถียรภาพล่าสุด
git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable
ตอนนี้สร้างสภาพแวดล้อมเสมือนจริงใหม่สำหรับ Taiga โดยใช้ Python 3
mkvirtualenv -p /usr/bin/python3 taiga
pip3 install --upgrade setuptools
pip
ติดตั้งที่จำเป็นในการพึ่งพาหลามใช้
pip3 install -r requirements.txt
เติมฐานข้อมูลด้วยข้อมูลเริ่มต้นที่จำเป็น
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 ไทกะยังจัดส่งข้อมูลตัวอย่างหรือตัวอย่างซึ่งอาจเป็นประโยชน์สำหรับการประเมินผลิตภัณฑ์ หากคุณต้องการติดตั้งข้อมูลตัวอย่างให้เรียกใช้สิ่งต่อไปนี้
python3 manage.py sample_data
หมายเหตุ : การติดตั้งข้อมูลตัวอย่างเป็นทางเลือกและมีวัตถุประสงค์เพื่อประเมินผลิตภัณฑ์เท่านั้น
ก่อนที่เราจะดำเนินการสร้างไฟล์การกำหนดค่าสำหรับแบ็กเอนด์ไทกะเราต้องสร้างสตริงลับ สายนี้จะถูกใช้ในการเข้ารหัสข้อมูลเซสชั่น
สร้างสตริงสุ่ม 64 ตัวอักษร
pwgen -s -1 64
คุณควรเห็นผลลัพธ์เป็นสตริงแบบสุ่ม
(taiga) taiga@vultr:~/taiga-back$ pwgen -s -1 64
fhDfyYVJ4EH3tvAyUzmfWSeCXuf5sy5EEWrMQPaf9t3JSFrpiL6yvUEOWsFOTscP
สร้างไฟล์กำหนดค่าใหม่สำหรับ 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"
ตรวจสอบให้แน่ใจว่าได้แทนที่example domain name
ด้วยรหัสจริงในรหัสด้านบน นอกจากนี้ให้แทนที่Generated_Secret_Key
ด้วยคีย์ลับจริงและStrongMQPassword
ด้วยรหัสผ่านจริงสำหรับผู้ใช้คิวข้อความไท หากคุณมีเซิร์ฟเวอร์ SMTP พร้อมและคุณต้องการใช้คุณสมบัติการส่งอีเมลทันทีคุณสามารถยกเลิกการใส่ข้อคิดเห็นตัวเลือกอีเมลและตั้งค่าที่เหมาะสม หากคุณยังไม่ได้เตรียมเซิร์ฟเวอร์เมลคุณสามารถข้ามการตั้งค่าคุณสมบัติอีเมลไปก่อนแล้วตั้งค่าในภายหลังในไฟล์กำหนดค่านี้
หากคุณต้องการเปิดใช้งานการเข้าสู่ระบบ GitHub ให้สร้างแอปพลิเคชันใน GitHub และระบุรหัสลูกค้า API และข้อมูลลับของลูกค้า
หากต้องการตรวจสอบว่าแบ็กเอนด์ไทก้าสามารถเริ่มทำงานได้ทันทีหรือไม่ให้เรียกใช้เซิร์ฟเวอร์ 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 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.
หากต้องการตรวจสอบว่าสามารถเข้าถึง API ได้หรือไม่ให้เปิดเซสชันเทอร์มินัลอื่นและดำเนินการดังต่อไปนี้
curl http://127.0.0.1:8000/api/v1/
คุณจะเห็นผลลัพธ์ที่คล้ายกันซึ่งถูกส่งคืนโดยการเรียก 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
หยุดเซิร์ฟเวอร์แบ็กเอนด์ไทกะโดยกด " ctrl + C
" และปิดใช้งานสภาพแวดล้อมเสมือน
deactivate
ติดตั้ง Frontend
ส่วนต่อท้าย 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 domain
ด้วยโดเมนจริง นอกจากนี้คุณยังสามารถเปลี่ยนภาษาเริ่มต้นและพารามิเตอร์อื่น ๆ ในการกำหนดค่าข้างต้น
ติดตั้งไทกิจกรรม
นอกเหนือจากส่วนหน้าและส่วนหลังเรายังต้องติดตั้งกิจกรรมไทกา กิจกรรม 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 ตัวจริงที่คุณสร้างไว้ก่อนหน้านี้ คีย์ลับควรเหมือนกับคีย์ที่คุณระบุในไฟล์กำหนดค่าแบ็กเอนด์ไทกะ และอัพเดตStrongMQPassword
ด้วยรหัสผ่านจริงสำหรับผู้ใช้คิวข้อความไท
Circus เป็นผู้จัดการกระบวนการสำหรับแอปพลิเคชัน Python เราจะใช้ Circus เพื่อเรียกใช้แบ็กเอนด์และกิจกรรมไทกา
สลับกลับไปที่sudo
ผู้ใช้
exit
หมายเหตุ : จากนี้คุณจะต้องเรียกใช้คำสั่งโดยใช้sudo
ผู้ใช้
sudo apt -y install circus
สร้างไฟล์กำหนดค่า 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.5/site-packages
สร้างการกำหนดค่า Circus ใหม่สำหรับเรียกใช้กิจกรรมไทกา
sudo nano /etc/circus/conf.d/taiga-events.ini
เติมไฟล์
[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
รีสตาร์ทเซอร์คัสและเปิดใช้งานเพื่อเริ่มต้นเวลาบูตโดยอัตโนมัติ
sudo systemctl restart circusd
sudo systemctl enable circusd
ตรวจสอบสถานะของละครสัตว์
circusctl status
หาก Circus ได้เริ่มต้นกระบวนการไทกาทั้งหมดอย่างถูกต้องแล้วคุณจะเห็นผลลัพธ์ต่อไปนี้
user@vultr:~$ circusctl status
circusd-stats: active
plugin:flapping: active
taiga: active
taiga-events: active
หากคุณเห็นกระบวนการใด ๆ ที่ไม่ทำงานให้เรียกใช้sudo chmod -R 777 /home/taiga/logs
และรีสตาร์ท Circus ตรวจสอบสถานะของกระบวนการ Circus อีกครั้งคราวนี้คุณจะพบว่าบริการกำลังทำงานอยู่
ตอนนี้เราได้ติดตั้งและใช้งานไท้สำเร็จแล้ว ก่อนที่เราจะสามารถใช้งานได้เราจำเป็นต้องเปิดเผยการติดตั้งโดยใช้เว็บเซิร์ฟเวอร์การผลิตใด ๆ
ติดตั้ง Nginx เป็น Reverse Proxy
เราจะใช้ Nginx เป็น reverse proxy เพื่อให้บริการแก่ผู้ใช้ นอกจากนี้เรายังจะได้รับและติดตั้งใบรับรอง SSL จาก Let's Encrypt
Certbot เป็นลูกค้าออกใบรับรองอย่างเป็นทางการสำหรับ Let's Encrypt CA เพิ่มที่เก็บ Certbot PPA ลงในระบบ
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
ติดตั้ง Nginx และ Certbot
sudo apt -y install nginx certbot
หมายเหตุ : ในการรับใบรับรองจาก 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
ลองเข้ารหัสใบรับรองหมดอายุใน 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/sites-available/taiga
เติมไฟล์ด้วยข้อมูลต่อไปนี้
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;
}
ให้แน่ใจว่าการเปลี่ยนและdomain name
path to the SSL certificates
เปิดใช้งานโฮสต์เสมือน
sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga
ตอนนี้คุณสามารถรีสตาร์ทเว็บเซิร์ฟเวอร์ Nginx และเปิดใช้งานเพื่อเริ่มการบูทโดยอัตโนมัติ
sudo systemctl restart nginx
sudo systemctl status nginx
สุดท้ายแก้ไขความเป็นเจ้าของและการอนุญาตในไฟล์ไทกะ
sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/
ข้อสรุป
https://taiga.example.com
ตอนนี้คุณสามารถเข้าถึงการติดตั้งไทโดยไปที่ เข้าสู่ระบบโดยใช้บัญชีผู้ดูแลระบบเริ่มต้นด้วยชื่อผู้ใช้ " admin
" และรหัสผ่าน " 123123
" ตอนนี้การติดตั้งของคุณพร้อมสำหรับการใช้งานจริง เริ่มต้นด้วยการสร้างโครงการใหม่หรือประเมินผลิตภัณฑ์ หากคุณมีอยู่แล้วการจัดการโครงการ Github, จิรหรือ Trello คุณได้อย่างง่ายดายสามารถนำเข้าโครงการลงในไทโดยใช้ผู้นำเข้า