การแก้ไขแม่แบบ AWS CloudFormation: ขัดรหัสของคุณ

ฉันสาธิตวิธีใช้โซลูชัน SaaS จากแผนธุรกิจไปยังแอปพลิเคชันสดโดยใช้ตัวอย่างของแอพตั๋วปัญหาใหม่ที่เป็นประกาย นี่คือสิ่งที่เราได้กล่าวถึง:

  • วิธีการเป็นผู้ขาย SaaS บนเชือกผูกรองเท้ากับ Amazon Web Services
  • ขั้นตอนแรกสู่ SaaS ด้วยเทมเพลต AWS CloudFormation
  • ใช้ AWS CloudFormation เพื่อสร้างคลัสเตอร์ที่มีความพร้อมใช้งานสูง
  • กายวิภาคของเทมเพลต AWS CloudFormation

หยิบขึ้นมาจากบทเรียนกายวิภาคศาสตร์ของสัปดาห์ที่แล้วซึ่งฉันได้อธิบายรายละเอียดส่วนต่างๆของเทมเพลต AWS CloudFormation ตอนนี้ฉันพร้อมที่จะปรับเปลี่ยนให้เหมาะกับความต้องการเฉพาะของฉัน - โดยอัตโนมัติสร้างบริการตั๋วสนับสนุนของฉัน

คลิกเพื่อดูภาพขยาย

งานสร้าง SaaS มาถึงขั้นตอนทางเทคนิคอย่างหนักแล้ว ฉันได้เขียนขั้นตอนที่ซับซ้อนอย่างไม่น่าเชื่อด้านล่าง (ขอบคุณหน่วยงานพัฒนา Drupal Microserve สำหรับตรวจสอบรหัสของฉัน)

การทดลองกับ Amazon CloudFormation ต้องใช้เงินจริง ทำตามคำแนะนำเหล่านี้หากคุณยินดีเสียเงินเพียงเล็กน้อย ฉันถือว่าคุณสมัครใช้ AWS แล้ว

ฉันไม่ได้อธิบายถึงงานสร้าง SaaS ทั้งหมดที่ต้องการ - ไม่จำเป็นต้องลากคนบริสุทธิ์ผ่านกระบวนการพัฒนาทั้งหมด ขั้นตอนเหล่านี้ติดกันไม่กี่หน่วยการสร้างเพื่อเข้าสู่สถานะการทำงานขั้นพื้นฐาน

รับสำเนาของไฟล์เทมเพลต CloudFusion ของ Amazon

ฉันสับและเปลี่ยนเทมเพลตของ Amazon เพื่อให้ได้ผลลัพธ์ที่รวดเร็วแทนที่จะทำอย่างถูกต้องโดยการเขียนเทมเพลตตั้งแต่เริ่มต้น หากคุณเคยสงสัยว่า "แฮ็คสกปรก" คืออะไรคุณกำลังจะสร้างมันขึ้นมา

  1. เปิด URL http://aws.amazon.com/cloudformation/aws-cloudformation-templates/ หน้า แม่แบบตัวอย่าง AWS CloudFormation - ภูมิภาคสหรัฐอเมริกาตะวันออก (เวอร์จิเนีย) จะปรากฏขึ้น
  2. ค้นหาลิงค์ที่เรียกว่า Highly Available Web Server พร้อมอินสแตนซ์ฐานข้อมูล Multi-AZ Amazon RDS และใช้ S3 เพื่อเก็บเนื้อหาไฟล์ อเมซอนไม่ได้ใช้ชื่อสั้นและเร็วที่นี่
  3. ดาวน์โหลดไฟล์ Drupal_Multi_AZ.template จากเว็บไซต์ของ Amazon ไปยังเวิร์กสเตชันของคุณ
  4. เลือกชื่อสำหรับสำเนาของคุณ ฉันเรียกฉันว่า aws-cfn-support-template.json ไม่ชื่อของฉันไม่สั้นและเร็วเกินไป
  5. หากคุณใช้ที่เก็บรหัสเช่น Github หรือ Gitorious ให้ตรวจสอบในเวอร์ชันใหม่ของคุณ

ตอนนี้คุณมีสำเนาภายในเครื่องเพื่อแก้ไขและสำรองข้อมูลระยะไกล (ไฟล์ต้นฉบับบน AWS)

เปลี่ยนส่วน "ทรัพยากร" AWS CloudFormation เทมเพลต

นี่คือที่เราเริ่มตีรหัสด้วยค้อน ตรวจสอบการโพสต์ล่าสุดของฉันสำหรับความหมายของ ส่วน "ทรัพยากร" - ที่อธิบายโครงร่างของไฟล์เทมเพลต

การแก้ไขเหล่านี้จะเปลี่ยนการกำหนดค่าและแอบดูในลูกเล่นนักพัฒนา Drupal ไม่กี่คำสั่ง drush โมดูลและโปรไฟล์การติดตั้ง

คัดลอกรหัสมากเกินไปหรือไม่ ค้นหาเทมเพลตเต็มรูปแบบใน GitHub

เปลี่ยนการกำหนดค่าของ ElasticLoadBalancer

เครื่องถ่วงน้ำหนักแบบยืดหยุ่นไม่แน่นอนยืดหยุ่นเมื่อพูดถึงถูกและผิด พวกเขาจะต้องได้รับการตอบสนอง ตกลง ง่าย (HTTP 200) Drupal อาจให้คำตอบที่หลากหลายไม่เพียง แต่ ตกลง

ตรวจสอบไฟล์ธรรมดาเช่น README.txt แทนที่จะถาม Drupal

  1. แก้ไขสำเนาของไฟล์เทมเพลต ค้นหาบรรทัดเหล่านี้:

    "HealthCheck" : {

    "เป้าหมาย": "HTTP: 80 /",

    ไฟล์จะอยู่ครึ่งหนึ่งของไฟล์
  2. เปลี่ยนบรรทัด เป้าหมาย :

    "HealthCheck" : {

    "เป้าหมาย": "HTTP: 80 / README.txt",

อัปเดตรหัส Drupal และเพิ่มโมดูล

ส่วนทรัพยากรประกอบด้วยสคริปต์ทุบตีแบบฝังตัว นี่คือคำอธิบายในโพสต์ล่าสุดของฉันด้วย การแก้ไขเหล่านี้เปลี่ยนสคริปต์นั้น

เพิ่มโมดูลพิเศษบางอย่างสำหรับระบบตั๋วสนับสนุน ฉันต้องการคัดลอกไฟล์เหล่านี้ไปยังเซิร์ฟเวอร์ทุกเครื่อง ไฟล์โมดูลสิ้นสุดใน / var / www / html / sites / all / modules โมดูลไม่ไปในที่เก็บข้อมูล S3 (พื้นที่ S3 คือ / var / www / html / sites / default / ไฟล์ )

ส่วนนี้มีคำสั่งที่ใช้โดยผู้ดูแลระบบ Linux, ผู้ดูแลระบบ Drupal และผู้ดูแลระบบ AWS คุณรู้หรือไม่ว่าคำสั่ง rm คืออะไร? คุณเคยใช้ Drush ไหม? แล้วสัญญาณ cfn ล่ะ?

1. ค้นหาจุดสิ้นสุดของสคริปต์ทุบตี ดูเหมือนว่านี้:

 "rm /home/ec2-user/settings.php\n",  
 
 "# All is well so signal success\n",  
 "/opt/aws/bin/cfn-signal -e 0 -r \"Drupal setup complete\" '", { "Ref" : "WaitHandle" }, "'\n" 

คุณกำลังจะเพิ่มบรรทัดของรหัสที่บรรทัดว่างนั้นอยู่ด้านล่างคำสั่ง rm และเหนือ # comment

2. เพิ่มบรรทัดเหล่านี้เพื่ออัปเดตไฟล์แอปพลิเคชัน Cloudformation ติดตั้ง drupal และ drush เวอร์ชันเก่าเมื่อสร้างเครื่อง EC2 เครื่องเสมือน EC2 ใหม่ทุกเครื่องจะได้รับไฟล์ที่อัปเดตเหล่านี้

 "# Update the code on all machines. \n",  
 "cd ~ec2-user \n",  
 "~ec2-user/drush/drush self-update --choice=2 --yes \n",  
 "cd /var/www/html \n",  
 "~ec2-user/drush/drush pm-updatecode --yes \n",  

3. อัพเดทฐานข้อมูลเพื่อให้ตรงกับไฟล์ ฉันต้องการให้เครื่องหนึ่งเครื่องทำสิ่งนี้ดังนั้นรหัสจะตรวจสอบเครื่องแรกเท่านั้น หากเครื่องทั้งหมดลองในเวลาเดียวกันฐานข้อมูลอาจจะเสียหาย

 "# Update the database from the first machine only. \n",  
 "if  `hostname` = $first \n",  
 "then\n",  
 " ~ec2-user/drush/drush updatedb --yes \n",  
 "fi\n",  

4. เพิ่มไฟล์โมดูลที่ฉันต้องการสำหรับการทำงานของฉัน

 "# Add modules. Many more are automatically added to this list. \n",  
 "# Files are copied to all machines. \n",  
 "~ec2-user/drush/drush pm-download acl commerce content_access entity rules support --yes \n",  

5. เปิดใช้งานโมดูลโดยอัพเดทฐานข้อมูล

 "# Enable modules and rebuild the permissions table. The database holds this. \n",  
 "if  `hostname` = $first \n",  
 "then\n",  
 " ~ec2-user/drush/drush pm-enable commerce content_access support --yes \n",  
 " ~ec2-user/drush/drush php-eval 'node_access_rebuild();' \n",  
 "fi\n",  

6. ตรวจสอบให้แน่ใจว่า Drupal สามารถอ่านไฟล์ของตัวเองได้

 "# Fix ownership and permissions. \n",  
 "chown -R root:apache /var/www/html \n",  
 "chmod 640 /var/www/html/sites/default/settings.php \n",  

7. บันทึกงานของคุณ

สร้างคลาวด์ใหม่ของคุณ

รันขั้นตอนสำหรับการเรียกใช้ตัวอย่าง AWS ของคลัสเตอร์ Drupal อีกครั้ง โพสต์ก่อนหน้าของฉันครอบคลุมถึงขั้นตอนการปฏิบัติและค่าที่คุณต้องการ

สร้างเว็บไซต์ใหม่ของคุณ

    1. ค้นหาเทมเพลตใหม่ของคุณ
    2. ทำตามขั้นตอนในการเปิดตัวคลาวด์ แต่อย่าใช้เทมเพลตเริ่มต้นของ Amazon
    3. อัปโหลดเทมเพลตใหม่ของคุณโดยใช้ตัวเลือก อัปโหลดไฟล์เทมเพลต
    4. กรอกแบบฟอร์ม
    5. สร้างสแต็ค CloudFormation เมื่อฉันวิ่งสิ่งนี้มันใช้เวลา 20 นาทีจึงจะเสร็จสมบูรณ์
    6. รีเฟรชรายการ เหตุการณ์ เพื่อดูความคืบหน้า

      คลิกเพื่อดูภาพขยาย
      ตรวจสอบเว็บไซต์ใหม่ของคุณ
        1. เปิด URL ของเว็บไซต์สนับสนุนใหม่ของคุณ ฉันคือ http://supportti-elasticl-qbifcetbaa16-1886498031.eu-west-1.elb.amazonaws.com/admin/support หน้าเข้าสู่ระบบจะปรากฏขึ้น
        2. เข้าสู่ระบบโดยใช้ SiteAdmin และ SitePassword ใหม่ของคุณ หน้าสนับสนุนปรากฏขึ้น
          ทำความสะอาด.

            ทำลายกอง CloudFormation ใหม่ของคุณเมื่อคุณทำเสร็จแล้ว

              การทดสอบความเข้าใจ

              Crikey มันเหมือนกลับไปโรงเรียน

              Amazon VM ใหม่นั้นล้าสมัยอยู่เสมอ แพตช์และการอัปเกรดมีให้ใช้งานสำหรับแพ็คเกจบางส่วน สิ่งหนึ่งที่เทมเพลตนี้ไม่ได้ทำคืออัพเดตแพ็คเกจในแต่ละเครื่องเสมือน

              คุณจะใส่คำสั่ง yum update ไว้ ที่ไหน

              © Copyright 2020 | mobilegn.com