เว็บเซิร์ฟเวอร์บน CentOS 8 พร้อม php7, node.js และ redis

คำปรารภ

เป็นเวลา 2 วันแล้วนับตั้งแต่การเปิดตัวระบบปฏิบัติการ CentOS เวอร์ชันใหม่ซึ่งก็คือ CentOS 8 และจนถึงขณะนี้ยังมีบทความสองสามบทความบนอินเทอร์เน็ตเกี่ยวกับวิธีการทำงานต่างๆ ในนั้น ดังนั้นฉันจึงตัดสินใจเติมช่องว่างนี้ ยิ่งไปกว่านั้น ฉันจะบอกคุณไม่เพียงแต่เกี่ยวกับวิธีการติดตั้งโปรแกรมคู่นี้ แต่ยังเกี่ยวกับวิธีที่ฉันเห็นโดยทั่วไปในการติดตั้ง Linux ในสภาพแวดล้อมเสมือนในโลกสมัยใหม่สำหรับงานทั่วไป รวมถึงการแบ่งพาร์ติชันดิสก์และอื่น ๆ

แต่ในตอนแรกฉันต้องการพูดสั้น ๆ ว่าทำไมจึงคุ้มค่าที่จะเปลี่ยนมาใช้เวอร์ชันนี้จากเวอร์ชันก่อนหน้าทั้งหมดและมีเหตุผลสองประการสำหรับสิ่งนี้:

  1. php7! ใน CentOS เวอร์ชันก่อนหน้า มีการติดตั้ง “Orthodox” php5.4...

    เอาล่ะ หากให้พูดให้ละเอียดกว่านี้อีกหน่อย มีแพ็คเกจจำนวนมากกระโดดข้ามหลายเวอร์ชันพร้อมกัน ในที่สุดพวกเรา (ผู้ชื่นชอบ OS ที่มีลักษณะคล้าย Redhat) ได้เข้ามาแล้ว หากไม่ใช่ในอนาคต อย่างน้อยก็เข้าสู่ปัจจุบัน และผู้สนับสนุน Ubuntu จะไม่หัวเราะเยาะเราและชี้นิ้วมาที่เราอีกต่อไป เอาล่ะ... อย่างน้อยก็สักพักหนึ่ง ;)

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

สร้างเครื่องเสมือน

มีไฮเปอร์ไวเซอร์ที่แตกต่างกัน และฉันไม่มีเป้าหมายที่จะปรับแต่งผู้อ่านให้เหมาะกับไฮเปอร์ไวเซอร์ที่เฉพาะเจาะจง ฉันจะบอกคุณเกี่ยวกับหลักการทั่วไป

หน่วยความจำ

ก่อนอื่น... ในการติดตั้งระบบ CentOS โดยเริ่มจาก 7 แน่นอน และในความคิดของฉัน นี่เป็นกรณีใน 6 เช่นกัน (“แต่นี่ไม่แน่นอน”) คุณต้องมี ขั้นต่ำ แรม 2GB เลยแนะนำว่าให้ออกมากขนาดนั้นก่อน

แต่หากมีสิ่งใดหลังจากติดตั้งขนาดหน่วยความจำจะลดลงได้ ฉันตรวจสอบแล้วที่ระบบเปล่าขนาด 1 GB ทำงานได้ค่อนข้างดี

ดิสก์

สำหรับการติดตั้งปกติ คุณควรสร้างดิสก์เสมือนที่มีความจุ 20-30 GB เท่านี้ก็เพียงพอแล้วสำหรับระบบ และดิสก์ที่สองสำหรับข้อมูล สามารถเพิ่มได้ทั้งในขั้นตอนการสร้างเครื่องเสมือนและหลังจากนั้น ฉันมักจะเพิ่มมันในภายหลัง

หน่วยประมวลผล

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

ส่วนที่เหลือสามารถปล่อยให้เป็นค่าเริ่มต้นได้

การติดตั้งจริง

ดังนั้น... มาเริ่มตัวติดตั้งกันดีกว่า... โดยส่วนตัวแล้วฉันได้ติดตั้งบริการดังกล่าวในรูปแบบของเครื่องเสมือนมาเป็นเวลานานเท่านั้นดังนั้นฉันจะไม่อธิบายบันทึกการแจกจ่ายทุกประเภทบนแฟลชไดรฟ์ - ฉันแค่เมานต์ ISO เป็นซีดีในไฮเปอร์ไวเซอร์ที่ฉันชื่นชอบ ดาวน์โหลดและไปได้เลย

การติดตั้งขั้นพื้นฐานค่อนข้างเป็นเรื่องปกติ ฉันจะเน้นเพียงไม่กี่จุดเท่านั้น

การเลือกแหล่งที่มา

นับตั้งแต่เปิดตัวเวอร์ชันที่แปด กระจกจากยานเดกซ์ก็ใช้งานมาหลายวันแล้ว นั่นคือมันเพิ่มขึ้นเป็นระยะ ๆ และจากนั้นก็เริ่มแสดงข้อผิดพลาดอีกครั้ง ฉันแน่ใจว่าเป็นเพราะบริการมีภาระมากเกินไป ดังนั้นเพื่อระบุแหล่งที่มาโดยส่วนตัวแล้วฉันต้องไปแทนที่จะป้อนที่อยู่ปกติ ที่นี่เลือกมิเรอร์ที่ฉันชอบแล้วป้อนที่อยู่ในหน้าต่างตัวติดตั้งด้วยตนเอง สิ่งสำคัญคือต้องจำไว้ว่าคุณต้องระบุเส้นทางไปยังโฟลเดอร์ที่ไดเร็กทอรีนั้นอยู่ ทำซ้ำ. ตัวอย่างเช่น mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

การแบ่งพาร์ติชันดิสก์

คำถามนี้ค่อนข้างจะเคร่งศาสนาในความคิดของฉัน ผู้ดูแลระบบแต่ละคนมีจุดยืนของตนเองในเรื่องนี้ แต่ฉันจะยังคงแบ่งปันมุมมองของฉันเกี่ยวกับปัญหานี้

ใช่ โดยหลักการแล้ว คุณสามารถจัดสรรพื้นที่ทั้งหมดให้กับรูทได้ และมันจะใช้งานได้ ส่วนใหญ่มักจะค่อนข้างดีด้วยซ้ำ ทำไมต้องล้อมรั้วสวนด้วยส่วนต่างๆ? — ในความคิดของฉัน มีสองเหตุผลหลักสำหรับสิ่งนี้: โควต้าและการพกพา

ตัวอย่างเช่น หากมีบางอย่างผิดพลาดและเกิดข้อผิดพลาดในพาร์ติชันข้อมูลหลัก คุณต้องการที่จะยังคงสามารถบูตระบบและดำเนินมาตรการช่วยชีวิตได้ ดังนั้นฉันจึงจัดสรรพาร์ติชั่นแยกต่างหากสำหรับ /boot เป็นการส่วนตัว มีเคอร์เนลและบูตโหลดเดอร์ โดยปกติแล้ว 500 เมกะไบต์ก็เพียงพอแล้ว แต่ในบางกรณีซึ่งเกิดขึ้นไม่บ่อยนักอาจจำเป็นต้องใช้มากกว่านี้ และเนื่องจากเราคุ้นเคยกับการวัดพื้นที่เป็นเทราไบต์แล้ว ฉันจึงจัดสรร 2GB สำหรับส่วนนี้ และสิ่งสำคัญที่นี่คือมันไม่สามารถทำได้ lvm

ถัดมาคือรากของระบบ สำหรับการติดตั้งแบบปกติ ฉันไม่เคยต้องการพื้นที่เกิน 4 GB ต่อระบบ แต่ในระหว่างเหตุการณ์ตามกำหนดการ ฉันมักจะใช้ไดเร็กทอรี /tmp เพื่อแตกไฟล์การแจกแจง และฉันไม่เห็นจุดใดในการทุ่มเทให้กับพาร์ติชันแยกต่างหาก - ในระบบสมัยใหม่ จะถูกทำความสะอาดโดยอัตโนมัติ ดังนั้นจึงไม่มีการเติม ดังนั้นฉันจึงจัดสรร 8GB สำหรับรูท

สลับ... โดยทั่วไปแล้ว มีประโยชน์เพียงเล็กน้อยจากมัน หากคุณเริ่มใช้ swap บนเซิร์ฟเวอร์ของคุณ ในปัจจุบันในโลกแห่งความเป็นจริง นั่นหมายความว่าเซิร์ฟเวอร์จำเป็นต้องเพิ่ม RAM มากขึ้นเท่านั้น มิฉะนั้นรับประกันปัญหาเกี่ยวกับประสิทธิภาพ (หรือหน่วยความจำ "รั่ว" ของโปรแกรมบางโปรแกรม) ดังนั้นส่วนนี้จึงจำเป็นสำหรับวัตถุประสงค์ในการวินิจฉัยเท่านั้น ดังนั้น 2 GB จึงเป็นตัวเลขที่ดีเยี่ยม ใช่ ไม่ว่าเซิร์ฟเวอร์จะมีหน่วยความจำเท่าใด ใช่ ฉันอ่านบทความทั้งหมดที่เขียนเกี่ยวกับอัตราส่วนของปริมาณหน่วยความจำต่อปริมาณการสลับ... IMHO พวกมันล้าสมัยแล้ว ตลอดระยะเวลา 10 ปีของการฝึกฝน ฉันไม่เคยต้องการสิ่งนี้เลย 15 ปีที่แล้วฉันใช้มันใช่

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

ต่อไป /var. ในความคิดของฉันมันควรจะเน้นอย่างแน่นอน ขั้นแรก คุณสามารถจำกัดตัวเองไว้ที่ 4 GB และดูว่ามันจะเป็นอย่างไร และใช่ โดยคำว่า "เป็นยังไงบ้าง" ฉันหมายถึงอย่างนั้น

  1. ประการแรก คุณสามารถเมานต์ดิสก์อื่นในไดเร็กทอรีย่อย /var ได้ตลอดเวลา (ซึ่งฉันจะแสดงพร้อมตัวอย่างในภายหลัง)
  2. ประการที่สอง เรามี lvm - คุณสามารถเพิ่มได้ตลอดเวลา และโดยปกติคุณจะต้องเพิ่มมันเมื่อมีบันทึกมากเกินไปเริ่มหลั่งไหลเข้ามา แต่ฉันไม่เคยคาดเดาตัวเลขนี้ได้ล่วงหน้าเลย เลยเริ่มที่ 2 GB แล้วค่อยดู

พื้นที่ที่ไม่ได้ถูกจัดสรรจะยังคงว่างในกลุ่มวอลุ่มและสามารถใช้ได้ในภายหลังเสมอ

LVM

ทั้งหมด มันสมเหตุสมผลแล้วที่จะสร้างพาร์ติชั่นอื่นที่ไม่ใช่ /boot ใน LVM ใช่ รวมถึงการแลกเปลี่ยนด้วย ใช่ ตามคำแนะนำทั้งหมด การสลับควรอยู่ที่จุดเริ่มต้นของดิสก์ แต่ในกรณีของ LVM ไม่สามารถระบุตำแหน่งของตำแหน่งได้ตามหลักการ แต่อย่างที่ฉันเขียนไว้ข้างต้น ระบบของคุณ ไม่ควร ใช้สลับเลย ดังนั้นมันไม่สำคัญว่าเขาอยู่ที่ไหน เราไม่ได้อยู่ในปี '95 จริงๆ แล้ว!

นอกจากนี้ ใน LVM ยังมีเอนทิตีพื้นฐานหลายประการที่คุณต้องสามารถอยู่ด้วยได้:

  • ปริมาณทางกายภาพ
  • กลุ่มวอลุ่ม
  • วอลุ่มลอจิคัล

ฟิสิคัลวอลุ่มจะถูกรวมเป็นกลุ่ม และแต่ละฟิสิคัลวอลุ่มสามารถอยู่ในกลุ่มเดียวเท่านั้น และกลุ่มสามารถอยู่ในหลายฟิสิคัลวอลุ่มพร้อมกันได้
และโลจิคัลวอลุ่มแต่ละกลุ่มอยู่ในกลุ่มเดียว

แต่... ให้ตายเถอะ มันเป็นศตวรรษที่ 21 อีกครั้ง และเซิร์ฟเวอร์ก็เสมือน มันไม่สมเหตุสมผลเลยที่จะนำกลไกแบบเดียวกับที่ใช้กับกลไกทางกายภาพมาใช้กับพวกเขา และสำหรับข้อมูลเสมือน สิ่งสำคัญคือต้องมีข้อมูลแยกจากระบบ! สิ่งนี้สำคัญมาก โดยเฉพาะอย่างยิ่งสำหรับความสามารถในการสลับข้อมูลไปยังเครื่องเสมือนอื่นอย่างรวดเร็ว (เช่น เมื่อเปลี่ยนไปใช้ระบบปฏิบัติการใหม่) และโดยทั่วไปสำหรับสารพัดที่มีประโยชน์ทุกประเภท (แยกการสำรองข้อมูลตามพาร์ติชันโดยใช้เครื่องมือไฮเปอร์ไวเซอร์ เป็นต้น) . ดังนั้น จึงมีการใช้กลุ่มวอลุ่มหนึ่งกลุ่มสำหรับระบบ และจำเป็นต้องใช้อีกกลุ่มหนึ่งสำหรับข้อมูล! การแบ่งตรรกะนี้ช่วยได้มากในชีวิต!

หากคุณสร้างฮาร์ดดิสก์เสมือนเพียงตัวเดียวเมื่อสร้างเครื่องเสมือน การกำหนดค่าจะสิ้นสุดลงที่นี่ และถ้ามีสองก็อย่าทำเครื่องหมายอันที่สองเลย

มาเริ่มการติดตั้งกัน

หลังการติดตั้ง

ดังนั้นในที่สุดระบบที่ติดตั้งใหม่ก็สามารถบู๊ตได้ในที่สุด สิ่งแรกที่คุณต้องตรวจสอบคืออินเทอร์เน็ต

ping ya.ru

มีคำตอบไหม? - เยี่ยม กด Ctrl-C
ถ้าไม่ก็ไปตั้งเครือข่าย ถ้าขาดสิ่งนี้ไปก็ไม่มีชีวิต แต่นั่นไม่ใช่สิ่งที่บทความของฉันพูดถึง

ตอนนี้ถ้าเรายังไม่อยู่ใต้รูท ให้ไปอยู่ใต้รูท เพราะกำลังพิมพ์ นี้ จำนวนคำสั่งด้วย sudo ทำให้ฉันพังเป็นการส่วนตัว (และขอให้ผู้ดูแลระบบที่หวาดระแวงยกโทษให้ฉัน):

sudo -i

ตอนนี้สิ่งแรกที่เราทำคือพิมพ์

dnf -y update

และหากคุณอ่านบทความนี้ในปี 2019 มีแนวโน้มว่าจะไม่มีอะไรเกิดขึ้น แต่ก็คุ้มค่าที่จะลองดู

ตอนนี้เรามากำหนดค่าดิสก์ที่เหลือกันดีกว่า

สมมติว่าพาร์ติชันที่มีระบบคือ xvda จากนั้นดิสก์ข้อมูลจะเป็น xvdb ตกลง.

คำแนะนำส่วนใหญ่จะเริ่มต้นด้วย “เรียกใช้ fdisk และสร้างพาร์ติชัน...”

ดังนั้นนี่คือ อย่างไม่ถูกต้อง!

ฉันจะพูดอีกครั้งเพราะมันสำคัญมาก! ในกรณีนี้การทำงานกับ LVM ซึ่งกินพื้นที่ดิสก์เสมือนทั้งหมดการสร้างพาร์ติชันบนนั้นเป็นอันตราย! ทุกคำในวลีนี้มีความสำคัญ ถ้าเราทำงานโดยไม่มี LVM เราก็ต้องทำ หากเรามีระบบและข้อมูลอยู่บนดิสก์ เราก็จำเป็นต้องมีมัน หากเราต้องเว้นว่างครึ่งหนึ่งของดิสก์ด้วยเหตุผลบางประการ เราก็ควรทำเช่นกัน แต่โดยปกติแล้วสมมติฐานทั้งหมดนี้เป็นเพียงทฤษฎีล้วนๆ เพราะหากเราตัดสินใจที่จะเพิ่มพื้นที่ให้กับพาร์ติชันที่มีอยู่ วิธีที่ง่ายที่สุดในการดำเนินการคือการกำหนดค่านี้ และความง่ายในการดูแลระบบมีมากกว่าสิ่งอื่นๆ มากมายที่เราตั้งใจมุ่งสู่การกำหนดค่านี้

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

ดังนั้นเราจึงสร้างฟิสิคัลวอลุ่ม จากนั้นจึงสร้างกลุ่มวอลุ่มที่รวมไว้ และจากนั้นจึงสร้างพาร์ติชันสำหรับเซิร์ฟเวอร์ของเรา:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

ที่นี่แทนที่จะเป็นตัวพิมพ์ใหญ่ "L" (และขนาดเป็น GB) คุณสามารถระบุอันที่เล็กจากนั้นแทนที่จะเป็นขนาดสัมบูรณ์ให้ระบุขนาดที่สัมพันธ์กันเช่นเพื่อใช้ครึ่งหนึ่งของพื้นที่ว่างในปัจจุบันใน กลุ่มวอลุ่ม คุณต้องระบุ “-l +50%FREE”

และคำสั่งสุดท้ายจะฟอร์แมตพาร์ติชันในระบบไฟล์ ext4 (ซึ่งจากประสบการณ์ของฉันแสดงให้เห็นถึงความเสถียรที่ยิ่งใหญ่ที่สุดในกรณีที่ทุกอย่างพังดังนั้นฉันจึงชอบมัน)

ตอนนี้เราติดตั้งพาร์ติชันในตำแหน่งที่ถูกต้อง เมื่อต้องการทำเช่นนี้ ให้เพิ่มบรรทัดที่ถูกต้องใน /etc/fstab:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

และเราโทรออก

mount /var/www

หากเกิดข้อผิดพลาดให้ส่งเสียงเตือน! เพราะนั่นหมายความว่าเรามีข้อผิดพลาดใน /etc/fstab และการรีบูตครั้งถัดไปเราจะมีปัญหาใหญ่มาก ระบบอาจไม่สามารถบู๊ตได้เลย ซึ่งมักจะเป็นเรื่องที่น่าเศร้ามากสำหรับบริการคลาวด์ ดังนั้นจึงจำเป็นต้องแก้ไขบรรทัดสุดท้ายที่เพิ่มอย่างเร่งด่วนหรือลบออกทั้งหมด! นั่นคือเหตุผลที่เราไม่ได้เขียนคำสั่ง mount ด้วยตนเอง - ถ้าอย่างนั้นเราจะไม่มีโอกาสที่ดีเยี่ยมในการตรวจสอบการกำหนดค่าทันที

ตอนนี้เราติดตั้งทุกสิ่งที่เราต้องการและเปิดพอร์ตสำหรับเว็บ:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

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

ตอนนี้เราเพิ่มพารามิเตอร์ลงในไฟล์กำหนดค่า (เราสร้างใหม่ อุดมการณ์สมัยใหม่ของ CentOS เป็นเช่นนี้)

echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf

รีบูตเซิร์ฟเวอร์
ในความคิดเห็นฉันถูกดุว่าแนะนำให้ปิด SeLinux ดังนั้นฉันจะแก้ไขตัวเองและเขียนเกี่ยวกับความจริงที่ว่าหลังจากนี้คุณต้องจำไว้ว่าต้องกำหนดค่า SeLinux
กำไรจริง! 🙂

ที่มา: will.com

เพิ่มความคิดเห็น