วิธีการติดตั้งและกำหนดค่า Concourse CI บน CentOS 7

บทนำ

การรวมอย่างต่อเนื่องเป็นแนวปฏิบัติในการพัฒนาซอฟต์แวร์ DevOps ซึ่งช่วยให้นักพัฒนาสามารถรวมรหัสที่แก้ไขแล้วลงในที่เก็บที่ใช้ร่วมกันหลายครั้งต่อวัน หลังจากการผสานแต่ละครั้งจะมีการสร้างและทดสอบอัตโนมัติเพื่อตรวจหาปัญหาในรหัส ช่วยให้นักพัฒนาสามารถค้นหาและแก้ไขข้อผิดพลาดได้อย่างรวดเร็วเพื่อปรับปรุงคุณภาพซอฟต์แวร์และจัดส่งซอฟต์แวร์อย่างต่อเนื่อง การสลับไปมาจาก Concourse นั้นง่ายมากเพราะมันเก็บการกำหนดค่าทั้งหมดไว้ในไฟล์ที่สามารถตรวจสอบได้ในการควบคุมเวอร์ชัน นอกจากนี้ยังมีส่วนต่อประสานกับผู้ใช้บนเว็บซึ่งแสดงข้อมูลการสร้างแบบโต้ตอบ

องค์ประกอบฝูงชน
  • ATCเป็นองค์ประกอบหลักของฝูงชน มีหน้าที่เรียกใช้ Web UI และ API นอกจากนี้ยังดูแลการตั้งเวลาไปป์ไลน์ทั้งหมด
  • TSAเป็นเซิร์ฟเวอร์ SSH ที่สร้างขึ้นเอง มีหน้าที่รับผิดชอบในการลงทะเบียนผู้ปฏิบัติงานกับ ATC อย่างปลอดภัย
  • คนงานจะให้บริการที่แตกต่างกันสองประเภท:
    1. การ์เด้นเป็นรันไทม์ภาชนะและอินเตอร์เฟซสำหรับการกำกับดูแลภาชนะบรรจุจากระยะไกลกับคนงาน
    2. Baggageclaimเป็นเซิร์ฟเวอร์การจัดการแคชและสิ่งประดิษฐ์
  • Flyเป็นอินเตอร์เฟสบรรทัดคำสั่งที่ใช้ในการโต้ตอบกับ ATC เพื่อกำหนดค่า Concourse Pipelines

ข้อกำหนดเบื้องต้น

  • อินสแตนซ์ของเซิร์ฟเวอร์ Vultr CentOS 7
  • sudo ผู้ใช้

ตรวจสอบให้แน่ใจว่าได้แทนที่ที่อยู่ทั้งหมด192.0.2.1และci.example.comด้วยที่อยู่ IP สาธารณะ Vultr ที่แท้จริงของคุณและชื่อโดเมนจริง

ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง CentOS 7 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง PostgreSQL

ติดตั้งและกำหนดค่าฐานข้อมูล 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 CI

ดาวน์โหลดไฟล์ปฏิบัติการรุ่น 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

คู่คีย์ 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

การใช้บริการ 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 ของเซิร์ฟเวอร์

การตั้งค่า Nginx Reverse Proxy

การเข้าสู่ระบบและข้อมูลอื่น ๆ ที่ส่งผ่านเว็บ 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.pemprivkey.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



Leave a Comment

การติดตั้ง Pagekit CMS บน CentOS 7

การติดตั้ง Pagekit CMS บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า

วิธีการติดตั้ง TestLink บน CentOS 7

วิธีการติดตั้ง TestLink บน CentOS 7

TestLink เป็นระบบดำเนินการจัดการทดสอบบนเว็บโอเพ่นซอร์ส ช่วยให้ทีมงานประกันคุณภาพสามารถสร้างและจัดการกรณีทดสอบได้เช่นกัน

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

FTP ที่ปลอดภัยมากหรือเพียงแค่ vsFTPd เป็นซอฟต์แวร์น้ำหนักเบาที่มีความสามารถในการปรับแต่ง ในบทช่วยสอนนี้เราจะรักษาความปลอดภัยของข้อความ

วิธีการติดตั้ง GCC บน CentOS 6

วิธีการติดตั้ง GCC บน CentOS 6

CentOS ติดตามการพัฒนา Red Hat Enterprise Linux (RHEL) RHEL พยายามที่จะเป็นแพลตฟอร์มเซิร์ฟเวอร์ที่มั่นคงซึ่งหมายความว่าจะไม่รีบเร่งในการรวม

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ในบางโอกาสผู้ดูแลระบบอาจต้องสร้างบัญชีผู้ใช้และ จำกัด การเข้าถึงเพื่อจัดการไฟล์ของตัวเองผ่าน sFTP เท่านั้น

วิธีการติดตั้ง Moodle บน CentOS 7

วิธีการติดตั้ง Moodle บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Moodle เป็นแพลตฟอร์มการเรียนรู้โอเพนซอร์ซหรือระบบจัดการหลักสูตร (CMS) - ชุดซอฟต์แวร์โอเพ่นซอร์สฟรีที่ออกแบบมาเพื่อช่วย

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ในบทความนี้ฉันจะอธิบายวิธีสร้าง LEMP สแต็คที่ได้รับการป้องกันโดย ModSecurity ModSecurity เป็นไฟร์วอลล์เว็บแอพพลิเคชันแบบโอเพนซอร์สที่มีประโยชน์

วิธีการติดตั้ง Apache, MySQL และ PHP บน CentOS 6

วิธีการติดตั้ง Apache, MySQL และ PHP บน CentOS 6

Introduction LAMP เป็นคำย่อที่ย่อมาจาก Linux, Apache, MySQL และ PHP ซอฟต์แวร์นี้เป็นโซลูชันโอเพ่นซอร์สที่ได้รับความนิยมสูงสุดสำหรับการติดตั้ง o

การปรับเปลี่ยน Icinga2 ให้ใช้โมเดลต้นแบบ / ไคลเอ็นต์บน CentOS 6 หรือ CentOS 7

การปรับเปลี่ยน Icinga2 ให้ใช้โมเดลต้นแบบ / ไคลเอ็นต์บน CentOS 6 หรือ CentOS 7

Icinga2 เป็นระบบการตรวจสอบที่มีประสิทธิภาพและเมื่อใช้ในโมเดลลูกค้าหลักจะสามารถแทนที่ความต้องการการตรวจสอบที่อิง NRPE ปรมาจารย์

การติดตั้ง Netdata บน CentOS 7

การติดตั้ง Netdata บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Netdata เป็นดาวรุ่งพุ่งแรงในด้านการติดตามการวัดในระบบแบบเรียลไทม์ เมื่อเปรียบเทียบกับเครื่องมือชนิดเดียวกัน Netdata:

วิธีการติดตั้งและกำหนดค่า Buildbot บน CentOS 7

วิธีการติดตั้งและกำหนดค่า Buildbot บน CentOS 7

Buildbot เป็นโอเพ่นซอร์สเครื่องมือที่ใช้การรวมอย่างต่อเนื่องของ Python สำหรับการสร้างซอฟต์แวร์การทดสอบและการปรับใช้โดยอัตโนมัติ Buildbot ประกอบด้วยหนึ่งหรือหมอ

ติดตั้งเซิร์ฟเวอร์มัลติเพลเยอร์ SA-MP San Andreas บน CentOS 6

ติดตั้งเซิร์ฟเวอร์มัลติเพลเยอร์ SA-MP San Andreas บน CentOS 6

ยินดีต้อนรับสู่การกวดวิชา Vultr อื่น ที่นี่คุณจะได้เรียนรู้วิธีการติดตั้งและเรียกใช้เซิร์ฟเวอร์ SAMP คู่มือนี้เขียนขึ้นสำหรับ CentOS 6 ข้อกำหนดเบื้องต้นคุณจะต้อง

ติดตั้ง dotProject บน CentOS 7

ติดตั้ง dotProject บน CentOS 7

แอปพลิเคชั่น dotProject เป็นเครื่องมือการจัดการโครงการแบบโอเพ่นซอร์สบนเว็บ สำหรับตอนนี้มันวางจำหน่ายภายใต้ GPL ดังนั้นคุณสามารถปรับใช้และใช้งานได้บนบริการของคุณ

ติดตั้ง TaskServer (taskd) บน CentOS 7

ติดตั้ง TaskServer (taskd) บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร TaskWarrior เป็นเครื่องมือจัดการเวลาแบบโอเพ่นซอร์สที่เป็นการปรับปรุงแอพพลิเคชั่น Todo.txt และโคลนของมัน เนื่องมาจาก

วิธีการติดตั้ง Selfoss RSS Reader บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Selfoss RSS Reader บน CentOS 7 LAMP VPS

ใช้ระบบที่แตกต่างกันอย่างไร Selfoss RSS Reader เป็นฟรีและเปิดตัวเองบนเว็บโฮสต์อเนกประสงค์, สตรีมสด, ตอบโต้กับผู้ใช้ได้, ฟีดข่าว (RSS / Atom) reade

วิธีการติดตั้ง Kanboard บน CentOS 7

วิธีการติดตั้ง Kanboard บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Kanboard เป็นซอฟต์แวร์ซอฟต์แวร์การจัดการโครงการโอเพ่นซอร์สฟรีที่ออกแบบมาเพื่ออำนวยความสะดวกและมองเห็นภาพการทำงานเป็นทีม

การตั้งค่าเซิร์ฟเวอร์ Half Life 2 บน CentOS 6

การตั้งค่าเซิร์ฟเวอร์ Half Life 2 บน CentOS 6

บทช่วยสอนนี้จะกล่าวถึงกระบวนการติดตั้งเซิร์ฟเวอร์เกม Half Life 2 บนระบบ CentOS 6 ขั้นตอนที่ 1: การติดตั้งข้อกำหนดเบื้องต้นเพื่อตั้งค่า ou

ไดรฟ์ที่แชร์ความพร้อมใช้งานสูงใช้ Vultr Block Storage และ GlusterFS

ไดรฟ์ที่แชร์ความพร้อมใช้งานสูงใช้ Vultr Block Storage และ GlusterFS

GlusterFS เป็นระบบไฟล์ที่เชื่อมต่อกับเครือข่ายซึ่งช่วยให้คุณแบ่งปันไดรฟ์สองตัวในอุปกรณ์หลายตัวบนเครือข่ายได้อย่างมีประสิทธิภาพ ระบบไฟล์นี้คือ

วิธีโยกย้ายกล่องจดหมายอย่างง่ายดายด้วย Imapsync บน CentOS 7

วิธีโยกย้ายกล่องจดหมายอย่างง่ายดายด้วย Imapsync บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร ในขณะที่การโยกย้ายเว็บไซต์มักจะไม่มีปัญหาบางครั้งก็ยากที่จะโยกย้ายกล่องอีเมล นี่คือ CAS โดยเฉพาะอย่างยิ่ง

วิธีการติดตั้ง PrestaShop บน CentOS 7

วิธีการติดตั้ง PrestaShop บน CentOS 7

PrestaShop เป็นโซลูชันอีคอมเมิร์ซแบบโอเพ่นซอร์สที่ได้รับความนิยม คุณสามารถใช้มันเพื่อสร้างร้านค้าออนไลน์ของคุณเองได้ฟรี ในบทช่วยสอนนี้ฉันจะแสดงให้คุณเห็นว่า

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน