วิธีการติดตั้งเครื่องมือจัดการโครงการไทก้าบน Ubuntu 16.04
ใช้ระบบที่แตกต่างกันอย่างไร ไทกะเป็นแอปพลิเคชั่นฟรีและโอเพ่นซอร์สสำหรับการจัดการโครงการ ซึ่งแตกต่างจากเครื่องมือการจัดการโครงการอื่น ๆ ไทก้าใช้ส่วนเพิ่ม
ไทกะเป็นแอปพลิเคชั่นฟรีและโอเพ่นซอร์สสำหรับการจัดการโครงการ ซึ่งแตกต่างจากเครื่องมือการจัดการโครงการอื่น ๆ ไทก้าใช้วิธีการที่คล่องตัวเพิ่มขึ้นเพื่อจัดการการพัฒนาของโครงการ ไทกะเป็นแอพพลิเคชั่นที่ทรงพลังและปรับแต่งได้อย่างสมบูรณ์ แบ็กเอนด์ของไทกะเขียนใน Python โดยใช้เฟรมเวิร์ก Django ส่วนหน้าเขียนด้วย JavaScript โดยใช้เฟรมเวิร์ก CoffeeScript และ AngularJS ไทก้ามีคุณสมบัติเช่นการทำงานร่วมกันของโครงการ, บอร์ด Kanban, การติดตามข้อผิดพลาด, การรายงาน, การติดตามเวลา, backlogs, wiki และอื่น ๆ
ในบทช่วยสอนนี้เราจะใช้taiga.example.com
เป็นชื่อโดเมนที่ชี้ไปยังเซิร์ฟเวอร์ แทนที่ทั้งหมดtaiga.example.com
ด้วยชื่อโดเมนจริงของคุณ
ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง CentOS 7 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง 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 ใหม่สำหรับไทก้า
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 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 สภาพแวดล้อมเสมือนประกอบด้วยไดเรกทอรีการติดตั้งของตัวเองและไม่แชร์ไลบรารีกับสภาพแวดล้อมแบบโกลบอลและอื่น ๆ
Taiga ใช้ RabbitMQ เพื่อประมวลผลคิวข้อความ RabbitMQ ต้องการให้ Erlang library ทำงาน ติดตั้ง 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
ด้วยรหัสผ่านที่ปลอดภัย
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 เนื่องจากมันจะถูกใช้เพื่อรวบรวมไฟล์ไทก้าที่เขียนด้วยเฟรมเวิร์ก CoffeeScript
sudo npm install -g coffee-script gulp
เพิ่มผู้ใช้ระบบใหม่สำหรับไทกะเพื่อให้แน่ใจว่ากระบวนการไทก้ากำลังทำงานในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษ
sudo useradd -s /bin/bash 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
กำหนดค่าvirtualenvwrapper
ให้ใช้ Python 3.6 แทน Python เริ่มต้น
echo "VIRTUALENVWRAPPER_PYTHON='/bin/python3.6'" >> ~/.bashrc
echo "source /usr/bin/virtualenvwrapper.sh" >> ~/.bashrc
ในที่สุดแหล่งที่มาของ~/.bashrc
ไฟล์
source ~/.bashrc
ตอนนี้สร้างสภาพแวดล้อมเสมือนจริงใหม่สำหรับ Taiga โดยใช้ Python 3.6
mkvirtualenv -p /bin/python3.6 taiga
pip3.6 install --upgrade setuptools
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
หมายเหตุ : การติดตั้งข้อมูลตัวอย่างเป็นทางเลือกและมีวัตถุประสงค์เพื่อประเมินผลิตภัณฑ์เท่านั้น
ก่อนที่เราจะดำเนินการสร้างไฟล์การกำหนดค่าสำหรับแบ็กเอนด์ไทกะเราต้องสร้างสตริงลับ สายนี้จะถูกใช้ในการเข้ารหัสข้อมูลเซสชั่น
สร้างสตริงสุ่ม 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 และข้อมูลลับของลูกค้า
หากต้องการตรวจสอบว่าแบ็กเอนด์ไทก้าสามารถเริ่มทำงานได้ทันทีหรือไม่ให้เรียกใช้เซิร์ฟเวอร์ 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 ตัวจริงที่คุณสร้างขึ้นในอดีต คีย์ลับควรเหมือนกับคีย์ที่คุณระบุในไฟล์กำหนดค่าแบ็กเอนด์ไทกะ และอัพเดตStrongMQPassword
ด้วยรหัสผ่านจริงสำหรับผู้ใช้คิวข้อความไท
Circus เป็นผู้จัดการกระบวนการสำหรับแอปพลิเคชัน Python เราจะใช้ Circus เพื่อเรียกใช้แบ็กเอนด์และกิจกรรมไทกา
สลับกลับไปที่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 ใหม่สำหรับการเรียกใช้แบ็กเอนด์ไทกะ
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
สร้างการกำหนดค่า 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
ตอนนี้เราจะต้องสร้าง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 เป็น reverse proxy เพื่อให้บริการแก่ผู้ใช้ นอกจากนี้เรายังจะได้รับและติดตั้งใบรับรอง 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
ลองเข้ารหัสใบรับรองหมดอายุใน 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
สุดท้ายแก้ไขความเป็นเจ้าของและการอนุญาตในไฟล์ไทกะ
sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/
https://taiga.example.com
ตอนนี้คุณสามารถเข้าถึงการติดตั้งไทโดยไปที่ เข้าสู่ระบบโดยใช้บัญชีผู้ดูแลระบบเริ่มต้นด้วยชื่อผู้ใช้ " admin
" และรหัสผ่าน " 123123
" ตอนนี้การติดตั้งของคุณพร้อมสำหรับการใช้งานจริง เริ่มต้นด้วยการสร้างโครงการใหม่หรือประเมินผลิตภัณฑ์ หากคุณมีอยู่แล้วการจัดการโครงการ Github, จิรหรือ Trello คุณได้อย่างง่ายดายสามารถนำเข้าโครงการลงในไทโดยใช้ผู้นำเข้า
ใช้ระบบที่แตกต่างกันอย่างไร ไทกะเป็นแอปพลิเคชั่นฟรีและโอเพ่นซอร์สสำหรับการจัดการโครงการ ซึ่งแตกต่างจากเครื่องมือการจัดการโครงการอื่น ๆ ไทก้าใช้ส่วนเพิ่ม
ใช้ระบบที่แตกต่างกันอย่างไร Zammad เป็นระบบช่วยเหลือ / โอเพ่นซอร์สที่ออกแบบมาสำหรับทีมสนับสนุนลูกค้า ด้วย Zammad ฝ่ายบริการลูกค้า
ใช้ระบบที่แตกต่างกันอย่างไร X-Cart เป็นแพลตฟอร์มอีคอมเมิร์ซแบบโอเพ่นซอร์สที่มีความยืดหยุ่นสูงพร้อมคุณสมบัติและการผสานรวมมากมาย ซอร์สโค้ด X-Cart เป็นโฮสต์
ใช้ระบบที่แตกต่างกันอย่างไร Akaunting เป็นซอฟต์แวร์บัญชีโอเพ่นซอร์สและออนไลน์ฟรีที่ออกแบบมาสำหรับธุรกิจขนาดเล็กและมือปืนรับจ้าง มันถูกสร้างขึ้นด้วยปัญญา
ใช้ระบบที่แตกต่างกันอย่างไร Alfresco Community Edition เป็นเวอร์ชั่นโอเพ่นซอร์สของ Alfresco Content Services มันเขียนใน Java และใช้ PostgreSQL t
ใช้ระบบที่แตกต่างกันอย่างไร Alfresco Community Edition เป็นเวอร์ชั่นโอเพ่นซอร์สของ Alfresco Content Services มันเขียนใน Java และใช้ PostgreSQL t
ใช้ระบบที่แตกต่างกันอย่างไร Dolibarr เป็นการวางแผนทรัพยากรขององค์กรโอเพ่นซอร์ส (ERP) และการจัดการลูกค้าสัมพันธ์ (CRM) สำหรับธุรกิจ Dolibarr
ใช้ระบบที่แตกต่างกันอย่างไร Dolibarr เป็นการวางแผนทรัพยากรขององค์กรโอเพ่นซอร์ส (ERP) และการจัดการลูกค้าสัมพันธ์ (CRM) สำหรับธุรกิจ Dolibarr
ใช้ระบบที่แตกต่างกันอย่างไร osTicket เป็นระบบตั๋วสนับสนุนลูกค้าโอเพ่นซอร์ส ซอร์สโค้ดของ osTicket นั้นโฮสต์บน Github ในบทช่วยสอนนี้
ใช้ระบบที่แตกต่างกันอย่างไร Sentrifugo HRM เป็นแอพพลิเคชั่นการจัดการทรัพยากรมนุษย์แบบโอเพ่นซอร์ส มันเป็นคุณสมบัติที่หลากหลายและกำหนดค่าได้อย่างง่ายดาย
ใช้ระบบที่แตกต่างกันอย่างไร Akaunting เป็นซอฟต์แวร์บัญชีโอเพ่นซอร์สและออนไลน์ฟรีที่ออกแบบมาสำหรับธุรกิจขนาดเล็กและมือปืนรับจ้าง มันถูกสร้างขึ้นด้วยปัญญา
ใช้ระบบที่แตกต่างกันอย่างไร Matomo (ชื่อเดิม Piwik) เป็นแพลตฟอร์มการวิเคราะห์โอเพนซอร์ซซึ่งเป็นทางเลือกเปิดให้ Google Analytics แหล่งที่มาของ Matomo นั้นโฮสต์อยู่
ใช้ระบบที่แตกต่างกันอย่างไร Mailtrain เป็นแอปรับจดหมายข่าวแบบโอเพ่นซอร���สที่สร้างขึ้นบน Node.js และ MySQL / MariaDB แหล่งที่มาของ Mailtrains อยู่บน GitHub Thi
ใช้ระบบที่แตกต่างกันอย่างไร X-Cart เป็นแพลตฟอร์มอีคอมเมิร์ซแบบโอเพ่นซอร์สที่มีความยืดหยุ่นสูงพร้อมคุณสมบัติและการผสานรวมมากมาย ซอร์สโค้ด X-Cart เป็นโฮสต์
ใช้ระบบที่แตกต่างกันอย่างไร Attendize เป็นแพลตฟอร์มการจำหน่ายตั๋วโอเพ่นซอร์สและแพลตฟอร์มการจัดการเหตุการณ์โดยใช้ Laravel PHP Framework เข้าร่วมรหัสที่มา
Cezerin เป็นโอเพ่นซอร์ส eCommerce ทางเว็บโปรเกรสซีฟที่สร้างขึ้นโดยใช้ React และ Node.js ในบทช่วยสอนนี้คุณจะได้เรียนรู้วิธีการปรับใช้ Cezerin สำหรับผลิตผล
บทนำบทแนะนำนี้แสดงให้เห็นถึง OpenBSD เป็นโซลูชั่นอีคอมเมิร์ซโดยใช้ PrestaShop และ Apache ต้องการ Apache เนื่องจาก PrestaShop มี UR ที่ซับซ้อน
ใช้ระบบที่แตกต่างกันอย่างไร Osclass เป็นโครงการโอเพนซอร์ซที่ช่วยให้คุณสร้างไซต์ย่อยได้โดยง่ายโดยไม่มีความรู้ด้านเทคนิค มันคือรสเปรี้ยว
ใช้ระบบที่แตกต่างกันอย่างไร X-Cart เป็นแพลตฟอร์มอีคอมเมิร์ซแบบโอเพ่นซอร์สที่มีความยืดหยุ่นสูงพร้อมคุณสมบัติและการผสานรวมมากมาย ซอร์สโค้ด X-Cart เป็นโฮสต์
ใช้ระบบที่แตกต่างกันอย่างไร Open Web Analytics (OWA) เป็นโปรแกรมวิเคราะห์เว็บแบบโอเพ่นซอร์สที่สามารถใช้ในการติดตามและวิเคราะห์ว่าผู้คนใช้เว็บไซต์ของคุณอย่างไร
เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย
เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์
เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ
ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน
การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane
ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+
อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ
เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม
13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data
คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true