วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS
เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย
ไทกะเป็นแอปพลิเคชั่นฟรีและโอเพ่นซอร์สสำหรับการจัดการโครงการ ซึ่งแตกต่างจากเครื่องมือการจัดการโครงการอื่น ๆ ไทก้าใช้วิธีการที่คล่องตัวเพิ่มขึ้นเพื่อจัดการการพัฒนาของโครงการ ไทกะเป็นแอพพลิเคชั่นที่ทรงพลังและปรับแต่งได้อย่างสมบูรณ์ แบ็กเอนด์ของไทกะเขียนใน 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 = "mail@example.com"
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 = "mail@example.com"
#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.pemprivkey.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 คุณได้อย่างง่ายดายสามารถนำเข้าโครงการลงในไทโดยใช้ผู้นำเข้า
เรียนรู้วิธีการติดตั้ง 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