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

Buildbot เป็นโอเพ่นซอร์สเครื่องมือที่ใช้การรวมอย่างต่อเนื่องของ Python สำหรับการสร้างซอฟต์แวร์การทดสอบและการปรับใช้โดยอัตโนมัติ Buildbot ประกอบด้วย Buildbot หลักหนึ่งตัวหรือมากกว่าและจำนวนพนักงาน Buildbot master หรือ Buildmaster มีคำสั่งกลางของระบบ มันมีหน้าที่ในการจัดการสภาพแวดล้อมการสร้างคนงานและตัดสินใจเกี่ยวกับการส่งงานให้กับคนงานทั้งหมด Buildmaster ตรวจพบการเปลี่ยนแปลงในที่เก็บรหัสและส่งคำสั่งหรืองานไปยังผู้ปฏิบัติงานเพื่อดำเนินการ คนงานดำเนินการงานและส่งคืนผลลัพธ์ไปที่ Buildmaster Buildmaster จะแจ้งผู้พัฒนาผ่านช่องทางที่รองรับหลายช่อง ในบทช่วยสอนนี้เราจะติดตั้ง Buildbot master and worker บน CentOS 7 นอกจากนี้เรายังจะกำหนดค่าการรับรองความถูกต้องและ Nginx เป็น reverse proxy ที่ปลอดภัย

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

  • อินสแตนซ์ของเซิร์ฟเวอร์ Vultr CentOS 7 ที่มี RAM อย่างน้อย 1GB
  • sudo ผู้ใช้
  • ชื่อโดเมนที่ลงทะเบียนชี้ไปที่เซิร์ฟเวอร์

สำหรับบทช่วยสอนนี้เราจะใช้192.168.1.1เป็นที่อยู่ IP สาธารณะและci.example.comเป็นชื่อโดเมนที่ชี้ไปยังอินสแตนซ์ Vultr โปรดตรวจสอบให้แน่ใจว่าได้แทนที่ชื่อโดเมนและที่อยู่ IP ตัวอย่างทั้งหมดด้วยชื่อจริง

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

ติดตั้ง Python Dependencies

ติดตั้ง Pip ซึ่งเป็นผู้จัดการแพ็คเกจสำหรับ Python

sudo yum -y install epel-release
sudo yum -y install python-pip gcc python-devel git
sudo pip install --upgrade pip

ติดตั้ง PostgreSQL

Buildbot รองรับเซิร์ฟเวอร์ฐานข้อมูลหลายประเภทเช่น MySQL, PostgreSQL และ SQLite ในบทช่วยสอนนี้เราจะใช้ PostgreSQL เพื่อโฮสต์เซิร์ฟเวอร์ฐานข้อมูล Buildbot

PostgreSQL เป็นระบบฐานข้อมูลเชิงวัตถุที่รู้จักกันดีในเรื่องความเสถียรและความเร็ว ที่yumเก็บเริ่มต้นมี 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 ใหม่สำหรับ Buildbot

createuser bb_user

คุณสามารถใช้ชื่อผู้ใช้แทนได้bb_userหากต้องการ PostgreSQL จัดเตรียมpsqlเชลล์เพื่อรันเคียวรีบนฐานข้อมูล สลับไปที่เชลล์ PostgreSQL

psql

ตั้งรหัสผ่านสำหรับผู้ใช้ที่สร้างขึ้นใหม่

ALTER USER bb_user WITH ENCRYPTED password 'DBPassword';

แทนที่DBPasswordด้วยรหัสผ่านที่ปลอดภัย

สร้างฐานข้อมูลใหม่สำหรับการติดตั้ง Buildbot

CREATE DATABASE buildbot OWNER bb_user;

ออกจากpsqlเปลือก

\q

เปลี่ยนเป็นsudoผู้ใช้

exit

แก้ไขpg_hba.confไฟล์เพื่อเปิดใช้งานการตรวจสอบตาม MD5

sudo nano /var/lib/pgsql/10/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 สำหรับ Python

sudo pip install psycopg2

รีสตาร์ท PostgreSQL เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart postgresql-10

ติดตั้ง Buildbot

ติดตั้ง Buildbot โดยใช้ Pip

sudo pip install 'buildbot[bundle]' pyopenssl service_identity

คำสั่งดังกล่าวจะติดตั้งพร้อมกับ Buildbot buildbot-www, และอีกหลายเว็บปลั๊กอินเช่นbuildbot-workerbuildbot-waterfall-view

เพื่อให้แน่ใจว่า Buildbot ได้รับการติดตั้งเรียบร้อยแล้วคุณสามารถตรวจสอบได้โดยตรวจสอบเวอร์ชั่นของ Buildbot

buildbot --version

ผลลัพธ์ควรมีลักษณะข้อความต่อไปนี้

[user@vultr ~]$ buildbot --version
Buildbot version: 0.9.15.post1
Twisted version: 17.9.0

8010การปรับเปลี่ยนกฎไฟร์วอลล์ของคุณเพื่อช่วยให้พอร์ต Buildbot ใช้พอร์ตนี้เพื่อรับฟังคำขอของเว็บ

sudo firewall-cmd --zone=public --add-port=8010/tcp --permanent
sudo firewall-cmd --reload

กำหนดค่า Buildbot Master

สร้างผู้ใช้ที่ไม่มีสิทธิ์ใหม่เพื่อเรียกใช้กระบวนการหลักของ Buildbot และกระบวนการของผู้ปฏิบัติงาน ไม่แนะนำให้เรียกใช้บริการหลักของ Buildbot ในฐานะrootผู้ใช้

sudo adduser buildbot
sudo passwd buildbot

เข้าสู่ระบบในฐานะbuildbotผู้ใช้ที่สร้างขึ้นใหม่

sudo su - buildbot

ตั้งค่าต้นแบบ Buildbot ใน/home/buildbot/masterไดเรกทอรี ไดเรกทอรีนี้จะมีการกำหนดค่าสถานะและไฟล์บันทึกของแต่ละบิลด์

buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master

ตรวจสอบให้แน่ใจว่าได้เปลี่ยนข้อมูลประจำตัวของผู้ใช้ฐานข้อมูลในคำสั่งด้านบน

หมายเหตุ: หากคุณต้องการใช้ฐานข้อมูล SQLite แทน PostgreSQL เพียงแค่ไม่ใช้--db 'postgresql://bb_user:DBpassword@localhost/buildbot'ตัวเลือก ฐานข้อมูล SQLite จะถูกสร้างในไดเรกทอรีเดียวกัน

คำสั่งดังกล่าวจะสร้าง~/masterไดเรกทอรีเพื่อเก็บไฟล์ Buildmaster มันจะเขียนข้อมูลลงในฐานข้อมูล PostgreSQL คุณจะได้รับผลลัพธ์ต่อไปนี้

[buildbot@vultr ~]$ buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
mkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (postgresql://bb_user:DBPassword@localhost/buildbot)
buildmaster configured in /home/buildbot/master

คัดลอกไฟล์การกำหนดค่าตัวอย่างไปยังไฟล์การกำหนดค่าสด

cp ~/master/master.cfg.sample ~/master/master.cfg

แก้ไขไฟล์กำหนดค่า

nano ~/master/master.cfg

ค้นหาบรรทัดต่อไปนี้

c['workers'] = [worker.Worker("example-worker", "pass")]
...

c['builders'].append(
    util.BuilderConfig(name="runtests",
      workernames=["example-worker"],
      factory=factory))
...

c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
...

c['buildbotURL'] = "http://localhost:8010/"
...

c['db'] = {
    'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}

การกำหนดค่าด้านบนมีรายการสำหรับผู้ปฏิบัติงานตัวอย่าง localhostเราจะปรับเปลี่ยนรายการตัวอย่างสำหรับผู้ปฏิบัติงานที่เราจะทำงานบน เปลี่ยนเป็นexample-workerชื่อที่เหมาะสมสำหรับผู้localhostปฏิบัติงานและเปลี่ยนเป็นpassรหัสผ่านอื่น จดบันทึกชื่อผู้ปฏิบัติงานและรหัสผ่านตามที่เราต้องการในภายหลังในบทช่วยสอน เปลี่ยนชื่อของผู้ปฏิบัติงานในรายการผู้สร้าง เปลี่ยนชื่อของแอปพลิเคชันและ URL โครงการตามความต้องการของคุณ

เปลี่ยน URL Buildbot จากlocalhostเป็นชื่อโดเมนจริงหรือที่อยู่ IP สาธารณะของคุณ นอกจากนี้ตรวจสอบว่าข้อมูลฐานข้อมูลในไฟล์กำหนดค่าตรงกับข้อมูลรับรองฐานข้อมูลจริงของคุณ

c['buildbotNetUsageData'] = Noneในตอนท้ายของไฟล์เพิ่ม พารามิเตอร์นี้จะปิดใช้งานการส่งข้อมูลรุ่นซอฟต์แวร์และรายละเอียดการใช้งานปลั๊กอินไปยังนักพัฒนา Fullอย่างไรก็ตามเพื่อให้สามารถส่งข้อมูลการใช้งานที่เปลี่ยนตัวเลือกในการ

การกำหนดค่าควรมีลักษณะข้อความต่อไปนี้

c['workers'] = [worker.Worker("localhost-worker", "Password123")]
...    

c['builders'].append(
    util.BuilderConfig(name="runtests",
      workernames=["localhost-worker"],
      factory=factory))
...

c['title'] = "My Application CI"
c['titleURL'] = "https://example.com/my-app"
...

c['buildbotURL'] = "http://192.168.1.1:8010/"
...

c['db'] = {
    'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
...

c['buildbotNetUsageData'] = None

บันทึกไฟล์และออกจากโปรแกรมแก้ไข ตรวจสอบไฟล์ข้อผิดพลาด

buildbot checkconfig ~/master

หากไฟล์การกำหนดค่าไม่มีข้อผิดพลาดคุณจะเห็นผลลัพธ์ต่อไปนี้

[buildbot@vultr ~]$ buildbot checkconfig ~/master
Config file is good!

ตอนนี้ทุกอย่างได้รับการกำหนดค่าอย่างถูกต้องคุณสามารถเริ่มต้นแบบ Buildbot

buildbot start ~/master

คุณจะเห็นผลลัพธ์ต่อไปนี้

[buildbot@vultr ~]$ buildbot start ~/master
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.

ตอนนี้ที่โท Buildbot http://192.168.1.1:8010ได้เริ่มต้นอย่างถูกต้องส่วนติดต่อผู้ใช้เว็บสามารถเข้าถึงได้ คุณควรเห็นอินเตอร์เฟส Buildbot ต่อไปนี้

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

กำหนดค่า Buildbot Worker

เนื่องจากเราได้แก้ไขการกำหนดค่าของผู้ปฏิบัติงานใน~/master/master.cfgแล้วเราจึงสามารถสร้างคนงานใหม่ได้

buildbot-worker create-worker ~/worker localhost localhost-worker Password123

ตรวจสอบให้แน่ใจว่าคุณใช้ชื่อผู้ปฏิบัติงานและรหัสผ่านเดียวกันกับที่ระบุไว้ใน~/master/master.cfgไฟล์ หากมีความไม่ตรงกันในชื่อผู้ปฏิบัติงานหรือรหัสผ่านผู้ปฏิบัติงานจะไม่สามารถเชื่อมต่อกับต้นแบบ Buildbot คุณจะเห็นผลลัพธ์ต่อไปนี้เมื่อการประมวลผลสำเร็จ

[buildbot@vultr ~]$ buildbot-worker create-worker ~/worker localhost example-worker pass
mkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker

ข้อมูลเกี่ยวกับคนงานจะถูกเก็บไว้ใน/infoไดเรกทอรี แก้ไขข้อมูลการดูแลเกี่ยวกับนักพัฒนา

nano ~/worker/info/admin

แทนที่ชื่อตัวอย่างด้วยชื่อจริงและอีเมลของคุณ

Your Name <[email protected]>

ตอนนี้เปิดไฟล์ที่มีข้อมูลเกี่ยวกับโฮสต์

nano ~/worker/info/host

แทนที่คำสั่งตัวอย่างด้วยข้อมูลจริงเกี่ยวกับระบบโฮสต์

Localhost, CentOS 7

ผู้ดูแลระบบผู้ปฏิบัติงานและข้อมูลโฮสต์จะใช้เพื่อบอกผู้ใช้เกี่ยวกับระบบเท่านั้น คุณยังสามารถเพิ่มข้อมูลเพิ่มเติมเกี่ยวกับระบบเช่นรุ่น Buildbot และรุ่น Twisted

เริ่มคนงาน

buildbot-worker start ~/worker

ผลลัพธ์จะมีลักษณะข้อความต่อไปนี้

[buildbot@vultr ~]$ buildbot-worker start ~/worker
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.

หากต้องการตรวจสอบว่ามีการลงทะเบียนผู้ปฏิบัติงานหรือไม่ให้ไปที่เว็บอินเตอร์เฟสของ Buildbot และไปที่นำทางBuilds >> Workersจากการนำทางด้านซ้าย คุณควรเห็นว่าผู้ปฏิบัติงานพร้อมแล้วที่จะสร้าง

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

การเรียกใช้การสร้างตัวอย่างเพื่อตรวจสอบว่าผู้ปฏิบัติงาน Buildbot Builds >> Buildersจะทำงานเสร็จเรียบร้อยแล้วให้ไปที่ คลิกที่runtestsชื่อผู้สร้างเพื่อเปิดส่วนต่อประสานตัวสร้างและคลิกที่Forceปุ่มเพื่อบังคับให้สร้าง ระบุชื่อของคุณและคลิกที่Start Buildปุ่มเพื่อเริ่มสร้าง เนื่องจากเป็นการทดสอบสร้างตัวอย่างเพื่อตรวจสอบสภาพแวดล้อมของ Buildbot มันจะเสร็จสิ้นในไม่กี่วินาที คุณจะได้รับข้อความแสดงความสำเร็จและผลลัพธ์การสร้าง

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

การตั้งค่าบริการ Systemd

แม้ว่าต้นแบบและผู้สร้าง Buildbot สามารถเริ่มต้นได้ง่ายโดยใช้คำสั่งด้านบนแนะนำให้ใช้หน่วย Systemd เพื่อเรียกใช้และจัดการบริการ Buildbot สิ่งนี้จะช่วยให้มั่นใจได้ว่าพวกเขาจะเริ่มต้นโดยอัตโนมัติเมื่อระบบรีสตาร์ทและความล้มเหลว

หมายเหตุ: การ สลับไปที่sudoผู้ใช้อีกครั้งโดยการทำงานอย่างใดอย่างหนึ่งหรือexit su <username>จากนี้ไปคำสั่งทั้งหมดจะต้องดำเนินการโดยsudoผู้ใช้

หยุดทำงาน Buildbot คนทำงานและบริการหลัก

sudo su buildbot -c "buildbot stop /home/buildbot/master" 
sudo su buildbot -c "buildbot-worker stop ~/worker"

สร้างไฟล์หน่วย Systemd ใหม่สำหรับต้นแบบ Buildbot

sudo nano /etc/systemd/system/buildbot.service

เติมไฟล์

[Unit]
Description=BuildBot master service 
After=network.target

[Service]
Type=forking
User=buildbot 
Group=buildbot 
WorkingDirectory=/home/buildbot/master 
ExecStart=/usr/bin/buildbot start
ExecStop=/usr/bin/buildbot stop
ExecReload=/usr/bin/buildbot restart

[Install]
WantedBy=multi-user.target

เริ่มต้นแบบ Buildbot และเปิดใช้งานให้เริ่มต้นโดยอัตโนมัติในเวลาบูต

sudo systemctl start buildbot
sudo systemctl enable buildbot

สร้างไฟล์หน่วย Systemd ใหม่สำหรับผู้ปฏิบัติงาน Buildbot

sudo nano /etc/systemd/system/buildbot-worker.service

เติมไฟล์

[Unit]
Description=BuildBot worker service
After=network.target

[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/worker
ExecStart=/usr/bin/buildbot-worker start
ExecStop=/usr/bin/buildbot-worker stop
ExecReload=/usr/bin/buildbot-worker restart

[Install]
WantedBy=multi-user.target

เริ่มงาน Buildbot และเปิดใช้งานโดยอัตโนมัติเมื่อเริ่มต้นระบบโดยอัตโนมัติ

sudo systemctl start buildbot-worker
sudo systemctl enable buildbot-worker

คุณสามารถตรวจสอบสถานะของบริการ

sudo systemctl status buildbot buildbot-worker

หากบริการทำงานได้อย่างราบรื่นคุณจะเห็นว่าในผลลัพธ์

[user@vultr ~]$ sudo systemctl status buildbot buildbot-worker
● buildbot.service - BuildBot master service
...
Active: active (running) since Fri 2018-01-12 16:00:59 UTC; 1min 25s ago
...
Jan 12 16:00:59 vultr.guest systemd[1]: Started BuildBot master service.

● buildbot-worker.service - BuildBot worker service
...
Active: active (running) since Fri 2018-01-12 16:02:00 UTC; 24s ago
...
Jan 12 16:02:00 vultr.guest systemd[1]: Started BuildBot worker service.

เปิดใช้งานการรับรองความถูกต้อง

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

sudo su buildbot -c "nano /home/buildbot/master/master.cfg"

เพิ่มบรรทัดต่อไปนี้ในตอนท้ายของไฟล์

c['www']['authz'] = util.Authz(
       allowRules = [
           util.AnyEndpointMatcher(role="admins")
       ],
       roleMatchers = [
           util.RolesFromUsername(roles=['admins'], usernames=['admin_user'])
       ]
)
c['www']['auth'] = util.UserPasswordAuth({'admin_user': 'AdminPassword'})

แทนที่ทั้งสองเหตุการณ์admin_userด้วยชื่อผู้ใช้จริงที่คุณต้องการใช้และAdminPasswordด้วยรหัสผ่านที่คาดเดายาก

ตรวจสอบข้อผิดพลาดในไฟล์กำหนดค่า

sudo su buildbot -c "buildbot checkconfig /home/buildbot/master"

เริ่มบริการหลักของ Buildbot เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart buildbot

เรียกดูเว็บอินเตอร์เฟสอีกครั้งเพื่อดูว่าผู้ใช้ที่ไม่ระบุชื่อสามารถดูรายละเอียดพื้นฐานเกี่ยวกับเซิร์ฟเวอร์การสร้างได้เท่านั้น ตอนนี้เข้าสู่ระบบโดยใช้ข้อมูลประจำตัวที่ตั้งค่าในmaster.cfgไฟล์และคุณจะเห็นว่าฟังก์ชั่นการบริหารอื่น ๆ ทั้งหมดจะใช้ไ��้เฉพาะกับผู้ใช้ที่เข้าสู่ระบบผู้ดูแลระบบ

สร้าง Buildbot ด้วย Let's Encrypt SSL

โดยค่าเริ่มต้น Buildbot จะฟังพอร์ต8010ที่ไม่มีการเชื่อมต่อที่ปลอดภัย HTTPSขอแนะนำให้ใช้ส่วนต่อประสานกับเว็บเพื่อให้แน่ใจว่าข้อมูลปลอดภัยในระหว่างการขนส่งจากเบราว์เซอร์ไปยังเซิร์ฟเวอร์ ในบทนี้เราจะทำการติดตั้งและรักษาความปลอดภัย Nginx ด้วย Let's Encrypt ใบรับรอง SSL ฟรี เว็บเซิร์ฟเวอร์ Nginx จะทำงานเป็น reverse proxy เพื่อส่งต่อคำร้องขอขาเข้าไปยังจุดปลาย HTTP ของ Buildbot

ติดตั้ง Nginx

sudo yum -y install nginx

เริ่ม Nginx และเปิดใช้งานให้เริ่มโดยอัตโนมัติในเวลาบูต

sudo systemctl start nginx
sudo systemctl enable nginx

ติดตั้ง Certbot ซึ่งเป็นแอปพลิเคชันไคลเอนต์สำหรับ Let's Encrypt CA

sudo yum -y install certbot

ก่อนที่คุณจะสามารถขอใบรับรองคุณจะต้องอนุญาตให้ใช้พอร์ต80และ443หรือมาตรฐานHTTPและHTTPSบริการผ่านไฟร์วอลล์ นอกจากนี้ให้ลบพอร์ต8010ซึ่งฟังการเชื่อมต่อที่ไม่ปลอดภัย

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8010/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 วันดังนั้นขอแนะนำให้ตั้งค่าการต่ออายุใบรับรองโดยอัตโนมัติโดยใช้งาน Cron

เปิดไฟล์งาน cron สำหรับrootผู้ใช้

sudo crontab -e

เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์

30 5 * * * /usr/bin/certbot renew --quiet

งาน cron ข้างต้นจะทำงานทุกวันเวลา 5.30 น. หากใบรับรองหมดอายุเนื่องจากหมดอายุใบรับรองจะต่ออายุโดยอัตโนมัติ

ตอนนี้เปลี่ยนไฟล์กำหนดค่าเริ่มต้นของ Nginx เป็นdefault_serverบรรทัด

sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf

สร้างไฟล์การกำหนดค่าใหม่สำหรับเว็บอินเตอร์เฟส Buildbot

sudo nano /etc/nginx/conf.d/buildbot.conf

เติมไฟล์

upstream buildbot {
server 127.0.0.1:8010;
}

server {
    listen 80 default_server;
    server_name ci.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    server_name ci.example.com;

    root html;
    index index.html index.htm;

    ssl on;
    ssl_certificate         /etc/letsencrypt/live/ci.example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/ci.example.com/privkey.pem;

    ssl_session_cache      shared:SSL:10m;
    ssl_session_timeout  1440m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

    access_log  /var/log/nginx/buildbot.access.log;

    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_set_header X-Forwarded-Server  $host;
    proxy_set_header X-Forwarded-Host  $host;

    location / {
        proxy_pass http://buildbot;
    }
    location /sse/ {
        proxy_buffering off;
        proxy_pass http://buildbot/sse/;
    }
    location /ws {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://buildbot/ws;
        proxy_read_timeout 6000s;
    }
}

ตรวจสอบข้อผิดพลาดในไฟล์กำหนดค่าใหม่

sudo nginx -t

หากคุณเห็นผลลัพธ์ต่อไปนี้การกำหนดค่าจะไม่มีข้อผิดพลาด

[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

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

sudo systemctl restart nginx

เปิดไฟล์คอนฟิกูเรชัน Buildmaster

sudo su buildbot -c "nano /home/buildbot/master/master.cfg"

ค้นหาบรรทัดต่อไปนี้

c['buildbotURL'] = "http://192.168.1.1:8010/"

เปลี่ยน URL ตามชื่อโดเมนที่คุณใช้

c['buildbotURL'] = "https://ci.example.com/"

เริ่มบริการหลักของ Buildbot

sudo systemctl restart buildbot

ตอนนี้คุณสามารถเข้าถึงแดชบอร์ด Buildbot https://ci.example.comที่ คุณจะเห็นว่าการเชื่อมต่อกับ Buildbot นั้นปลอดภัยด้วย SSL

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

เข้าสู่ระบบโดยใช้ข้อมูลประจำตัวของผู้ดูแลระบบและเพิ่มขั้นตอนแรกของคุณเพื่อเริ่มสร้างแอปพลิเคชันของคุณ



การติดตั้ง 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:

ติดตั้งเซิร์ฟเวอร์มัลติเพลเยอร์ 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 ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน