การติดตั้ง Pagekit CMS บน CentOS 7
ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า
การรวมอย่างต่อเนื่องเป็นแนวปฏิบัติในการพัฒนาซอฟต์แวร์ DevOps ซึ่งช่วยให้นักพัฒนาสามารถรวมรหัสที่แก้ไขแล้วลงในที่เก็บที่ใช้ร่วมกันหลายครั้งต่อวัน หลังจากการผสานแต่ละครั้งจะมีการสร้างและทดสอบอัตโนมัติเพื่อตรวจหาปัญหาในรหัส ช่วยให้นักพัฒนาสามารถค้นหาและแก้ไขข้อผิดพลาดได้อย่างรวดเร็วเพื่อปรับปรุงคุณภาพซอฟต์แวร์และจัดส่งซอฟต์แวร์อย่างต่อเนื่อง การสลับไปมาจาก Concourse นั้นง่ายมากเพราะมันเก็บการกำหนดค่าทั้งหมดไว้ในไฟล์ที่สามารถตรวจสอบได้ในการควบคุมเวอร์ชัน นอกจากนี้ยังมีส่วนต่อประสานกับผู้ใช้บนเว็บซึ่งแสดงข้อมูลการสร้างแบบโต้ตอบ
ตรวจสอบให้แน่ใจว่าได้แทนที่ที่อยู่ทั้งหมด192.0.2.1
และci.example.com
ด้วยที่อยู่ IP สาธารณะ Vultr ที่แท้จริงของคุณและชื่อโดเมนจริง
ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง CentOS 7 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง PostgreSQL
PostgreSQL เป็นระบบฐานข้อมูลเชิงวัตถุ Concourse จัดเก็บข้อมูลไปป์ไลน์ในฐานข้อมูล PostgreSQL เพิ่มที่เก็บ PostgreSQL
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
ติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL
sudo yum -y install postgresql96-server postgresql96-contrib
เริ่มต้นฐานข้อมูล
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
สร้างคลัสเตอร์ฐานข้อมูล PostgreSQL ใหม่ซึ่งเป็นชุดของฐานข้อมูลที่จัดการโดยเซิร์ฟเวอร์เดียว แก้ไขpg_hba.conf
ไฟล์เพื่อเปิดใช้งานการตรวจสอบตาม MD5
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
ค้นหาบรรทัดต่อไปนี้และเปลี่ยนค่าpeer
และident
ในMETHOD
คอลัมน์เป็นtrust
และmd5
ตามลำดับ
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
เมื่ออัปเดตแล้วการกำหนดค่าควรมีลักษณะเช่นนี้
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
เริ่มต้นเซิร์ฟเวอร์ PostgreSQL และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตเครื่อง
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
เปลี่ยนรหัสผ่านสำหรับผู้ใช้ PostgreSQL เริ่มต้น
sudo passwd postgres
เข้าสู่ระบบในฐานะผู้ใช้ PostgreSQL:
sudo su - postgres
สร้างผู้ใช้ PostgreSQL ใหม่สำหรับ Concourse CI
createuser concourse
หมายเหตุ : ผู้ใช้ PostgreSQL ดีฟอลต์สามารถใช้สำหรับการพิสูจน์ตัวตนของฐานข้อมูล แต่ขอแนะนำให้ใช้ผู้ใช้เฉพาะสำหรับการพิสูจน์ตัวตนของฐานข้อมูล Concourse ในการตั้งค่าการผลิต
PostgreSQL จัดเตรียมเชลล์เพื่อรันเคียวรีบนฐานข้อมูล สลับไปที่เชลล์ PostgreSQL โดยเรียกใช้:
psql
ตั้งรหัสผ่านสำหรับผู้ใช้ฐานข้อมูล Concourse ที่สร้างขึ้นใหม่
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
สำคัญ : แทนที่DBPassword
ด้วยรหัสผ่านที่คาดเดายาก จดบันทึกรหัสผ่านตามที่จำเป็นในภายหลังในบทช่วยสอน
สร้างฐานข้อมูลใหม่สำหรับฝูงชน
CREATE DATABASE concourse OWNER concourse;
ออกจากpsql
เปลือก
\q
เปลี่ยนเป็นผู้ใช้ sudo จากผู้ใช้ postgres ปัจจุบัน
exit
ดาวน์โหลดไฟล์ปฏิบัติการรุ่น Concourse รุ่นล่าสุดและเก็บไว้/usr/bin
เพื่อให้สามารถทำงานได้โดยตรง รุ่นล่าสุดของฝูงชนและบินไบนารีสามารถพบได้ในหน้าดาวน์โหลด Concourse ใหม่ออกบ่อยมาก แทนที่ลิงค์ด้านล่างด้วยลิงค์ใหม่สำหรับเวอร์ชั่นล่าสุด
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse
/usr/bin
ในทำนองเดียวกันดาวน์โหลดรุ่นล่าสุดของปฏิบัติการบินและเก็บไว้ใน
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly เป็นอินเตอร์เฟสบรรทัดคำสั่งเพื่อเชื่อมต่อกับ ATC API ของ Concourse CI Fly พร้อมใช้งานสำหรับหลายแพลตฟอร์มเช่น Linux, Windows และ MacOS
มอบหมายการอนุญาตให้ดำเนินการเพื่อดาวน์โหลดconcourse
และfly
ไบนารี
sudo chmod +x /usr/bin/concourse /usr/bin/fly
ตรวจสอบว่า Concourse and Fly ทำงานอย่างถูกต้องหรือไม่โดยตรวจสอบเวอร์ชั่นของพวกเขา
concourse -version
fly -version
คู่คีย์ RSA จัดให้มีวิธีการเข้ารหัสการสื่อสารระหว่างส่วนประกอบของ Concourse
เพื่อให้ฝูงชนทำงานได้ต้องสร้างอย่างน้อยสามคู่ session_signing_key
สำหรับการเข้ารหัสข้อมูลเซสชั่นที่สร้าง กุญแจนี้จะถูกใช้โดย TSA เพื่อลงนามคำขอที่ทำกับ ATC เพื่อรักษาความปลอดภัยเซิร์ฟเวอร์ TSA SSH, tsa_host_key
สร้าง สุดท้ายสร้าง a worker_key
สำหรับผู้ปฏิบัติงานแต่ละคน
สร้างไดเรกทอรีใหม่เพื่อจัดเก็บคีย์และการกำหนดค่าที่เกี่ยวข้องกับ Concourse CI
sudo mkdir /opt/concourse
สร้างคีย์ที่จำเป็น
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
อนุญาตคีย์สาธารณะของคนงานโดยคัดลอกเนื้อหาลงในauthorized_worker_keys
ไฟล์:
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
ฝูงชนจัดให้มีสององค์ประกอบแยกกันซึ่งจะต้องเริ่มต้นเว็บและผู้ปฏิบัติงาน เริ่มเว็บ Concourse
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
เปลี่ยนชื่อผู้ใช้และรหัสผ่านของbasic-auth
ถ้าต้องการ ตรวจสอบให้แน่ใจว่าเส้นทางไปยังไฟล์คีย์นั้นถูกต้องและตรวจสอบให้แน่ใจว่ามีการระบุค่าที่ถูกต้องสำหรับชื่อผู้ใช้และรหัสผ่านในการกำหนดค่าฐานข้อมูล PostgreSQL
หมายเหตุ : ATC จะฟังพอร์ตเริ่มต้น8080
และ TSA 2222
จะฟังพอร์ต หากไม่ต้องการการรับรองความถูกต้องให้ส่ง--no-really-i-dont-want-any-auth
ตัวเลือกหลังจากลบตัวเลือกการรับรองความถูกต้องเบื้องต้น
เมื่อเว็บเซิร์ฟเวอร์เริ่มทำงานแล้วผลลัพธ์ต่อไปนี้ควรปรากฏขึ้น
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
หยุดเซิร์ฟเวอร์ในตอนนี้เนื่องจากยังต้องตั้งค่าอีกสองสามอย่าง
เริ่ม Concourse CI Worker
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
คำสั่งดังกล่าวจะสมมติว่า TSA ที่กำลังทำงานอยู่บน localhost 2222
และการฟังพอร์ตเริ่มต้น
แม้ว่าเว็บ Concourse และผู้ปฏิบัติงานสามารถเริ่มต้นได้อย่างง่ายดายโดยใช้คำสั่งด้านบนแนะนำให้ใช้ Systemd เพื่อจัดการเซิร์ฟเวอร์
การใช้บริการ Systemd สำหรับการจัดการแอปพลิเคชันช่วยให้มั่นใจได้ว่าแอปพลิเคชันจะเริ่มต้นโดยอัตโนมัติเมื่อเกิดความล้มเหลวและในเวลาบูต เซิร์ฟเวอร์ Concourse ไม่ได้ใช้ข้อมูลจากไฟล์กำหนดค่าใด ๆ แต่สามารถเข้าถึงข้อมูลจากตัวแปรสภาพแวดล้อมได้ แทนที่จะตั้งค่าตัวแปรสภาพแวดล้อมโกลบอลสร้างไฟล์ใหม่เพื่อเก็บตัวแปรสภาพแวดล้อมจากนั้นส่งผ่านตัวแปรไปยัง Concourse CI โดยใช้บริการ Systemd
สร้างไฟล์สภาพแวดล้อมใหม่สำหรับเว็บ Concourse
sudo nano /opt/concourse/web.env
เติมไฟล์
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
เปลี่ยนชื่อผู้ใช้และรหัสผ่านของBASIC_AUTH
ถ้าต้องการ ตรวจสอบให้แน่ใจว่าเส้นทางไปยังไฟล์คีย์นั้นถูกต้องและตรวจสอบให้แน่ใจว่ามีการระบุค่าที่ถูกต้องสำหรับชื่อผู้ใช้และรหัสผ่านในการกำหนดค่าฐานข้อมูล PostgreSQL
ในทำนองเดียวกันสร้างไฟล์สภาพแวดล้อมสำหรับผู้ปฏิบัติงาน
sudo nano /opt/concourse/worker.env
เติมไฟล์
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
เนื่องจากไฟล์สภาพแวดล้อมมีชื่อผู้ใช้และรหัสผ่านให้เปลี่ยนการอนุญาตเพื่อให้ผู้ใช้รายอื่นไม่สามารถเข้าถึงได้
sudo chmod 600 /opt/concourse/*.env
ตอนนี้สร้างผู้ใช้ใหม่สำหรับ Concourse เพื่อเรียกใช้สภาพแวดล้อมเว็บ สิ่งนี้จะช่วยให้มั่นใจได้ว่าเว็บเซิร์ฟเวอร์กำลังทำงานในสภาพแวดล้อมที่แยก
sudo adduser --system concourse
มอบสิทธิ์การเป็นเจ้าของผู้ใช้ Concourse ให้กับไดเรกทอรีของไฟล์ Concourse CI
sudo chown -R concourse:concourse /opt/concourse
สร้างไฟล์บริการ systemd ใหม่สำหรับบริการเว็บ Concourse
sudo nano /etc/systemd/system/concourse-web.service
เติมไฟล์
[Unit]
Description=Concourse CI web server
After=postgresql-9.6.service
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
บันทึกและปิดไฟล์ สร้างไฟล์บริการใหม่สำหรับบริการผู้ร่วมงาน
sudo nano /etc/systemd/system/concourse-worker.service
เติมไฟล์
[Unit]
Description=Concourse CI worker process
After=concourse-web.service
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
บริการเว็บและผู้ปฏิบัติงานสามารถเริ่มต้นได้โดยตรงโดยการเรียกใช้:
sudo systemctl start concourse-web concourse-worker
ในการทำให้ผู้ปฏิบัติงานและกระบวนการทางเว็บเริ่มต้นโดยอัตโนมัติในเวลาบูตให้เรียกใช้:
sudo systemctl enable concourse-worker concourse-web
ในการตรวจสอบสถานะของบริการให้เรียกใช้:
sudo systemctl status concourse-worker concourse-web
หากไม่ได้เริ่มบริการหรืออยู่ในFAILED
สถานะให้ลบแคชออกจาก/tmp
ไดเรกทอรี
sudo rm -rf /tmp/*
เริ่มบริการใหม่
sudo systemctl restart concourse-worker concourse-web
ขอให้สังเกตว่าเวลานี้บริการได้เริ่มอย่างถูกต้อง ผลลัพธ์ที่ได้จากการตรวจสอบสถานะของการบริการควรเป็นแบบจำลอง
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
ปรับไฟร์วอลล์ของคุณเพื่ออนุญาตพอร์ต 8080 ซึ่ง ATS กำลังทำงานอยู่และพอร์ต 2222 ซึ่ง TSA กำลังทำงานอยู่
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
เมื่อเซิร์ฟเวอร์เริ่มทำงานเว็บอินเตอร์เฟสของ Concourse CI สามารถเข้าถึงได้โดยไปที่http://192.0.2.1:8080
เบราว์เซอร์ใด ๆ เข้าสู่ระบบโดยใช้ชื่อผู้ใช้และรหัสผ่านที่ให้ไว้ในไฟล์สภาพแวดล้อม
ในการเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ Fly ให้รัน:
fly -t my-ci login -c http://192.0.2.1:8080
คำสั่งดังกล่าวใช้สำหรับการเข้าสู่ระบบครั้งแรกไปยังเซิร์ฟเวอร์ -t
ถูกใช้เพื่อระบุชื่อเป้าหมาย แทนที่my-ci
ด้วยชื่อเป้าหมายที่ต้องการ main
คำสั่งดังกล่าวจะเข้าสู่ทีมเริ่มต้น มันจะถามชื่อผู้ใช้และรหัสผ่านที่ให้ไว้ในไฟล์สภาพแวดล้อม
ผลลัพธ์จะมีลักษณะดังนี้
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
การเข้าสู่ระบบเป้าหมายจะถูกบันทึกไว้หนึ่งวัน หลังจากนั้นมันจะหมดอายุ
เพื่อออกจากระบบทันที
fly -t my-ci logout
fly สามารถใช้เพื่อเข้าสู่เซิร์ฟเวอร์นอกเครือข่าย แต่เฉพาะในกรณีที่เซิร์ฟเวอร์มีที่อยู่ IP สาธารณะและสามารถเข้าถึงได้จากนอกเครือข่าย ไบนารี Windows หรือ MacOS สามารถดาวน์โหลดได้จากเว็บไซต์ดาวน์โหลดหรือจาก web UI ของเซิร์ฟเวอร์
การเข้าสู่ระบบและข้อมูลอื่น ๆ ที่ส่งผ่านเว็บ UI ไปยังเซิร์ฟเวอร์ Concourse ไม่ปลอดภัย การเชื่อมต่อไม่ได้เข้ารหัส พร็อกซีย้อนกลับ Nginx สามารถตั้งค่าด้วย Let's Encrypt SSL ฟรี
ติดตั้งเว็บเซิร์ฟเวอร์ Nginx และ Certbot ซึ่งเป็นแอปพลิเคชันไคลเอนต์สำหรับ Let's Encrypt CA
sudo yum -y install certbot-nginx nginx
เริ่มและเปิดใช้งาน Nginx เพื่อเริ่มต้นโดยอัตโนมัติในเวลาบูต:
sudo systemctl start nginx
sudo systemctl enable nginx
ก่อนที่จะสามารถร้องขอใบรับรองใบรับรองพอร์ต 80 และ 443 หรือบริการ HTTP และ HTTPS มาตรฐานจะต้องเปิดใช้งานผ่านไฟร์วอลล์ Certbot จะตรวจสอบสิทธิ์ในโดเมนก่อนออกใบรับรอง
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
พอร์ต 8080 ไม่จำเป็นต้องได้รับอนุญาตผ่านไฟร์วอลล์อีกต่อไปเพราะ Concourse จะทำงานบนพอร์ต HTTPS มาตรฐาน ลบรายการไฟร์วอลล์เพื่ออนุญาตพอร์ต 8080
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
บันทึก
ในการรับใบรับรองจาก Let's Encrypt CA โดเมนที่จะสร้างใบรับรองนั้นจะต้องชี้ไปที่เซิร์ฟเวอร์ หากไม่มีให้ทำการเปลี่ยนแปลงที่จำเป็นกับระเบียน DNS ของโดเมนและรอให้ DNS เผยแพร่ก่อนทำการขอใบรับรองอีกครั้ง Certbot ตรวจสอบอำนาจโดเมนก่อนที่จะให้ใบรับรอง
สร้างใบรับรอง SSL
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
ใบรับรองที่สร้างขึ้นมีแนวโน้มที่จะถูกเก็บไว้ใน/etc/letsencrypt/live/ci.example.com/
ไดเรกทอรี ใบรับรอง SSL จะถูกเก็บไว้เป็นและคีย์ส่วนตัวจะถูกเก็บไว้เป็นfullchain.pem
privkey.pem
ลองเข้ารหัสใบรับรองหมดอายุใน 90 วันดังนั้นขอแนะนำให้ต่ออายุอัตโนมัติสำหรับใบรับรองที่ตั้งค่าโดยใช้ cronjobs Cron เป็นบริการระบบที่ใช้ในการทำงานเป็นระยะ
เปิดไฟล์งาน cron
sudo crontab -e
เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์
30 5 * * 1 /usr/bin/certbot renew --quiet
งาน cron ข้างต้นจะทำงานทุกวันจันทร์เวลา 5.30 น. หากใบรับรองหมดอายุเนื่องจากหมดอายุใบรับรองนั้นจะถูกต่ออายุใหม่โดยอัตโนมัติ
สร้างโฮสต์เสมือนใหม่
sudo nano /etc/nginx/conf.d/concourse-ssl.conf
เติมไฟล์
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
หมายเหตุ : แทนที่ci.example.com
ด้วยโดเมนจริง
แก้ไขไฟล์ Environment ที่สร้างขึ้นสำหรับ Concourse Web
sudo nano /opt/concourse/web.env
เปลี่ยนค่าของCONCOURSE_EXTERNAL_URL
และเพิ่มอีกสองบรรทัดที่ท้ายไฟล์
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
บันทึกไฟล์และรีสตาร์ทเว็บเซิร์ฟเวอร์ Concourse, Worker และ Nginx:
sudo systemctl restart concourse-worker concourse-web nginx
ข้อมูลทั้งหมดที่ส่งไปและกลับจากเบราว์เซอร์นั้นปลอดภัยด้วยการเข้ารหัส SSL
ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า
TestLink เป็นระบบดำเนินการจัดการทดสอบบนเว็บโอเพ่นซอร์ส ช่วยให้ทีมงานประกันคุณภาพสามารถสร้างและจัดการกรณีทดสอบได้เช่นกัน
FTP ที่ปลอดภัยมากหรือเพียงแค่ vsFTPd เป็นซอฟต์แวร์น้ำหนักเบาที่มีความสามารถในการปรับแต่ง ในบทช่วยสอนนี้เราจะรักษาความปลอดภัยของข้อความ
CentOS ติดตามการพัฒนา Red Hat Enterprise Linux (RHEL) RHEL พยายามที่จะเป็นแพลตฟอร์มเซิร์ฟเวอร์ที่มั่นคงซึ่งหมายความว่าจะไม่รีบเร่งในการรวม
ในบางโอกาสผู้ดูแลระบบอาจต้องสร้างบัญชีผู้ใช้และ จำกัด การเข้าถึงเพื่อจัดการไฟล์ของตัวเองผ่าน sFTP เท่านั้น
ใช้ระบบที่แตกต่างกันอย่างไร Moodle เป็นแพลตฟอร์มการเรียนรู้โอเพนซอร์ซหรือระบบจัดการหลักสูตร (CMS) - ชุดซอฟต์แวร์โอเพ่นซอร์สฟรีที่ออกแบบมาเพื่อช่วย
ในบทความนี้ฉันจะอธิบายวิธีสร้าง LEMP สแต็คที่ได้รับการป้องกันโดย ModSecurity ModSecurity เป็นไฟร์วอลล์เว็บแอพพลิเคชันแบบโอเพนซอร์สที่มีประโยชน์
Introduction LAMP เป็นคำย่อที่ย่อมาจาก Linux, Apache, MySQL และ PHP ซอฟต์แวร์นี้เป็นโซลูชันโอเพ่นซอร์สที่ได้รับความนิยมสูงสุดสำหรับการติดตั้ง o
Icinga2 เป็นระบบการตรวจสอบที่มีประสิทธิภาพและเมื่อใช้ในโมเดลลูกค้าหลักจะสามารถแทนที่ความต้องการการตรวจสอบที่อิง NRPE ปรมาจารย์
ใช้ระบบที่แตกต่างกันอย่างไร Netdata เป็นดาวรุ่งพุ่งแรงในด้านการติดตามการวัดในระบบแบบเรียลไทม์ เมื่อเปรียบเทียบกับเครื่องมือชนิดเดียวกัน Netdata:
Buildbot เป็นโอเพ่นซอร์สเครื่องมือที่ใช้การรวมอย่างต่อเนื่องของ Python สำหรับการสร้างซอฟต์แวร์การทดสอบและการปรับใช้โดยอัตโนมัติ Buildbot ประกอบด้วยหนึ่งหรือหมอ
ยินดีต้อนรับสู่การกวดวิชา Vultr อื่น ที่นี่คุณจะได้เรียนรู้วิธีการติดตั้งและเรียกใช้เซิร์ฟเวอร์ SAMP คู่มือนี้เขียนขึ้นสำหรับ CentOS 6 ข้อกำหนดเบื้องต้นคุณจะต้อง
แอปพลิเคชั่น dotProject เป็นเครื่องมือการจัดการโครงการแบบโอเพ่นซอร์สบนเว็บ สำหรับตอนนี้มันวางจำหน่ายภายใต้ GPL ดังนั้นคุณสามารถปรับใช้และใช้งานได้บนบริการของคุณ
ใช้ระบบที่แตกต่างกันอย่างไร TaskWarrior เป็นเครื่องมือจัดการเวลาแบบโอเพ่นซอร์สที่เป็นการปรับปรุงแอพพลิเคชั่น Todo.txt และโคลนของมัน เนื่องมาจาก
ใช้ระบบที่แตกต่างกันอย่างไร Selfoss RSS Reader เป็นฟรีและเปิดตัวเองบนเว็บโฮสต์อเนกประสงค์, สตรีมสด, ตอบโต้กับผู้ใช้ได้, ฟีดข่าว (RSS / Atom) reade
ใช้ระบบที่แตกต่างกันอย่างไร Kanboard เป็นซอฟต์แวร์ซอฟต์แวร์การจัดการโครงการโอเพ่นซอร์สฟรีที่ออกแบบมาเพื่ออำนวยความสะดวกและมองเห็นภาพการทำงานเป็นทีม
บทช่วยสอนนี้จะกล่าวถึงกระบวนการติดตั้งเซิร์ฟเวอร์เกม Half Life 2 บนระบบ CentOS 6 ขั้นตอนที่ 1: การติดตั้งข้อกำหนดเบื้องต้นเพื่อตั้งค่า ou
GlusterFS เป็นระบบไฟล์ที่เชื่อมต่อกับเครือข่ายซึ่งช่วยให้คุณแบ่งปันไดรฟ์สองตัวในอุปกรณ์หลายตัวบนเครือข่ายได้อย่างมีประสิทธิภาพ ระบบไฟล์นี้คือ
ใช้ระบบที่แตกต่างกันอย่างไร ในขณะที่การโยกย้ายเว็บไซต์มักจะไม่มีปัญหาบางครั้งก็ยากที่จะโยกย้ายกล่องอีเมล นี่คือ CAS โดยเฉพาะอย่างยิ่ง
PrestaShop เป็นโซลูชันอีคอมเมิร์ซแบบโอเพ่นซอร์สที่ได้รับความนิยม คุณสามารถใช้มันเพื่อสร้างร้านค้าออนไลน์ของคุณเองได้ฟรี ในบทช่วยสอนนี้ฉันจะแสดงให้คุณเห็นว่า
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
ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร
ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1
AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน