หมายเหตุ: ฉันไม่แน่ใจว่าฉันควรถามที่นี่ stack overflow หรือ ???
ฉันกำลังย้ายแอป Ruby on Rails จาก Heroku ไปยัง AWS สถาปัตยกรรมเซิร์ฟเวอร์ค่อนข้างวานิลลา:
- ฐานข้อมูล
- เว็บเซิร์ฟเวอร์
- เซิร์ฟเวอร์คนงาน
ย้ายฐานข้อมูลและเว็บเซิร์ฟเวอร์ไปยัง AWS เรียบร้อยแล้ว เซิร์ฟเวอร์คนงานอยู่บนดาดฟ้า
FWIW: เว็บเซิร์ฟเวอร์ aws กำลังเรียกใช้ Ubuntu 20.x w/ Passenger / nginx เป็นเซิร์ฟเวอร์ http
ตอนนี้ฉันกำลังดำเนินการย้ายข้อมูล Worker ซึ่งใช้งานด้วยรหัสเดียวกันกับเว็บเซิร์ฟเวอร์ ข้อแตกต่างเพียงอย่างเดียวคือคนงานไม่สามารถเข้าถึงได้แบบสาธารณะและใช้ Ruby Gem ล่าช้า_งาน เพื่อดำเนินการตามคำขอพื้นหลัง
เซิร์ฟเวอร์คนงาน
- เซิร์ฟเวอร์ของผู้ปฏิบัติงานถูกสร้างขึ้นจาก ami ตามเว็บเซิร์ฟเวอร์
- ลบการกำหนดค่าเซิร์ฟเวอร์ nginx ที่เป็นสิ่งประดิษฐ์ออกจากเว็บเซิร์ฟเวอร์
คำถาม
ฉันจะตั้งค่าเซิร์ฟเวอร์ผู้ปฏิบัติงานให้หมุนและเริ่มทำงานเบื้องหลังโดยอัตโนมัติเมื่อเซิร์ฟเวอร์เริ่มทำงานได้อย่างไร
ฉันจะรักษากระบวนการของผู้ปฏิบัติงานให้คงอยู่ได้อย่างไรหากเกิดความผิดพลาดและการปิดระบบ
ใน Heroku บรรทัดคำสั่งเริ่มต้นเซิร์ฟเวอร์ผู้ปฏิบัติงาน:
บันเดิล exec rake job:work
หลังจากหมุนเซิร์ฟเวอร์ Worker ฉันสามารถเรียกใช้คำสั่งด้านบนและกระบวนการของผู้ปฏิบัติงานก็ทำงานได้ดี เพียงแค่ต้องหาวิธีให้กระบวนการของผู้ปฏิบัติงานทำงานแบบไม่โต้ตอบ
FYI: ฉันมาจากพื้นหลัง Windows/.NET สภาพแวดล้อม Linux / Ruby / Rails ยังค่อนข้างใหม่สำหรับฉัน