วิธีการติดตั้ง Zammad 2.0 บน Ubuntu 16.04 LTS
ใช้ระบบที่แตกต่างกันอย่างไร Zammad เป็นระบบช่วยเหลือ / โอเพ่นซอร์สที่ออกแบบมาสำหรับทีมสนับสนุนลูกค้า ด้วย Zammad ฝ่ายบริการลูกค้า
ไทกะเป็นแอปพลิเคชั่นฟรีและโอเพ่นซอร์สสำหรับการจัดการโครงการ ซึ่งแตกต่างจากเครื่องมือการจัดการโครงการอื่น ๆ ไทก้าใช้วิธีการที่คล่องตัวเพิ่มขึ้นเพื่อจัดการการพัฒนาของโครงการ ไทกะเป็นแอพพลิเคชั่นที่ทรงพลังและปรับแต่งได้อย่างสมบูรณ์ แบ็กเอนด์ของไทกะเขียนใน Python โดยใช้เฟรมเวิร์ก Django ส่วนหน้าเขียนด้วย JavaScript โดยใช้เฟรมเวิร์ก CoffeeScript และ AngularJS ไทก้ามีคุณสมบัติเช่นการทำงานร่วมกันของโครงการ, บอร์ด Kanban, การติดตามข้อผิดพลาด, การรายงาน, การติดตามเวลา, backlogs, wiki และอื่น ๆ
ในบทช่วยสอนนี้เราจะใช้taiga.example.com
เป็นชื่อโดเมนที่ชี้ไปยังเซิร์ฟเวอร์ แทนที่ทั้งหมดtaiga.example.com
ด้วยชื่อโดเมนจริงของคุณ
ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง Ubuntu 16.04 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง 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
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
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
ด้วยรหัสผ่านที่ปลอดภัย
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
ส่วนต่อท้าย 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 เพื่อให้บริการแก่ผู้ใช้ นอกจากนี้เรายังจะได้รับและติดตั้งใบรับรอง 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 คุณได้อย่างง่ายดายสามารถนำเข้าโครงการลงในไทโดยใช้ผู้นำเข้า
ใช้ระบบที่แตกต่างกันอย่างไร 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