การติดตั้งและกำหนดค่าเดเบียนหลอดไฟ การติดตั้ง apache และ php บน Debian

ส่วนแรกของเรื่องนี้นำเสนอหนึ่งใน ตัวเลือกที่เป็นไปได้การตั้งค่าอินเทอร์เฟซกราฟิก Debian เพื่อความสะดวกและคุ้นเคย (มุมมองส่วนตัวของผู้เขียนโดยเฉพาะ) ใช้โดยบุคคลที่มาที่ Linux จาก Windows และถ้าจะตั้งค่าเครื่องเสมือนด้วย Debian ฉันใช้เฉพาะระบบโฮสต์ฉันก็ทำงานเฉพาะในเครื่องเสมือนนี้เท่านั้น ค้นหาข้อมูลบนอินเทอร์เน็ต จดบันทึกใน Notepadqq หรือ gedit ฟังเพลงผ่าน Audacious เปิดไฟล์ผ่าน LibreOffice และอื่นๆ ด้วยวิธีนี้ คุณจะคุ้นเคยกับมันและรู้สึกลึกซึ้งและซาบซึ้งมากขึ้นในการทำงานกับระบบปฏิบัติการและสภาพแวดล้อม ซึ่งในแพ็คเกจ Debian มาตรฐานนั้นค่อนข้างสมบูรณ์และใช้งานได้ดี

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

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

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

ตามหลักการแล้ว ระบบที่ได้รับการกำหนดค่าครั้งเดียวควรจะทำงานโดยไม่มีการแทรกแซงของเราเป็นเวลานานมาก เซิร์ฟเวอร์ “สะอาด” ของฉันได้รับการตั้งค่าภายในสองวันและทำงานโดยไม่มีการแทรกแซงมาเกือบหนึ่งปี ซึ่งหมายความว่าอินเทอร์เฟซแบบกราฟิกถูกใช้เป็นเวลา 0.05% ของเวลาที่เซิร์ฟเวอร์ทำงานอยู่ (คอมพิวเตอร์ใช้งานได้เพียงครึ่งวัน) และในเวลาเดียวกันก็ครอบครองทรัพยากร: แรม, พื้นที่ดิสก์, เวลาซีพียู จะดีกว่าถ้าใช้ทรัพยากรเหล่านี้ทั้งหมดเพื่อให้แน่ใจว่าเซิร์ฟเวอร์ทำงานได้: ตัวอย่างเช่น เพิ่ม memory_limit สำหรับ PHP หรือเพิ่มข้อมูลผู้ใช้ลงในฮาร์ดไดรฟ์ นอกจากนี้ ในกรณีที่เกิดปัญหาและทำงานผิดปกติเมื่อทำงานกับเซิร์ฟเวอร์ระยะไกลจริง การใช้การเข้าถึง SSH มักจะทำได้ง่ายกว่ามาก ในบริบทนี้ การมีอยู่ของอินเทอร์เฟซแบบกราฟิกเป็นสิ่งที่ไม่พึงประสงค์ และนั่นคือสาเหตุที่เซิร์ฟเวอร์ตัวที่สองในเครือข่ายของฉันเป็นเครื่องเสมือนที่ไม่มีสภาพแวดล้อมแบบกราฟิกอยู่แล้ว ซึ่งติดตั้งเฉพาะซอฟต์แวร์กราฟิกเท่านั้น ผู้บัญชาการเที่ยงคืนซึ่งฉันใช้นำทางระบบไฟล์และแก้ไขไฟล์การตั้งค่าผ่านโปรแกรมแก้ไข mcedit ดังนั้นด้านล่างจึงเป็น คำแนะนำสากล: คำสั่งต่างๆ ได้รับการเน้นไปที่การใช้บรรทัดคำสั่ง แต่ถือว่าครั้งแรกที่ผู้ใช้ตั้งค่าเครื่องด้วยสภาพแวดล้อมแบบกราฟิก ซึ่งเป็นเหตุผลว่าทำไมจึงใช้เบราว์เซอร์ เช็คท้องถิ่นการเข้าถึงไซต์ที่สร้างขึ้นและคุณสมบัติบางอย่างของการตั้งค่าโปรแกรมอีเมล

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

บันทึก
ที่ อ่านต่อในโครงสร้างเช่น http:// 127.0.0.1 (https:// 127.0.0.1) จะต้องลบช่องว่างหลัง http:// (https://) เมื่อเข้าสู่แถบที่อยู่ของเบราว์เซอร์ มีการแทรกช่องว่างเมื่อเผยแพร่บทความนี้เพื่อป้องกันไม่ให้กลไกเว็บไซต์แปลงข้อความเป็นลิงก์โดยอัตโนมัติ

การติดตั้งเว็บเซิร์ฟเวอร์ Apache2:

# apt-get ติดตั้ง apache2 apache2-doc

และนั่นคือทั้งหมด ประมาณยี่สิบเมกะไบต์และเว็บเซิร์ฟเวอร์ได้รับการติดตั้งแล้ว ไม่จำเป็นต้องรีบูตหรือตั้งค่าใดๆ - เซิร์ฟเวอร์สามารถเปิดหน้า HTML ได้แล้ว อย่างไรก็ตาม เว็บไซต์สมัยใหม่บนอินเทอร์เน็ตไม่ได้เป็นเพียงชุดของไฟล์คงที่ สไตล์ แบบอักษร และสิ่งอื่นที่คล้ายคลึงกันเช่นเมื่อยี่สิบปีก่อนเท่านั้น เว็บไซต์สมัยใหม่ประกอบด้วยสคริปต์ที่เขียนด้วย PHP และข้อมูลไดนามิก (เช่น เนื้อหาข้อความ ความคิดเห็น โปรไฟล์ผู้ใช้) ไม่ได้เขียนในไฟล์ถัดจากไฟล์ PHP แต่เขียนในฐานข้อมูล SQL พิเศษ สำหรับเซิร์ฟเวอร์ที่มีคุณสมบัติครบถ้วน จำเป็นต้องให้การสนับสนุนเทคโนโลยีเหล่านี้ นอกจากนี้ยังไม่ใช่เรื่องยาก:

# apt-get ติดตั้ง mysql-server mysql-client phpmyadmin
# apt-get ติดตั้ง php5 php5-mysql libapache2-mod-php5

ในระหว่างขั้นตอนการติดตั้ง MySQL คุณจะได้รับแจ้งให้ตั้งรหัสผ่าน superuser ของ mysql และจะต้องเลือกเซิร์ฟเวอร์ apache2 เพื่อกำหนดค่าการทำงานกับ mysql โดยอัตโนมัติ เมื่อติดตั้งแพ็คเกจ phpmyadmin ฉันเห็นด้วย ปรับอัตโนมัติแพ็คเกจและป้อนรหัสผ่าน mysql superuser ทุกที่ การติดตั้ง PHP เกิดขึ้นโดยไม่มีการแจ้งใดๆ

ฉันไม่ได้ใช้ PHP7 ที่เร็วกว่าหรือ MariaDB ฟรีเป็นทางเลือกทดแทนโอเพ่นซอร์สสำหรับ SQL และตัดสินใจสร้างเซิร์ฟเวอร์ของฉันบน LAMP “canonical” LAMP = Linux + Apache + MySQL + PHP โดยใช้โซลูชันเก่าและผ่านการพิสูจน์แล้ว ในกรณีที่เกิดปัญหา ทำให้ฉันสามารถหาข้อมูลทางอินเทอร์เน็ตได้อย่างรวดเร็วและง่ายดาย

สามทีม (ซึ่งสามารถรวมกันเป็นทีมเดียวได้) และเรามีเซิร์ฟเวอร์ที่ครบครันและทันสมัยติดตั้งอยู่ในเครื่อง มันค่อนข้างง่าย!

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

การตั้งค่าเว็บเซิร์ฟเวอร์ Apache2

ขั้นแรก คุณต้องแน่ใจว่าเว็บเซิร์ฟเวอร์กำลังทำงานอยู่ ในการดำเนินการนี้ คุณต้องเปิดเบราว์เซอร์แล้วพิมพ์ที่อยู่ http:// 127.0.0.1 (localhost) หน้าเว็บควรเปิดขึ้นพร้อมกับข้อความที่จารึกไว้อย่างมั่นใจ: “หน้าเริ่มต้นของ Apache2 Debian ใช้งานได้จริง!" เซิร์ฟเวอร์ใช้งานได้จริง หากคุณมีชุดไฟล์ไซต์ตั้งแต่ปี 2000 คุณสามารถวางไว้ในไดเร็กทอรี /var/www/html และมันอาจจะเปิดบนเซิร์ฟเวอร์ของเรา

การตั้งค่าเว็บเซิร์ฟเวอร์พื้นฐานทั้งหมดจะถูกเก็บไว้ใน /etc/apache2 หากคุณเปิดไดเร็กทอรีนี้ คุณจะเห็นไฟล์คอนฟิกูเรชันหลัก apache2.conf และไดเร็กทอรี conf-available, mod-available, sites-available ไดเร็กทอรีเหล่านี้มีไฟล์ที่กำหนดค่าไว้ล่วงหน้าพร้อมการตั้งค่า (เรียกว่าส่วนย่อย) ซึ่งคุณสามารถใช้เป็นค่าเริ่มต้นกับการแก้ไขของคุณเอง หรือใช้เป็นเทมเพลตสำหรับสร้างการกำหนดค่าของคุณเองได้ ตัวอย่างเช่น ในไดเร็กทอรีที่มีอยู่ของไซต์ จะมีไฟล์การกำหนดค่าโฮสต์เริ่มต้น 000-default.conf หากคุณเปิดและศึกษาพบว่าไฟล์นี้ระบุเส้นทางที่เว็บไซต์ของเราเปิดที่ http:// 127.0.0.1: “DocumentRoot /var/www/html” นอกจากนี้เส้น “ "หมายความว่าหากฉันปล่อยเครื่องของฉันบนเครือข่ายท้องถิ่นและเข้าถึงเครื่องบนพอร์ต 80 (พอร์ตสำหรับ HTTP) ไซต์ที่อยู่ตามเส้นทาง /var/www/html จะเปิดให้ฉัน คุณจะมั่นใจเรื่องนี้ได้อย่างไร?

ก่อนอื่นคุณต้องค้นหาที่อยู่ IP ที่กำหนดให้กับเครื่องเสมือนหลังจากบูตเครื่อง เพื่อดูการกำหนดค่า อะแดปเตอร์เครือข่ายมาทำกัน:

#ifconfig

ในข้อมูลที่ส่งออกไปยังคอนโซล ง่ายต่อการตรวจสอบว่ามีการตั้งค่าที่อยู่ต่อไปนี้สำหรับอะแด็ปเตอร์ eth0:

เพิ่ม Inet:192.168.233.138

ตอนนี้บนเครื่องโฮสต์ฉันเปิดที่อยู่ http:// 192.168.233.138 ในเบราว์เซอร์และคาดว่าจะเปิดหน้าที่คุ้นเคย แต่...เปิดไม่ได้ หลังจากนั้นไม่นาน เบราว์เซอร์ของฉันก็แจ้งว่า: “การเชื่อมต่อหมดเวลา” และเขาเขียนถูกต้อง ท้ายที่สุดในส่วนแรกฉันเปิดไฟร์วอลล์ แต่ไม่ได้เปิดพอร์ต 80! มาแก้ไขปัญหานี้กัน:

#ufw อนุญาต 80

เราลองอีกครั้งเพื่อเปิดที่อยู่ http:// 192.168.233.138 และตรวจสอบให้แน่ใจว่าหน้าที่คาดไว้เปิดขึ้น โฮสต์เสมือนในเครื่องเสมือนถูกเปิดจากภายนอกการจำลองเสมือนทั้งหมดนี้ เราได้ดำเนินการขั้นตอนเล็กๆ ในการสร้างอินเทอร์เน็ตเสมือนขนาดเล็กของเราเอง

นอกจากไดเร็กทอรี -available แล้ว ยังมีไดเร็กทอรี -enabled ซึ่งประกอบด้วยสิ่งที่ "เปิดใช้งาน" อยู่ในปัจจุบัน หากคุณตรวจสอบดู คุณจะเห็นว่าไดเร็กทอรีเหล่านี้มีลิงก์ไปยังไฟล์ที่อยู่ในไดเร็กทอรี -available ขณะนี้มีเพียงลิงก์เดียวในไดเร็กทอรีที่เปิดใช้งานไซต์ - ไปยังไฟล์ /etc/apache2/sites-available/000-default.conf สะดวกมาก - ด้วยทางลัดที่เราสามารถควบคุมการเปิดหรือปิดการใช้งานโฮสต์โดยไม่ต้องแก้ไขไฟล์การกำหนดค่า นอกจากนี้ แหล่งที่มาของการกำหนดค่าคือไฟล์เดียว โดยไม่คำนึงว่าการกำหนดค่านี้จะเปิดใช้งานอยู่หรือไม่ และสิ่งนี้จะป้องกันข้อผิดพลาดเมื่อบางสิ่งได้รับการแก้ไขในไฟล์หนึ่ง แต่ลืมไปในอีกไฟล์หนึ่ง หากต้องการปิดใช้งานโฮสต์ของเรา คุณจะต้องลบทางลัดที่จำเป็น และหากต้องการเปิดใช้งาน คุณจำเป็นต้องสร้างทางลัดขึ้นมา เพื่อไม่ให้ลบหรือสร้างทางลัดด้วยตนเอง การใช้ยูทิลิตี้พิเศษจะง่ายกว่าและเชื่อถือได้มากกว่า

ปิดการใช้งานโฮสต์เสมือน:

# a2dissite 000-ค่าเริ่มต้น

เปิดใช้งานโฮสต์เสมือน:

# a2enssite 000-ค่าเริ่มต้น

หลังจากการเปลี่ยนแปลงแต่ละครั้ง คุณจะต้องโหลดการกำหนดค่าโฮสต์ใหม่หรือรีสตาร์ทเซิร์ฟเวอร์:

# บริการ apache2 โหลดซ้ำ

# บริการ apache2 รีสตาร์ท

ตอนนี้เรามีความเข้าใจพื้นฐานเกี่ยวกับวิธีการกำหนดค่าโฮสต์ปกติใน apache และต่อไป ฉันจะแสดงตัวอย่างวิธีที่ฉันกำหนดค่าเซิร์ฟเวอร์ให้ทำงานโดยใช้โปรโตคอล HTTP และ HTTPS

เราต้องเริ่มต้นด้วยความจริงที่ว่าเมื่อคุณปิดการใช้งานโฮสต์เสมือนเริ่มต้น 000 จะไม่มีการปิดระบบเช่นนี้ นั่นคือไซต์เปิดจากทั้งภายในและภายนอกเครื่องเสมือน และจะเปิดขึ้นโดยไม่คำนึงว่าการกำหนดค่าจะอยู่ในโฟลเดอร์ที่เปิดใช้งานไซต์หรือไม่ เป็นเรื่องที่ไม่คาดคิดและฉันใช้เวลานานพอสมควรในการพยายามเข้าใจว่าฉันทำหรือเข้าใจทุกอย่างถูกต้องหรือไม่ ฉันยังไม่เข้าใจสิ่งนี้ทั้งหมด เห็นได้ชัดว่านี่เป็นเพราะความจริงที่ว่าพาธ /var/www/html ถูกตั้งค่าทั่วโลกเป็นไดเร็กทอรีเริ่มต้นสำหรับ DocumentRoot เนื่องจากฉันไม่ต้องการให้รวมและเข้าถึงสิ่งที่ไม่จำเป็น ฉันจึงตัดสินใจลบไดเร็กทอรี html ออก และปฏิเสธการเข้าถึง /var/www ที่ซ้อนกันทั้งหมดตามค่าเริ่มต้น

เพื่อกำหนดค่าโฮสต์เสมือนเริ่มต้น ฉันได้แก้ไขไฟล์การกำหนดค่า:

เนื้อหาของไฟล์การกำหนดค่ามีดังนี้:

ชื่อเซิร์ฟเวอร์ localhost ServerAdmin ผู้ใช้ @ localhost DocumentRoot /var/www ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log รวมกัน
ด้วยการกำหนดค่านี้ ฉันรีเซ็ตไดเร็กทอรีเริ่มต้นเป็น /var/www อนุญาตให้เซิร์ฟเวอร์ติดตามลิงก์สัญลักษณ์ในไดเร็กทอรีนี้ อนุญาตให้เซิร์ฟเวอร์ดำเนินการคำสั่งทั้งหมดที่ประกาศในไฟล์ .htaccess ที่พบ และปฏิเสธการเข้าถึงไดเร็กทอรีนี้ ตรรกะของการดำเนินการเหล่านี้คือเพื่อให้ฉันสามารถควบคุมการเข้าถึงไดเร็กทอรีนี้โดยไม่ต้องเข้าถึงการตั้งค่าเว็บเซิร์ฟเวอร์เลยและไม่ต้องรีบูตเครื่อง ตอนนี้เราต้องทดสอบวิธีแก้ปัญหานี้
โอนไฟล์:

# mv /var/www/html/index.html /var/www/index.html

และลบไดเร็กทอรี:

#rm /var/www/html

รีสตาร์ทเซิร์ฟเวอร์เพื่อให้การตั้งค่าโฮสต์เสมือนเริ่มต้นใหม่มีผล:

# บริการ apache2 รีสตาร์ท

สร้างไฟล์:

# นาโน /var/www/.htaccess

โดยที่เราเขียนหนึ่งบรรทัด (โดยไม่มีเครื่องหมายคำพูด): “Require all allowance”

มาสรุปกัน ขณะนี้ไม่มีเส้นทาง /var/www/html แต่โดยค่าเริ่มต้น โฮสต์จะได้รับการกำหนดค่าใหม่เป็นเส้นทาง /var/www ซึ่งเป็นที่ตั้งของไฟล์ index.html และโดยค่าเริ่มต้น ในระดับเว็บเซิร์ฟเวอร์ สามารถเข้าถึงไดเร็กทอรีนี้ ถูกปฏิเสธ แต่เนื้อหาได้รับอนุญาตในเครื่องด้วยไฟล์ .htaccess ที่อยู่ในนั้น

เราเปิด http:// 127.0.0.1 ในเบราว์เซอร์และดูหน้าที่คุ้นเคยอยู่แล้ว “หน้าเริ่มต้น Apache2 Debian มันใช้งานได้ ตอนนี้เรามาตรวจสอบการทำงานของการควบคุมการเข้าถึง "ท้องถิ่น":
ลบไฟล์ .htaccess:

#rm /var/www/.htaccess

และอัปเดตในเบราว์เซอร์ เปิดหน้า- ควรเปิดหน้าที่มีการแจ้งเตือนเกี่ยวกับการจำกัดการเข้าถึง (ต้องห้าม) ใช่ ทุกอย่างได้ผล หมายความว่าทุกอย่างถูกต้องแล้ว

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

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

ความสนใจ! คำแนะนำด้านล่างถือว่าเซิร์ฟเวอร์ได้รับการติดตั้งบนเครื่องที่ "ไม่มีชื่อ" หากมี IP จริงหรือ ชื่อโดเมนจากนั้นจะต้องระบุไว้ในสามแห่ง: ; ; - ในโครงสร้างที่เกี่ยวข้อง ให้แทนที่ IP/โดเมน ด้วยที่อยู่ IP หรือชื่อโดเมน ในข้อความด้านล่าง มีการใช้ localhost แทน IP/Domain

มาสร้างใบรับรอง SSL กันเถอะ:

# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

คำสั่งนี้จะสร้างใบรับรองที่ลงนามด้วยตนเองของมาตรฐาน X.509 ทันทีเป็นเวลา 10 ปี โดยข้ามตัวเลือกในการปกป้องใบรับรองด้วยข้อความรหัสผ่าน - นี่เป็นสิ่งจำเป็นเพื่อที่ว่าเมื่อเซิร์ฟเวอร์ Apache เริ่มทำงาน จะสามารถอ่านไฟล์ได้โดยที่ผู้ใช้ไม่ต้องดำเนินการใด ๆ เนื่องจากได้ตั้งรหัสผ่านแล้ว คุณจะต้องป้อนรหัสผ่านดังกล่าวหลังจากการบูตหรือรีบูตเซิร์ฟเวอร์แต่ละครั้ง นอกจากใบรับรองแล้ว คีย์ RSA 2048 บิตใหม่จะถูกสร้างขึ้นซึ่งจะใช้ในการลงนามใบรับรอง ตัวเลือก –keyout และ –out ระบุเส้นทางที่ OpenSSL ควรสร้างคีย์และใบรับรอง

ในระหว่างขั้นตอนการสร้างใบรับรอง จะมีการถามคำถาม ซึ่งฉันได้ให้ข้อมูลต่อไปนี้:

ชื่อประเทศ = เมกะวัตต์
ชื่อรัฐหรือจังหวัด = ระบบดวงอาทิตย์
ชื่อถิ่น = จันทรคติ
ชื่อองค์กร = Hellium Inc.
ชื่อหน่วยองค์กร = 2
ชื่อสามัญ = localhost
ที่อยู่อีเมล = user@localhost

ถัดไป คุณต้องสร้างคีย์ Diffie-Hellman เพื่อรองรับ PFS:

# openssl dhparam - ออก /etc/ssl/certs/dhparam.pem 2048

จุดและเครื่องหมายบวกจะปรากฏในเทอร์มินัล และหลังจากสิ้นสุดการ์ตูน คุณสามารถสร้างไฟล์ ssl-params.conf ซึ่งจะกำหนดพารามิเตอร์ SSL สำหรับเซิร์ฟเวอร์:

# นาโน /etc/apache2/conf-available/ssl-params.conf

เพื่อการตั้งค่าที่ปลอดภัยและทันสมัย ​​ฉันใช้โค้ดที่สร้างในตัวสร้างการกำหนดค่า SSL ที่ mozilla.github.io ในเครื่องกำเนิดไฟฟ้า ฉันเลือกเซิร์ฟเวอร์ Apache2 ซึ่งเป็นโปรไฟล์สมัยใหม่ และตั้งค่าเซิร์ฟเวอร์และเวอร์ชัน OpenSSL อย่างถูกต้อง ซึ่งสามารถพบได้โดยใช้คำสั่งต่อไปนี้:

#apache2-v
#เวอร์ชัน openssl

เป็นผลให้ฉันได้รับข้อความต่อไปนี้:

# 01-14-2018 / สำหรับ apache2 2.4.10 & openssl 1.0.1t # จาก https://mozilla.github.io/server-side-tls/ssl-config-generator/ # พารามิเตอร์ช่วย: https://raymii .org/s/tutorials/Strong_SSL_Security_On_Apache2.html # การกำหนดค่าที่ทันสมัย ​​ปรับแต่งตามความต้องการของคุณ SSLProtocol ทั้งหมด -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE -ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 :ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCipherOrder บน SSLCompression ปิด # OCSP Stapling เฉพาะใน httpd 2.3.3 และใหม่กว่า SSLUseStapling บน SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors ปิด SSLStaplingCache shmcb: /var/run/ocsp(1 28000)
ตอนนี้เรามากำหนดค่าโฮสต์เสมือนด้วยการรองรับ SSL:

ฉันได้ให้ข้อความของไฟล์นี้ไปที่ มุมมองถัดไป:

ServerAdmin user@localhost ชื่อเซิร์ฟเวอร์ localhost DocumentRoot /var/www ตัวเลือก FollowSymLinks AllowOverride ทั้งหมด ต้องการทั้งหมดถูกปฏิเสธ SSLOptions +StdEnvVars SSLOptions +StdEnvVars
จากที่กล่าวมาข้างต้น เรายังกำหนด /var/www ให้เป็นไดเร็กทอรี DocumentRoot ซึ่งเข้าถึงได้ซึ่งได้รับการกำหนดค่าในลักษณะเดียวกับการตั้งค่าก่อนหน้า กลไก HSTS ถูกเปิดใช้งาน ซึ่งช่วยบังคับให้สร้างการเชื่อมต่อผ่านโปรโตคอล HTTPS รวมการรองรับ SSL ซึ่งระบุใบรับรองและคีย์ที่ใช้ และยังเปิดใช้งานการรองรับการประมวลผลข้อมูลใบรับรองในสคริปต์ PHP และ CGI อีกด้วย ส่วนสุดท้ายได้รับการออกแบบมาเพื่อให้แน่ใจว่าสามารถใช้งานร่วมกับเบราว์เซอร์เวอร์ชันก่อนหน้าได้ อินเทอร์เน็ตเอ็กซ์พลอเรอร์และโดยทั่วไปก็ไม่จำเป็น

ตอนนี้เรามาสัมผัสถึงขั้นสุดท้ายกันดีกว่า

มาเปิดพอร์ตสำหรับ SSL:

#ufw อนุญาต 443

มาเปิดใช้งานโมดูล apache เพื่อรองรับ SSL และ HSTS:

#a2enmodssl
# ส่วนหัว a2enmod

มาเปิดใช้งานการกำหนดค่า SSL กันเถอะ:

# a2enconf ssl-params

มาเปิดใช้งานโฮสต์เสมือนด้วยการรองรับ SSL:

# a2ensite ค่าเริ่มต้น-ssl

มารีสตาร์ทเซิร์ฟเวอร์เพื่อยอมรับการตั้งค่าใหม่ทั้งหมด:

# บริการ apache2 รีสตาร์ท

ช่วงเวลาที่น่าสนใจมาถึงแล้ว - การทดสอบการทำงานของฟังก์ชันใหม่ของระบบที่กำหนดค่าไว้

สร้างไฟล์:

# นาโน /var/www/.htaccess

เปิด https:// 127.0.0.1 ในเบราว์เซอร์ ควรเปิดหน้าเกี่ยวกับใบรับรองที่ไม่รู้จักหลังจากยอมรับ (การอนุญาตครั้งเดียวหรือถาวร) หน้าที่คุ้นเคยอยู่แล้วจะเปิดขึ้นพร้อมการแจ้งเตือนเกี่ยวกับเว็บเซิร์ฟเวอร์ที่ทำงานอยู่

ลบไฟล์ .htaccess:

#rm /var/www/.htaccess

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

การเข้าถึง HTTP สามารถเปิด ปิด หรือบังคับให้เปลี่ยนเส้นทางไปยัง HTTPS ได้

หากต้องการเปิดใช้งานการเข้าถึง HTTP คุณไม่จำเป็นต้องดำเนินการใดๆ เนื่องจากเซิร์ฟเวอร์ประมวลผลคำขอสำหรับพอร์ต 80 และ 443 แยกกัน และไซต์ของเราในโฟลเดอร์ /var/www จะเปิดทั้งผ่าน HTTP และ HTTPS

หากต้องการปิดใช้งานการเข้าถึง HTTP เพียงปิดใช้งานโฮสต์เสมือนที่เกี่ยวข้องและรีสตาร์ทเว็บเซิร์ฟเวอร์:

# a2dissite 000-ค่าเริ่มต้น
# บริการ apache2 รีสตาร์ท

ตอนนี้หากคุณเปิด http:// 127.0.0.1 ในเบราว์เซอร์ หน้าควรเปิดขึ้นพร้อมการแจ้งเตือนเกี่ยวกับการไม่มีหน้า (ไม่พบ)

ตัวเลือกที่สามที่น่าสนใจที่สุด ในกรณีนี้ HTTP ยังคงเปิดใช้งานอย่างเป็นทางการ แต่การประมวลผลข้อมูลจะถูกบังคับให้เปลี่ยนเส้นทางผ่าน HTTPS

เมื่อต้องการทำเช่นนี้ ขั้นแรกให้เปิดใช้งานโมดูลการเปลี่ยนเส้นทาง:

# a2enmod เขียนใหม่

ตอนนี้เรามาเปิดไฟล์ 000-default.conf:

# นาโน /etc/apache2/sites-available/000-default.conf

และก่อนแท็กปิด ให้เพิ่มข้อความต่อไปนี้:

RewriteEngine เมื่อ RewriteCond %(HTTPS) ปิด RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)
มารีสตาร์ทเซิร์ฟเวอร์กันเถอะ:

# บริการ apache2 รีสตาร์ท

มาสร้างไฟล์กันเถอะ:

# นาโน /var/www/.htaccess

โดยที่เราเขียนบรรทัดเดียวว่า “Require all allowance”

ตอนนี้หากเราเปิดที่อยู่ http:// 127.0.0.1 ในเบราว์เซอร์ เราจะเปลี่ยนเส้นทางไปที่ https:// 127.0.0.1 โดยอัตโนมัติ พร้อมคำเตือนเกี่ยวกับใบรับรองที่ไม่รู้จัก (หากไม่ได้เพิ่มไว้ในรายการข้อยกเว้นก่อนหน้านี้ ในเบราว์เซอร์) หลังจากยอมรับว่าหน้าที่คุ้นเคยอยู่แล้วจะเปิดหน้าพร้อมการแจ้งเตือนเกี่ยวกับเว็บเซิร์ฟเวอร์ที่ทำงานอยู่

การตั้งค่า SQL

สำหรับ การตั้งค่าเริ่มต้น mysql เพียงรันคำสั่งต่อไปนี้:

# mysql_secure_installation

หลังจากป้อนรหัสผ่าน superuser ของ mysql ฉันตอบคำถามที่ถามตามลำดับต่อไปนี้:

  • ปฏิเสธที่จะเปลี่ยนรหัสผ่านรูท
  • ยืนยันการลบ ผู้ใช้ที่ไม่ระบุชื่อจากฐานข้อมูล
  • ยืนยันการบล็อกการเชื่อมต่อระยะไกลสำหรับรูท (ด้วยเหตุผลด้านความปลอดภัย ให้รูทเชื่อมต่อในเครื่องเท่านั้น)
  • ยืนยันการลบฐานข้อมูลทดสอบ
  • เห็นด้วยกับการโหลดตารางสิทธิพิเศษอีกครั้ง
หากต้องการตรวจสอบการทำงานของ mysql คุณสามารถรันคำสั่งต่อไปนี้:

# mysql -uroot -p

หลังจากป้อนรหัสผ่าน superuser ของ mysql เราจะเห็นข้อความแจ้งของ mysql ซึ่งหมายความว่าบริการเริ่มทำงานแล้ว คุณสามารถออกจากเทอร์มินัล mysql ได้โดยป้อนคำสั่ง "exit"

หากต้องการตรวจสอบการทำงานของ phpmyadmin ให้เปิดที่อยู่ http:// 127.0.0.1/phpmyadmin ในเบราว์เซอร์ หากหน้าเว็บเปิดขึ้นมาพร้อมคำเชิญให้เข้าสู่ระบบ phpmyadmin แสดงว่าบริการนั้นเปิดใช้งานอยู่

การตั้งค่า PHP

หลังจากติดตั้ง PHP ฉันเปิดไฟล์การตั้งค่า:

# นาโน /etc/php5/apache2/php.ini

และฉันได้นำพารามิเตอร์บางอย่างมาในรูปแบบต่อไปนี้:

  • หน่วยความจำ_จำกัด = 1024M
  • default_charset = "UTF-8"
  • upload_max_filesize = 256M
  • sendmail_path = /usr/bin/fake_sendmail.sh
เมื่อใช้โมดูล PHP คุณสามารถจัดให้มีการแคชข้อมูลในหน่วยความจำได้ การแคชจะมีประโยชน์เมื่อ โหลดสูงไปยังเซิร์ฟเวอร์สำหรับการสร้างข้อมูลซึ่งต้องใช้ทรัพยากรจำนวนมาก เช่น ผลลัพธ์ของการสืบค้นฐานข้อมูลหรือการประมวลผลชิ้นส่วนที่ "หนัก" ของเทมเพลตเว็บไซต์ ฉันเลือกโมดูล memcached เป็นเซิร์ฟเวอร์แคช

การติดตั้ง memcache:

# apt-get ติดตั้ง memcached php5-memcached

มาดูการตั้งค่าการกำหนดค่าบริการ:

# นาโน /etc/memcached.conf

ในการตั้งค่าฉันเพิ่มขนาดของหน่วยความจำที่ใช้สำหรับแคช: -m 64 -> -m 256 และตรวจสอบการมีอยู่ของโหมดการทำงานเฉพาะใน โซนท้องถิ่น: -l 127.0.0.1.

เริ่มบริการแคชและเว็บเซิร์ฟเวอร์ใหม่:

# บริการ memcached เริ่มต้นใหม่
# บริการ apache2 รีสตาร์ท

ตอนนี้คุณต้องแน่ใจว่าบริการใช้งานได้ เมื่อต้องการทำเช่นนี้ ให้สร้างไฟล์:

#นาโน /var/www/info.php

และเพิ่มข้อความต่อไปนี้ลงไป:


อย่าลืมตรวจสอบการมีอยู่ของไฟล์ .htaccess ในไดเร็กทอรี /var/www ด้วยเนื้อหาการอนุญาตที่เหมาะสม หากไม่มี ให้สร้างมันขึ้นมา

ตอนนี้คุณสามารถเปิด http:// 127.0.0.1/info.php ในเบราว์เซอร์ของคุณ - ควรเปิดหน้าที่มีข้อมูลเกี่ยวกับ PHP ซึ่งคุณต้องตรวจสอบการมีอยู่ของส่วน memcached หากตารางปรากฏขึ้น แสดงว่า PHP กำลังทำงานอยู่

คุณสามารถตรวจสอบบริการ memcached ที่ทำงานอยู่ได้ดังนี้:

$ PS -aux | grep memcached

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

การสร้างต้นขั้วอีเมลสำหรับ PHP

ที่ การตั้งค่า PHPเชลล์สคริปต์ถูกระบุเป็นพารามิเตอร์ sendmail_path หน้าที่ของสคริปต์นี้คือบันทึกอีเมลที่ส่งผ่านฟังก์ชันมาตรฐาน อีเมล php(), บน เครื่องท้องถิ่นในโฟลเดอร์ที่สะดวก แทนที่จะส่งไปที่ใดที่หนึ่ง

มาสร้างไฟล์กันเถอะ:

# นาโน /usr/bin/fake_semdmail.sh

โดยมีเนื้อหาดังนี้

#!/bin/sh prefix="/var/mail/sendmail/new" numPath="/var/mail/sendmail" ถ้า [ ! -f $numPath/num ]; จากนั้นก้อง "0" > $numPath/num fi num=`cat $numPath/num` num=$(($num + 1)) echo $num > $numPath/num name="$prefix/letter_$num.txt " ในขณะที่อ่านบรรทัดให้ echo $line >> $name เสร็จแล้ว chmod 777 $name /bin/true
มาทำให้ไฟล์นี้ปฏิบัติการได้:

# chmod +x /usr/bin/fake_semdmail.sh

มาสร้างไดเร็กทอรีที่จำเป็นซึ่งอาจจำเป็นหากคุณตั้งค่าการรวบรวมจดหมายด้วยโปรแกรมเมลของคุณ:

# mkdir /var/mail/sendmail /var/mail/sendmail/cur /var/mail/sendmail/ใหม่ /var/mail/sendmail/tmp

และกำหนดสิทธิ์เพื่อให้เซิร์ฟเวอร์สามารถเขียนไฟล์ในโฟลเดอร์นี้ได้:

# chmod 777 -R /var/mail/sendmail

ตอนนี้อีเมลขาออกทั้งหมดจะถูกเก็บไว้ใน /var/mail/sendmail สามารถดูได้ด้วยโปรแกรมแก้ไขข้อความหรือรวบรวมโดยใช้โปรแกรมอีเมล ซอฟต์แวร์ Debian มาพร้อมกับ: โปรแกรมรับส่งเมลวิวัฒนาการ. เมื่อตั้งค่าบัญชี คุณต้องเลือก “ไดเรกทอรีเมลในรูปแบบ Maildir” เป็นประเภทเซิร์ฟเวอร์ และระบุเส้นทางไปยังไดเรกทอรีอีเมล (/var/mail/sendmail) และระบุ “Sendmail” เป็นเซิร์ฟเวอร์

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

การตั้งค่าการเข้าถึง SSH

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

บริการติดตั้ง:

# apt-get ติดตั้ง ssh

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

#ufw อนุญาต 106

เพื่อจัดระเบียบการเข้าถึงสำหรับผู้ใช้ของเรา เราจำเป็นต้องเปิดไฟล์:

# นาโน /etc/ssh/sshd_config

และเพิ่มคำสั่งที่ส่วนท้ายของไฟล์:


นอกจากนี้ เพื่อความปลอดภัย ฉันได้ทำการเปลี่ยนแปลงไฟล์นี้ดังต่อไปนี้:
  • เปลี่ยนพอร์ตจาก 22 เป็นพอร์ตอื่น (รายการพอร์ต): พอร์ต 22 -> พอร์ต 106
  • ปิดการใช้งานโปรโตคอลเดิม: โปรโตคอล 2.1 -> โปรโตคอล 2
  • พิการ การเข้าถึงระยะไกลสำหรับรูท: PermitRootLogin ใช่ (หรือ PermitRootLogin โดยไม่ต้องใช้รหัสผ่าน) -> PermitRootLogin no
จากนั้นเราเริ่มบริการใหม่:

# บริการ sshd รีสตาร์ท

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

การป้องกันการเข้าถึง

ฉันไม่ได้กังวลกับการปกป้องเว็บเซิร์ฟเวอร์จาก DDoS โดยในตอนแรกเชื่อว่าหากโฮสต์บน VPS/VDS โฮสติ้งจะให้การป้องกันที่มีประสิทธิภาพ และหากคุณทำให้เซิร์ฟเวอร์ของคุณ “โดดเด่น” กับอินเทอร์เน็ต ปัญหานี้จำเป็นต้องแก้ไข จะได้รับการจัดการอย่างจริงจังและนี่คือบทความแยกหัวข้อ การป้องกัน HTTP DDoS ที่ช้านั้นทำได้ค่อนข้างง่าย โดยทำตามคำแนะนำมากมายบนอินเทอร์เน็ต แต่จะไม่ช่วยคุณจากการโจมตีแบบกระจายที่ดำเนินการจากที่อยู่ IP ที่แตกต่างกันมากมาย

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

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

โชคดีสำหรับเรามีสิ่งที่ล้มเหลว 2ban:

# apt-get ติดตั้ง failed2ban

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

พารามิเตอร์การบล็อกสามารถตั้งค่าแยกกันได้:

# นาโน /etc/fail2ban/jail.local

ในไฟล์ที่สร้างขึ้นคุณจะต้องระบุการตั้งค่าที่จะแทนที่ค่าดีฟอลต์ ตัวอย่างเนื้อหาไฟล์ของฉัน:

#การตั้งค่าทั่วไป
ละเว้น = 127.0.0.1
แบนไทม์ = 2592000
เวลาค้นหา = 43200
แม็กซ์รีทรีท = 6
banaction = iptables-มัลติพอร์ต
#ตั้งค่าการส่งข้อความทางอีเมล์
destemail = user@localhost
ชื่อผู้ส่ง = Fail2Ban
mta = ส่งเมล์
การกระทำ = %(action_mwl)s

#การรักษาความปลอดภัยเอสเอสเอช
เปิดใช้งาน = จริง
พอร์ต = 106
ตัวกรอง = sshd
logpath = /var/log/auth.log

# ตรวจจับการพยายามรหัสผ่านที่ล้มเหลว
เปิดใช้งาน = จริง
พอร์ต = http, https
ตัวกรอง = apache-auth

# ระบุการสแกนที่เป็นไปได้เพื่อหาช่องโหว่และช่องโหว่ของ PHP
เปิดใช้งาน = จริง
พอร์ต = http, https
ตัวกรอง = apache-noscript
logpath = /var/log/apache*/*error.log

# ตรวจจับความพยายามในการโอเวอร์โฟลว์ Apache
เปิดใช้งาน = จริง
พอร์ต = http, https
ตัวกรอง = apache-overflows
logpath = /var/log/apache*/*error.log
แม็กซ์รีทรีท = 2

# ตรวจพบความพยายามค้นหาที่ไม่สำเร็จ โฮมไดเร็กทอรีบนเซิร์ฟเวอร์
เปิดใช้งาน = จริง
พอร์ต = http, https
ตัวกรอง = apache-nohome
logpath = /var/log/apache*/*error.log
แม็กซ์รีทรีท = 2

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

การอ้างอิงเว็บเซิร์ฟเวอร์

การเริ่มต้น หยุด และรีบูตเซิร์ฟเวอร์:

# บริการ apache2 เริ่มต้น
# บริการ apache2 หยุด
# บริการ apache2 รีสตาร์ท

# บริการ apache2 โหลดซ้ำ

การเปิดใช้งานและปิดใช้งานการทดสอบโฮสต์:

# a2 การทดสอบภายในสถานที่
#การทดสอบ a2dissite

การเปิดใช้งานและปิดใช้งานการกำหนดค่าการทดสอบ:

#การทดสอบa2enconf
#การทดสอบa2disconf

การตรวจสอบไวยากรณ์ของไฟล์ (ควรส่งคืน: "ไวยากรณ์ตกลง"):

# การทดสอบการกำหนดค่า apache2ctl

ตัวเลือกในการเพิ่มไซต์ที่เข้าถึงได้ผ่าน HTTP หรือ HTTPS โดยใช้โฮสต์เสมือนที่มีอยู่

สมมติว่าเราจำเป็นต้องเพิ่มเว็บไซต์ใหม่ลงในเซิร์ฟเวอร์ของเรา ซึ่งอยู่ในไดเร็กทอรี site.com ซึ่งอยู่ใน /home/user/www วิธีนี้จะสะดวกเพราะผู้ใช้ไม่จำเป็นต้องออกจากโฮมไดเร็กตอรี่เมื่อทำงานกับไซต์

# chmod 755 /home/user

สร้างไดเร็กทอรีสำหรับไซต์:

$ mkdir /home/user/www /home/user/www/site.com

หากต้องการเพิ่มการเข้าถึง HTTP ให้เปิดไฟล์:

# นาโน /etc/apache2/sites-available/000-default.conf

หรือหากต้องการเพิ่มการเข้าถึงผ่าน HTTPS ให้เปิดไฟล์:

# nano /etc/apache2/sites-available/default-ssl.conf

และเพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ที่เปิดอยู่หน้าแท็กปิด /VirtualHost:


รีสตาร์ทเว็บเซิร์ฟเวอร์:

# บริการ apache2 รีสตาร์ท

เราตรวจสอบความพร้อมใช้งานของเว็บไซต์ได้ที่ http:// 127.0.0.1/site.com หรือ https:// 127.0.0.1/site.com (วิธีการตรวจสอบ - ดูด้านล่าง) โปรดทราบว่าไซต์จะเปิดขึ้นโดยไม่คำนึงถึงไฟล์ .htaccess เนื่องจากมีการตั้งค่าคำสั่ง "ต้องได้รับสิทธิ์ทั้งหมด" สำหรับไดเรกทอรีที่มีไซต์

ตัวเลือกในการเพิ่มไซต์ที่เข้าถึงได้ผ่าน HTTP หรือ HTTPS โดยใช้โฮสต์เสมือนใหม่และตั้งค่าการเข้าถึงไซต์ผ่านชื่อโดเมน ไม่ใช่ IP

เงื่อนไขของปัญหาเหมือนกับข้างต้น สมมติว่าเราต้องเพิ่มเว็บไซต์ใหม่ลงในเซิร์ฟเวอร์ของเรา ซึ่งอยู่ในไดเร็กทอรี site.com ซึ่งอยู่ใน /home/user/www แต่ตอนนี้ฉันยังต้องการเข้าถึงไซต์โดยป้อนเฉพาะชื่อโดเมนลงในบรรทัดเบราว์เซอร์

เรากำหนดสิทธิ์สำหรับไดเร็กทอรีผู้ใช้ (ในกรณี):

# chmod 755 /home/user

สร้างไดเร็กทอรีสำหรับไซต์:

$ mkdir /home/user/www/site.com

# ln -s /home/user/www/site.com /var/www/site.com

หากต้องการเพิ่มการเข้าถึงผ่าน HTTP ให้สร้างไฟล์:

# นาโน /etc/apache2/sites-available/site.com.conf

ตัวเลือก FollowSymLinks AllowOverride ทั้งหมด จำเป็นต้องได้รับทั้งหมด# เปลี่ยนเส้นทาง HTTP->HTTPS #RewriteEngine บน #RewriteCond %(HTTPS) ปิด #RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI) ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access .log รวมกัน
หรือหากต้องการเพิ่มการเข้าถึงผ่าน HTTPS ให้สร้างไฟล์:

# นาโน /etc/apache2/sites-available/site.com-ssl.conf

และเพิ่มเนื้อหาต่อไปนี้เข้าไป:

ชื่อเซิร์ฟเวอร์ site.com ServerAlias ​​www.site.com ServerAdmin user@localhost DocumentRoot /var/www/site.com ตัวเลือก FollowSymLinks AllowOverride ทั้งหมด จำเป็นต้องได้รับทั้งหมด# HSTS (จำเป็นต้องมี mod_headers) (15768000 วินาที = 6 เดือน) ส่วนหัวจะตั้งค่า Strict-Transport-Security "max-age=15768000" เสมอ ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log รวม SSLEngine บน SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 บังคับตอบสนอง-1.0 BrowserMatch "MSIE" ssl-unclean-shutdown
ใน /etc/hosts เพิ่มบรรทัด “127.0.0.1 site.com”:

# echo >> /etc/hosts 127.0.0.1 site.com

เปิดใช้งานโฮสต์ HTTP:

# a2ensite.com.conf

หรือเปิดใช้งานโฮสต์ HTTPS:

# a2ensite site.com-ssl.conf

รีสตาร์ทเว็บเซิร์ฟเวอร์:

# บริการ apache2 รีสตาร์ท

เราตรวจสอบความพร้อมใช้งานของเว็บไซต์ที่ http:// site.com หรือ https:// site.com (วิธีการตรวจสอบ – ดูด้านล่าง) โปรดทราบว่าไซต์จะเปิดขึ้นโดยไม่คำนึงถึงไฟล์ .htaccess เนื่องจากมีการตั้งค่าคำสั่ง "ต้องได้รับสิทธิ์ทั้งหมด" สำหรับไดเรกทอรีที่มีไซต์

การดำเนินการทั้งหมดจะดำเนินการภายในเครื่องเสมือนของแขก การ "เปิด" ไซต์ในเบราว์เซอร์ของระบบโฮสต์จะน่าสนใจ มันไม่ใช่เรื่องยาก เรารู้ชื่อโดเมนและที่อยู่ IP ของเครื่องแขก หากระบบโฮสต์เป็น Windows คุณจะต้องเปิดไฟล์ c:\Windows\System32\drivers\etc\hosts และเพิ่มบรรทัดต่อไปนี้ที่ส่วนท้ายสุด:


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

หากคุณต้องการเข้าถึงโฮสต์เสมือนผ่าน HTTPS เท่านั้น แต่ไม่ต้องการสูญเสียการเชื่อมต่อผ่าน HTTP คุณสามารถกำหนดค่าการเปลี่ยนเส้นทางได้:

สร้างไฟล์ /etc/apache2/sites-available/site.com.conf ตามคำแนะนำด้านบน หากยังไม่ได้สร้าง
- ในไฟล์ /etc/apache2/sites-available/site.com.conf ยกเลิกการแสดงความคิดเห็นสามบรรทัด RewriteEngine/RewriteCond/RewriteRule
- เปิดใช้งานโฮสต์ site.com.conf หากไม่ได้เปิดใช้งาน
- รีสตาร์ทเซิร์ฟเวอร์: # บริการ apache2 รีสตาร์ท

ตรวจสอบการทำงานของไซต์ที่เพิ่ม

วิธีที่ง่ายที่สุดในการตรวจสอบการเข้าถึงของไซต์คือการวางไฟล์ index.html ที่มีเนื้อหาบางส่วนไว้ในไดเร็กทอรีราก

สร้างไฟล์ index.html:

$ นาโน /home/user/www/site.com/index.html

และเพิ่มเนื้อหาต่อไปนี้เข้าไป:

ทดสอบตกลง

ทดสอบตกลง




ขึ้นอยู่กับวิธีการเพิ่มไซต์ ให้เปิดที่อยู่ http:// 127.0.0.1/site.com (https:// 127.0.0.1/site.com) หรือ http:// site.com (https:// site) .com) ในเบราว์เซอร์ของคุณ ) - ควรเปิดหน้าเว็บที่มีข้อความ "TEST OK"

วัสดุอ้างอิง MySQL

การสร้างผู้ใช้ user123 ด้วยรหัสผ่าน pass123 และฐานข้อมูล db123 ผ่านคอนโซล

เข้าสู่ระบบ mysql โดยป้อนรหัสผ่าน superuser ของ mysql เมื่อได้รับแจ้ง:

# mysql -u รูต -p

และสร้างฐานข้อมูล (ไม่จำเป็นต้องพิมพ์คำนำหน้า “mysql>” ต้องมีเครื่องหมายอัฒภาคต่อท้าย):

mysql> สร้างฐานข้อมูล `db123`;

สร้างผู้ใช้ user123 ด้วยรหัสผ่าน pass123:

mysql> สร้างผู้ใช้ "user123"@"localhost" ระบุโดย "pass123";

ให้สิทธิ์แก่ผู้ใช้บนฐานข้อมูล:

mysql> ให้สิทธิ์ทั้งหมดบน `db123`.* เป็น "user123"@"localhost";

อัพเดตตารางสิทธิพิเศษ:

mysql> สิทธิ์ล้าง;

ออกจาก mysql:

mysql> ออก

หากต้องการตรวจสอบ ให้เปิดที่อยู่ http:// 127.0.0.1/phpmyadmin และเข้าสู่ระบบด้วยข้อมูลรับรองการเข้าถึง user123/pass123 คุณควรจะสามารถเข้าถึงฐานข้อมูล db123 ได้

การเปลี่ยนรหัสผ่านรูท mysql จาก pass123 เป็น pass456:

# mysqladmin -uroot -ppass123 รหัสผ่าน pass456

การเปลี่ยนรหัสผ่านของผู้ใช้ 123 จาก pass123 เป็น pass456:

# mysqladmin -user123 -ppass123 รหัสผ่าน pass456

การลบผู้ใช้ 123:

mysql> วางผู้ใช้ "user123"@"localhost";

วางตาราง db123:

mysql> วางฐานข้อมูล `db123`;

วัสดุอ้างอิง Fail2ban

เริ่มบริการใหม่:

# บริการล้มเหลว 2ban รีสตาร์ท

กำลังตรวจสอบกฎการทำงาน:

# สถานะไคลเอนต์ล้มเหลว 2ban

สถิติโดยละเอียดสำหรับกฎ sshd:

# สถานะไคลเอ็นต์ล้มเหลว 2ban ssh

การยกเลิกการแบน:

# ชุดไคลเอนต์ล้มเหลว 2ban ssh unbanip Banned_IP

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีการติดตั้ง Apache, MariaDB และ PHP7 (LAMP stack) บน Debian 9ยืด LAMP เป็นสแต็กบริการเว็บที่ใช้กันมากที่สุดสำหรับการสร้างเว็บไซต์แบบไดนามิกและเว็บแอปพลิเคชัน

ประกอบด้วยสี่องค์ประกอบ: Linux, Apache, MySQL/MariaDB, PHP - Linux คือระบบปฏิบัติการ; Apache เป็นเว็บเซิร์ฟเวอร์ MySQL/MariaDB เป็นฐานข้อมูล PHP เป็นภาษาสคริปต์ฝั่งเซิร์ฟเวอร์

เลย การติดตั้งหลอดไฟใน Debian 9 เช่นเดียวกับการแจกแจงบน Linux อื่นๆ มันง่ายมาก โดยเฉพาะถ้าคุณคุ้นเคยกับการสร้างทีม เราจะบอกทุกอย่างอย่างละเอียดเพื่อให้แม้แต่มือใหม่ก็สามารถรับมือได้

การติดตั้ง LAMP บน Debian 9

ส่วนประกอบทั้งสี่นั้นฟรีและเปิดกว้าง ซอร์สโค้ด- อย่างไรก็ตาม เนื่องจากปัจจุบัน Oracle เป็นเจ้าของ MySQL และมีความเป็นไปได้ที่ Oracle จะเปลี่ยนให้เป็นผลิตภัณฑ์แบบปิด เราจึงเลือก MariaDB มากกว่า MySQL คุณสามารถปฏิบัติตามบทช่วยสอนนี้บน VPS (Virtual Private Server) หรือบนเครื่องท้องถิ่นที่ใช้ Debian 9

โปรดทราบว่าเมื่อทำการติดตั้ง ซอฟต์แวร์บน Debian คุณต้องมีสิทธิ์รูท คุณสามารถเพิ่ม sudo ที่จุดเริ่มต้นของคำสั่ง หรือใช้คำสั่ง su เพื่อสลับไปที่ root

ขั้นตอนที่ 1: อัปเดตแพ็คเกจซอฟต์แวร์

LAMP (เซิร์ฟเวอร์สแต็ก) ย่อมาจาก Linux, Apache, MySQL และ PHP; สี่ยอดนิยม ส่วนประกอบซอฟต์แวร์โอเพ่นซอร์ส ใช้งานโดยโฮสต์เว็บ นักพัฒนาเว็บ บล็อก และอื่นๆ ส่วนใหญ่ เราได้เตรียมคำแนะนำในการตั้งค่าเว็บเซิร์ฟเวอร์ของคุณสำหรับสภาพแวดล้อมการทดสอบ เวอร์ชันล่าสุดเดเบียน โดยทั่วไปการติดตั้ง LAMP ใน Debian 9 นั้นง่ายมาก สิ่งสำคัญคือการเข้าใจฟังก์ชั่นพื้นฐาน

MariaDB แทนที่เซิร์ฟเวอร์ MySQL เป็นฐานข้อมูลเริ่มต้นใน Debian 9

ติดตั้งลินุกซ์:
เกี่ยวกับสิ่งดี น่าสนใจ และนวัตกรรมที่นำเสนอใน Debian 9 นี่เป็นเงื่อนไขหลักในการติดตั้งอย่างอื่นทั้งหมด เราขอแนะนำให้คุณอ่านคำแนะนำอื่นๆ บนเว็บไซต์ด้วย ตัวอย่างเช่น เราได้พูดคุยเกี่ยวกับระบบ Ubuntu ของคุณแล้ว

ตอนนี้เราจะไปที่การติดตั้ง AMP ( เวอร์ชันของอาปาเช่ 2, PHP เวอร์ชัน 7, เวอร์ชัน MariaDB 10.2) บน Debian 9 มาติดตั้งทีละตัวกันดีกว่า

ติดตั้งเซิร์ฟเวอร์ Apache HTTP:
ในการเริ่มต้น เราจะติดตั้งเว็บเซิร์ฟเวอร์ Apache เปิดเทอร์มินัลแล้วสลับไปที่ผู้ใช้รูท

อัพเดตดัชนีที่เก็บแพ็กเกจ

ชื่อแพ็คเกจเว็บเซิร์ฟเวอร์ Apache คือ apache2 ติดตั้งแพ็คเกจ apache2 โดยใช้คำสั่ง apt-get

apt-get -y ติดตั้ง apache2

การจัดการเซิร์ฟเวอร์ Apache HTTP:

หากต้องการเริ่มต้นเซิร์ฟเวอร์ Apache2 ให้รัน

systemctl เริ่ม apache2.service

หากต้องการหยุดเซิร์ฟเวอร์ Apache2 ให้เริ่มต้น

systemctl หยุด apache2.service

หากต้องการรีสตาร์ทเซิร์ฟเวอร์ Apache2 ให้รัน

หากต้องการตรวจสอบสถานะเซิร์ฟเวอร์ Apache2 ให้รัน

สถานะ systemctl apache2.service

ไฟร์วอลล์:

อนุญาต เซิร์ฟเวอร์อาปาเช่ HTTPผ่านไฟร์วอลล์

ufw อนุญาต 80/tcp

ufw อนุญาต 443/tcp

การทดสอบเซิร์ฟเวอร์ Apache HTTP:

ตอนนี้เราจะตรวจสอบเว็บเซิร์ฟเวอร์ Apache เพื่อดูว่าทำงานถูกต้องหรือไม่ เปิดเว็บเบราว์เซอร์ใดก็ได้ จากนั้นไปที่ URL ต่อไปนี้

HTTP://localhost/
หรือ

http://your-f-add-on ssg/
คุณจะได้รับหน้า "ค่าเริ่มต้นของ Apache2 Debian" หน้าเริ่มต้นนี้ยืนยันว่าเซิร์ฟเวอร์ Apache HTTP ทำงานได้ดี

การติดตั้งเซิร์ฟเวอร์ MySQL (MariaDB):
MariaDB เป็นการแทนที่เซิร์ฟเวอร์ MySQL ที่พัฒนาโดยนักพัฒนา MySQL ดั้งเดิมเพื่อให้ยังคงเป็น RDBMS แบบโอเพ่นซอร์ส ตอนนี้ MariaDB เป็นหนึ่งในที่สุด เซิร์ฟเวอร์ยอดนิยมฐานข้อมูลในโลก

ในการติดตั้ง MariaDB ให้รันคำสั่งต่อไปนี้

apt-get -y ติดตั้งเซิร์ฟเวอร์ mariadb

คำสั่งนี้ช่วยให้คุณปรับปรุงความปลอดภัยของการติดตั้ง MariaDB ของคุณได้ด้วยวิธีต่อไปนี้:

คุณสามารถ ติดตั้งรหัสผ่านสำหรับบัญชีรูท

คุณสามารถจำกัดบัญชีรูทไว้ที่ localhost ได้

คุณสามารถลบบัญชีผู้ใช้ที่ไม่ระบุชื่อได้

คุณสามารถลบฐานข้อมูลทดสอบและสิทธิ์ที่อนุญาตให้ทุกคนเข้าถึงฐานข้อมูลที่มีชื่อขึ้นต้นด้วย test_ ได้

ติดตั้ง PHP:
ตามค่าเริ่มต้น เซิร์ฟเวอร์ Apache รองรับเฉพาะ .html ไม่ใช่ PHP ซึ่งคุณจะต้องติดตั้งชุดส่วนขยาย PHP และ php สำหรับเซิร์ฟเวอร์ MariaDB ที่นี่เราจะติดตั้ง PHP 7 บน Debian 9

apt-get -y ติดตั้ง php php-mysql

หลังจากติดตั้งแพ็คเกจ PHP คุณจะต้องรีสตาร์ทเซิร์ฟเวอร์ Apache HTTP

systemctl รีสตาร์ท apache2.service

การทดสอบ PHP:

ใช้โปรแกรมแก้ไข VI เพื่อสร้างไฟล์ info.php

vi /var/www/html/info.php

คำสั่ง vi นี้จะเปิดไฟล์ชื่อ info.php คัดลอก/วางบรรทัดด้านล่างลงในไฟล์ info.php:

บันทึกและปิดไฟล์โดยใช้ Esc +: wq

ตอนนี้เปิดอินเทอร์เน็ตเบราว์เซอร์ของคุณและป้อน URL ต่อไปนี้ลงในที่อยู่เว็บ

http://localhost/info.php

http://your-ip-add-ress/info.php
หน้าจะมีลักษณะดังนี้:

การติดตั้ง LAMP ใน Debian 9 ดังที่เราได้กล่าวไปแล้วนั้นกลายเป็นเรื่องง่ายมาก เราหวังว่าคุณจะเข้าใจค่าพื้นฐานระหว่างการติดตั้งอย่างรวดเร็ว แต่ถ้าคุณมีคำถามอย่าลืมถามพวกเขาในความคิดเห็น

ข้อสรุป

ทั้งหมดนี้! ขอแสดงความยินดี คุณติดตั้ง LAMP บน Debian 9 สำเร็จแล้ว หากคุณพบว่าบทความนี้มีประโยชน์ อย่าลืมแชร์ลิงก์

หากคุณพบข้อผิดพลาด โปรดเน้นข้อความและคลิก Ctrl+ป้อน.

ไม่กี่ชั่วโมงก่อน เกี่ยวกับโฮสติ้งเจ๋งๆ ดิจิตอลโอเชี่ยน- หากคุณสนใจและต้องการลองใช้จริง คุณต้องสร้างมันขึ้นมาก่อน หยดและติดตั้ง/กำหนดค่าส่วนประกอบเซิร์ฟเวอร์ที่จำเป็นทั้งหมด ( อาปาเช่, MySQL, PHP- ในโพสต์นี้ ฉันอยากจะบอกคุณถึงวิธีการติดตั้งและกำหนดค่าชุดค่าผสมซึ่งเป็นที่นิยมสำหรับผู้ให้บริการโฮสติ้งทุกรายอย่างถูกต้อง: อาปาเช่, MySQLและ PHP(โคมไฟ). หมายเหตุนี้มุ่งเป้าไปที่ผู้มาใหม่ในโลก Linux

กำลังอัปเดตที่เก็บข้อมูล

ก่อนติดตั้งซอฟต์แวร์ โปรดแน่ใจว่าได้อัปเดตที่เก็บข้อมูลแล้ว ทำได้โดยใช้คำสั่งเดียว:

ฉลาดรับการปรับปรุง

การติดตั้ง Apache บน Debian 7

การติดตั้ง อาปาเช่ไม่ควรสร้างปัญหาใดๆ ทั้งหมดนี้เกิดจากการเรียกคำสั่งเดียว (ที่เก็บข้อมูลเป็นสิ่งที่ดี):

ฉลาดรับการติดตั้ง apache2

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

Ifconfig eth0 | grep inet | awk "( พิมพ์ $2 )"

เว็บเซิร์ฟเวอร์ที่ติดตั้งอย่างถูกต้องจะแสดงหน้าเว็บพร้อมข้อความว่า “ มันได้ผล!”.

องค์ประกอบต่อไปที่เราต้องติดตั้งคือ MySQL DBMS หากต้องการดาวน์โหลดและติดตั้ง MySQL คุณต้องเรียกใช้คำสั่งเดียวอีกครั้ง:

Apt-get ติดตั้ง mysql-server

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

เมื่อการติดตั้ง MySQL เสร็จสมบูรณ์ คุณจะต้องเรียกใช้สคริปต์: mysql_secure_installation เมื่อต้องการทำเช่นนี้ ให้เขียนคำสั่งในหน้าต่างเทอร์มินัล:

Mysql_secure_installation

สคริปต์จะถามรหัสผ่านสำหรับบัญชี "รูท" ที่คุณระบุระหว่างการติดตั้งทันที ป้อนรหัสผ่านของคุณและกดปุ่ม "Enter" หากป้อนรหัสผ่านถูกต้อง สคริปต์จะแจ้งให้คุณเปลี่ยน เนื่องจากคุณอาจได้รหัสผ่านที่ดีระหว่างการติดตั้ง ให้ป้อน "N" ดังนั้นจึงปฏิเสธที่จะเปลี่ยนรหัสผ่าน

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

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

การติดตั้ง PHP5 บน Debian 7

ขั้นตอนสุดท้ายคือการติดตั้ง PHP มันง่ายพอ ๆ กับการติดตั้ง Apache ป้อนคำสั่งในหน้าต่างเทอร์มินัล:

ฉลาดรับการติดตั้ง php5 php-pear php5-mysql

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

บริการ apache2 รีสตาร์ท

ตรวจสอบการทำงานของ PHP

ขั้นตอนสุดท้ายสำหรับวันนี้คือการตรวจสอบการทำงานของ PHP มาลองสร้างสคริปต์ทดสอบและเข้าถึงผ่านเบราว์เซอร์กันดีกว่า ป้อนคำสั่งในเทอร์มินัล

นาโน /var/www/phpinfo.php

มันจะเปิดโปรแกรมแก้ไขข้อความนาโน ในนั้นเราเข้าสู่บรรทัดมาตรฐานเพื่อตรวจสอบการทำงานของล่าม PHP:

บันทึกการเปลี่ยนแปลงในไฟล์ ( Ctrl + o) และปิดไฟล์ ( Ctrl+x- ด้วยการดำเนินการง่ายๆ นี้ เราได้สร้างไฟล์ตามเส้นทาง /var/www/phpinfo.php– โฟลเดอร์โฮสต์เริ่มต้น ดังนั้น ในการเข้าถึงไฟล์นี้จากระยะไกล เราจะต้องพิมพ์ในเบราว์เซอร์:

http:// /phpinfo.php

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

พร้อมสำหรับการทำงานและการป้องกัน

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

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

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

นอกจากเว็บเซิร์ฟเวอร์แล้ว เรายังจำเป็นต้องมีระบบการจัดการฐานข้อมูลอีกด้วย MySQL ถือเป็นมาตรฐานในอุตสาหกรรมนี้มายาวนานและเป็นหนึ่งในภาษาสคริปต์สำหรับการรันแอปพลิเคชันเว็บ ปัจจุบัน PHP กุมอำนาจไว้อย่างมั่นใจ ทุกอย่างรวมกันเป็นชุดคลาสสิกหรือที่เรียกว่าเซิร์ฟเวอร์ LAMP ตัวย่อย่อมาจาก: Linux - Apache - MySQL - PHP

สำหรับการติดตั้ง เราจะใช้แพลตฟอร์ม Debian/Ubuntu ระบบต่างๆ จะแตกต่างกันไปในชุดซอฟต์แวร์ ทั้งนี้ขึ้นอยู่กับการเปิดตัว แต่ทุกสิ่งที่ระบุไว้ด้านล่างนี้จะใช้ได้กับซอฟต์แวร์ใดๆ อย่างเท่าเทียมกัน ความแตกต่างที่มีอยู่จะมีการหารือแยกกัน ในขณะที่เขียนนี้ ระบบและเวอร์ชันซอฟต์แวร์ต่อไปนี้เป็นเวอร์ชันปัจจุบัน:

  • เดเบียน 8 เจสซี:อาปาเช่ 2.4.10, PHP 5.6.7, MySQL 5.5.43
  • Debian 7 บีบ:อาปาเช่ 2.2.22, PHP 5.4.39, MySQL 5.5.43
  • เซิร์ฟเวอร์อูบุนตู 14.04 LTS:อาปาเช่ 2.4.7, PHP 5.5.9, MySQL 5.5.43
  • อูบุนตู 12.04 LTS:อาปาเช่ 2.2.22, PHP 5.3.10, MySQL 5.5.43

รุ่นข้างต้นทั้งหมดมีซอฟต์แวร์เวอร์ชันที่ค่อนข้างใหม่ แต่ก็มีลักษณะเฉพาะบางประการ ดังนั้นเมื่อรวมอยู่ใน Ubuntu 14.04 และ Debian 8 แล้ว Apache 2.4 จึงมีความแตกต่างอย่างมากจาก Apache 2.2 และไม่ใช่ CMS ทั้งหมด (ระบบการจัดการเนื้อหา "กลไก") และเว็บแอปพลิเคชันสามารถทำงานได้ โดยเฉพาะอย่างยิ่งสำหรับเวอร์ชันเก่า ตัวอย่างเช่น คุณจะไม่สามารถใช้ Apache 2.4 สำหรับการเข้าถึงฐานข้อมูล 1C:Enterprise บนเว็บได้ ดังนั้น หากคุณตัดสินใจเลือกเวอร์ชัน 2.4 ให้ตรวจสอบความเข้ากันได้กับ CMS และเว็บแอปพลิเคชันทั้งหมดที่วางแผนไว้สำหรับการปรับใช้

นอกจากนี้ MySQL ที่มาพร้อมกับ Ubuntu Server 12.04 / 14.04 ใช้งานไม่ได้ภายในคอนเทนเนอร์ OpenVZ ซึ่งใช้กันอย่างแพร่หลายในการให้บริการ VPS ปัญหาได้รับการแก้ไขโดยการแทนที่ MySQL จากพื้นที่เก็บข้อมูลด้วยเวอร์ชันจากชุมชน MySQL (นักพัฒนา) หรือหนึ่งในทางแยกเช่น MariaDB

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

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

การติดตั้งอาปาเช่

การตั้งค่าเว็บเซิร์ฟเวอร์นั้นง่ายมาก:

ฉลาดรับการติดตั้ง apache2

หากต้องการตรวจสอบการทำงาน ให้พิมพ์ที่อยู่ IP ของเซิร์ฟเวอร์ในเบราว์เซอร์ของคุณแล้วคุณจะเห็น หน้ามาตรฐานต้นขั้ว:

สำหรับ Apache 2.4 จะดูแตกต่างออกไปเล็กน้อย แต่ความหมายไม่เปลี่ยนแปลง

การตั้งค่าเซิร์ฟเวอร์มีอยู่ใน /etc/apache2/apache2.confซึ่งมีการเชื่อมต่อไฟล์เพิ่มเติมจากไดเร็กทอรี เปิดใช้งาน modsและ เปิดใช้งานไซต์แล้ว- ในกรณีนี้ ไม่มีใครหยุดคุณไม่ให้ทำการตั้งค่าที่ระบุทั้งหมดโดยตรง apache2.conf- ทุกอย่างจะทำงานได้ แต่สิ่งนี้จะช่วยลดความง่ายในการดูแลระบบลงอย่างมากเนื่องจากต้องมีการแก้ไขไฟล์การกำหนดค่าหลักอย่างต่อเนื่องในขณะที่การตั้งค่าอยู่ ไฟล์ภายนอกเปิดและปิดง่ายโดยใช้เครื่องมือพิเศษ

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

เราได้เขียนรายละเอียดเกี่ยวกับโฮสต์เสมือนและตำแหน่งของเนื้อหาไซต์ไว้ในบทความแล้ว ทุกสิ่งที่กล่าวไว้ก็เป็นจริงในกรณีของเราเช่นกัน คุณมีอิสระที่จะเลือกเค้าโครงข้อมูลใดๆ แต่เราต้องการจัดเก็บเนื้อหาเว็บไซต์ไว้ภายใน /var/wwwในโฟลเดอร์ที่มีชื่อโดเมน

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

ฉลาดรับการติดตั้ง apache2-mpm-itk

ใน อูบุนตู 14.04เมื่อติดตั้งแพ็คเกจนี้ คุณอาจพบข้อผิดพลาด:

Dpkg: แพ็คเกจการประมวลผลข้อผิดพลาด apache2-mpm-itk (--configure):
ปัญหาการพึ่งพา - ปล่อยให้ไม่มีการกำหนดค่า

การปิดส่วนที่เปิดอยู่: และ จากนั้นบันทึกไฟล์ การกำหนดค่าโฮสต์เสมือนพร้อมแล้ว

หากต้องการเปิดใช้งานไซต์ คุณต้องสร้างลิงก์สัญลักษณ์ไปยังไฟล์การกำหนดค่าในไดเร็กทอรี เปิดใช้งานไซต์แล้วและหากต้องการปิด - ลบลิงก์นี้ ซึ่งสามารถทำได้ด้วยตนเองโดยใช้คำสั่ง ln -s หรือใช้ยูทิลิตี้ apache พิเศษ:

A2ensite example.com

คำสั่งนี้จะเปิดไซต์ หากต้องการปิด ให้ป้อน:

A2dissite example.com

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

บริการ apache2 โหลดซ้ำ

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

ตัวอย่างเช่น เรามาสร้างไฟล์ดัชนีกัน:

แตะ /var/www/examlpe.com/index.html

และใส่บรรทัดเข้าไปว่า:

ตกลง!



ด้วยเหตุนี้ คุณควรเห็นสิ่งต่อไปนี้ในเบราว์เซอร์:

การติดตั้ง PHP

หากคุณต้องการเว็บเซิร์ฟเวอร์เพื่อโฮสต์เนื้อหาแบบคงที่หรือ เว็บแอปพลิเคชันของบุคคลที่สามตัวอย่างเช่น การเผยแพร่ฐานข้อมูล 1C:Enterprise คุณไม่จำเป็นต้องอ่านเพิ่มเติม แต่ถ้าคุณจะสร้างเว็บไซต์โดยใช้ CMS ยอดนิยม คุณจะต้องได้รับการสนับสนุนด้านสคริปต์ ภาษาพีพีพีบนพื้นฐานของการพัฒนาเครื่องยนต์ที่ทันสมัยที่สุด

สำคัญ!ดิสทริบิวชั่นสมัยใหม่ใช้ PHP7 เวอร์ชันใหม่กว่าในการทำงาน เวอร์ชันใหม่แทนลิ้น php5ในคำสั่งด้านล่างคุณควรระบุ php7.0ตัวอย่างเช่น แทนที่จะเป็น php5-imagick.php5จำเป็นต้องโทรออก php7.0-imagick.php7.0

มารันคำสั่งกัน:

ฉลาด-รับการติดตั้ง php5.1

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

ตามค่าเริ่มต้น PHP จะถูกติดตั้งด้วยชุดโมดูลพื้นฐานที่จะครอบคลุมความต้องการส่วนใหญ่ แต่ CMS ที่คุณใช้อาจต้องใช้โมดูลเพิ่มเติมที่คุณต้องติดตั้งแยกต่างหาก

ตัวอย่างเช่น หากต้องการทำงานกับกราฟิก คุณจะต้องได้รับการสนับสนุนไลบรารีกราฟิก จีดี2ดังนั้นมาติดตั้งโมดูลที่เหมาะสมกันดีกว่า:

ฉลาดรับการติดตั้ง php5-gd

จากนั้นอย่าลืมรีสตาร์ทเว็บเซิร์ฟเวอร์:

บริการ apache2 โหลดซ้ำ

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

มาติดตั้งยูทิลิตี้กันและ โมดูล PHPสำหรับเธอ:

ฉลาดรับการติดตั้ง imagemagick php5-imagick

เพื่อตรวจสอบการทำงานของ PHP เราจะสร้างสคริปต์พิเศษในไดเร็กทอรีรากของไซต์:

แตะ /var/www/examlpe.com/info.php

และเพิ่มข้อความต่อไปนี้ลงไป:

phpinfo();
?>

ตอนนี้เรามาพิมพ์ในเบราว์เซอร์ http://example.com/info.phpจากผลของสคริปต์นี้ คุณจะเห็นหน้ามาตรฐานพร้อมข้อมูลเกี่ยวกับ PHP โมดูลที่ติดตั้ง, การตั้งค่า ฯลฯ

การติดตั้ง MySQL

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

มาติดตั้งเซิร์ฟเวอร์ฐานข้อมูลและโมดูล PHP เพื่อใช้งานได้:

Apt-get ติดตั้ง mysql-server php5-mysql

ในระหว่างขั้นตอนการติดตั้ง คุณจะถูกขอให้ป้อนรหัสผ่านสำหรับผู้ใช้ระดับสูงของ MySQL (รูท) ซึ่งไม่ควรสับสนกับผู้ใช้ระดับสูงของระบบ

สำหรับ การควบคุมที่สะดวกฐานข้อมูลเหมาะสมที่จะติดตั้ง phpMyAdmin ซึ่งเป็นยูทิลิตี้บนเว็บที่สะดวกสำหรับการจัดการเซิร์ฟเวอร์ MySQL:

ฉลาดรับการติดตั้ง phpmyadmin

โปรแกรมติดตั้งยูทิลิตี้สามารถกำหนดค่าเว็บเซิร์ฟเวอร์ยอดนิยมได้โดยอัตโนมัติ อาปาเช่และ Lighttpdควรระบุเซิร์ฟเวอร์ที่ต้องการระหว่างการติดตั้ง:

เว็บอินเตอร์เฟสของยูทิลิตี้จะมีให้ที่ http://example.com/phpmyadminในการเข้าสู่ระบบคุณควรใช้ข้อมูลรับรองผู้ใช้ MySQL ในกรณีของเราคือรูท (ยังไม่มีรหัสอื่น) ด้วยรหัสผ่านที่เราระบุระหว่างการติดตั้ง MySQL

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

มาตรวจสอบกัน ใน /etc/php5/apache2/conf.dไม่มีลิงก์ไปยังโมดูลนี้ในขณะที่อยู่ใน /etc/php5/mods-availableมีไฟล์ที่ต้องการอยู่ที่นั่น ดังนั้นจึงมีการติดตั้งโมดูล แต่ไม่ได้เชื่อมต่อด้วยเหตุผลบางประการ บางทีนี่อาจเป็นเพราะ Apache 2.4 และจากนั้นสถานการณ์ที่คล้ายกันอาจเกิดขึ้นได้ เดเบียน 8.

อย่างไรก็ตาม ไม่มีอะไรเลวร้ายเกิดขึ้น สิ่งที่เราต้องทำก็แค่เชื่อมต่อโมดูลโดยสร้างลิงก์สัญลักษณ์:

Ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.ini

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

มาเปิดกันเถอะ phpMyAdminและไปที่หน้า สิทธิพิเศษ (ผู้ใช้)ที่เราเลือก เพิ่มผู้ใช้ใหม่.

ตอนนี้ให้เลื่อนหน้าลงเล็กน้อยแล้วติดตั้งตัวเลือก ให้สิทธิ์เต็มรูปแบบแก่ฐานข้อมูลที่ตรงกับเทมเพลต (ชื่อผู้ใช้\_%)

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

เพื่อตรวจสอบเราจะสร้างฐานข้อมูล phpMyAdmin - ฐานข้อมูล - ฐานข้อมูลใหม่.

เมื่อสร้างฐานข้อมูล ให้ใส่ใจกับการเข้ารหัส ปัจจุบัน เอ็นจิ้นและเว็บแอปพลิเคชันส่วนใหญ่ใช้งานได้ UTF-8 (utf8_general_ci)อย่างไรก็ตาม เอ็นจิ้นเวอร์ชันเก่าสามารถใช้การเข้ารหัสระดับประเทศได้ ดังนั้นคุณจะต้องระบุให้ถูกต้องในขั้นตอนการสร้างฐานข้อมูล ไม่เช่นนั้นจะอัปโหลดไปยังฐานข้อมูลที่สร้างใน UTF-8ถ่ายโอนข้อมูลในการเข้ารหัส วินโดวส์-1252แทนที่จะเป็นตัวอักษรรัสเซียบนเว็บไซต์จะมี "kryakozyabliki"

เมื่อสร้างฐานข้อมูลแล้ว ให้ตรวจสอบสิทธิ์โดยคลิกลิงก์ชื่อเดียวกันถัดจากชื่อของฐานข้อมูล

อย่างที่คุณเห็นทุกอย่างถูกต้องผู้ใช้ที่ระบุในชื่อและรูทผู้ใช้ขั้นสูงมีสิทธิ์เต็มในฐานข้อมูลแม้ว่าเราจะไม่ได้ระบุการตั้งค่าการเข้าถึงใด ๆ เมื่อสร้างฐานข้อมูลก็ตาม

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

  • แท็ก:

กรุณาเปิดใช้งาน JavaScript เพื่อดู

06ก.ย

LAMP คือชุดผลิตภัณฑ์ซอฟต์แวร์ที่ใช้กันอย่างแพร่หลายในการสร้างบริการเว็บ ชุดนี้ประกอบด้วยห้องผ่าตัด ระบบลินุกซ์หนึ่งในเว็บเซิร์ฟเวอร์ Apache ที่ใช้บ่อยที่สุด, Mysql DBMS และภาษาสคริปต์ PHP บทความนี้เกี่ยวข้องกับขั้นตอนนี้ การติดตั้งมาตรฐานและการกำหนดค่าชุดนี้เพื่อใช้บริการเว็บต่อไป

Debian 8 ได้รับเลือกให้เป็นระบบปฏิบัติการ โดยเป็นหนึ่งในระบบปฏิบัติการ GNU/Linux ที่ได้รับความนิยมมากที่สุด กระบวนการติดตั้งระบบปฏิบัติการนี้จะไม่ได้รับการพิจารณาเนื่องจากไม่เกี่ยวข้องกับหัวข้อของบทความ

การดำเนินการติดตั้งและกำหนดค่าทั้งหมดจะดำเนินการภายใต้บัญชีผู้ใช้รูท

การติดตั้งอาปาเช่

ก่อนเริ่มการติดตั้ง คุณต้องรันคำสั่ง:

ฉลาดรับการติดตั้ง apache2

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

ไฟล์การกำหนดค่า Apache อยู่ใน /etc/apache2/apache2.conf

ไดเร็กทอรี /etc/apache2/sites-enabled/ มีไฟล์การกำหนดค่าของบริการบนเว็บที่สร้างขึ้น และไดเร็กทอรี /etc/apache2/sites-available/ มีลิงก์สัญลักษณ์ไปยังไฟล์การกำหนดค่าของบริการเว็บที่เปิดใช้งานอยู่ในปัจจุบัน

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

เรามาลองสร้างหน้าเว็บธรรมดาๆ ที่มีคำว่า “Hello World” กัน ขั้นแรก เรามาสร้างโฟลเดอร์ที่จะจัดเก็บเนื้อหากันก่อน เมื่อต้องการทำเช่นนี้ ให้รันคำสั่ง:

Mkdir /var/www/helloworld.net

ในโฟลเดอร์นี้ เราจะสร้างไฟล์ html แบบง่ายindex.html โดยมีเนื้อหาดังต่อไปนี้:

สวัสดีชาวโลก

นี่คือหน้าทดสอบ



เมื่อมีเนื้อหาของเพจธรรมดาแล้ว คุณจะต้องสร้างไฟล์คอนฟิกูเรชันโฮสต์เสมือน ในการดำเนินการนี้ ในโฟลเดอร์ /etc/apache2/sites-available/ ให้สร้างไฟล์ helloworld.net.conf (อย่าลืมเกี่ยวกับส่วนขยาย conf) โดยมีเนื้อหาดังต่อไปนี้:

ชื่อเซิร์ฟเวอร์ helloworld.net ServerAdmin [ป้องกันอีเมล] ServerAlias ​​www.helloworld.net DocumentRoot /var/www/helloworld.net CustomLog $(APACHE_LOG_DIR)/helloworld.net.access.log รวม ErrorLog $(APACHE_LOG_DIR)/helloworld.net.error.log

นี่คือพารามิเตอร์:

  • ServerName – ชื่อโดเมนของโฮสต์เสมือน (หน้าของเรา)
  • ServerAdmin – ที่อยู่อีเมลของผู้ดูแลระบบ
  • ServerAlias ​​​​- นามแฝงโฮสต์เสมือน (ชื่อโดเมนของโฮสต์ด้วยการเพิ่ม www);
  • DocumentRoot – สถานที่จัดเก็บเนื้อหาของบริการ
  • CustomLog - ชื่อของไฟล์บันทึกการเข้าถึงบริการ
  • ErrorLog – ชื่อของไฟล์บันทึกข้อผิดพลาด

คำอธิบายโดยละเอียดของพารามิเตอร์ทั้งหมดและค่าต่างๆ ในไฟล์กำหนดค่าสามารถพบได้ในเอกสารอย่างเป็นทางการ (http://httpd.apache.org/docs/2.4)

ขั้นตอนต่อไปคือการเปิดใช้งานโฮสต์เสมือนของเรา ซึ่งสามารถทำได้ง่ายๆ โดยการสร้างลิงก์สัญลักษณ์:

Cd /etc/apache2/sites-enabled ln -s ../sites-available/helloworld.net.conf helloworld.net.conf

คุณยังสามารถเปิดใช้งานและปิดใช้งานโฮสต์เสมือนได้โดยใช้คำสั่ง a2ensite และ a2dissite ตามลำดับ

หากต้องการเปิดใช้งาน:

A2ensite helloworld.net

หากต้องการปิด:

A2dissite helloworld.net

หลังจากเปิดโฮสต์แล้ว คุณต้องรีสตาร์ทเซิร์ฟเวอร์ Apache:

/etc/init.d/apache2 รีสตาร์ท

ตอนนี้คุณสามารถตรวจสอบการทำงานของเพจที่สร้างขึ้นได้

หากต้องการตรวจสอบหน้าคุณอาจต้องเพิ่มบรรทัดลงในไฟล์โฮสต์บนคอมพิวเตอร์ที่กำลังดำเนินการตรวจสอบ:

xxx.xxx.xxx.xxx helloworld.net

ที่ไหน xxx. xxx. xxx. xxx – นี่คือที่อยู่ IP ของเซิร์ฟเวอร์ที่ติดตั้ง Apache ไฟล์โฮสต์ตั้งอยู่:

  • C:\Windows\System32\drivers\etc (ใน Win7);
  • /etc/hosts (บน Debian)

การติดตั้ง PHP

ขั้นตอนต่อไปคือการติดตั้งภาษาสคริปต์ PHP การติดตั้งจะดำเนินการโดยใช้คำสั่ง:

ฉลาด-รับการติดตั้ง php5.1

ตอนนี้คุณต้องตรวจสอบ งานพีพี- ในการดำเนินการนี้ ให้เพิ่มไฟล์ test.php ลงในโฟลเดอร์เนื้อหาไซต์ (/var/www/helloworld.net) ในไฟล์นี้คุณต้องเขียนสิ่งต่อไปนี้:

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

dpkg -l | grep libapache2-mod-php5.1

หากไม่มีโมดูล คุณจะต้องติดตั้ง:

ฉลาดรับการติดตั้ง libapache2-mod-php5.1

คุณสามารถตรวจสอบว่าโมดูลเชื่อมต่ออยู่ในเซิร์ฟเวอร์ Apache หรือไม่ดังนี้:

Ls -l /etc/apache2/mods-enabled/ | grep php5

สิ่งต่อไปนี้ควรปรากฏขึ้น:

Lrwxrwxrwx 1 รูท 27 ก.ย. 10:07 php5.conf -> ../mods-available/php5.conf lrwxrwxrwx 1 รูท 27 ก.ย. 10:07 php5.load -> ../mods-available/php5.load

หากไม่ได้เปิดใช้งานโมดูล เช่นเดียวกับโฮสต์เสมือน คุณสามารถเปิดใช้งานได้ด้วยคำสั่ง

A2enmod php5.1

โมดูลถูกปิดโดยใช้คำสั่ง a2dismod

การติดตั้ง mysql

ขั้นตอนสุดท้ายในการเตรียมสภาพแวดล้อมสำหรับการทำงานกับบริการบนเว็บคือการติดตั้ง mysql DBMS การติดตั้งจะดำเนินการโดยใช้คำสั่ง:

Apt-get ติดตั้ง mysql-server php5-mysql

ในระหว่างขั้นตอนการติดตั้ง คุณจะต้องป้อนรหัสผ่านสำหรับผู้ใช้รูท

หลังจากการติดตั้งเสร็จสมบูรณ์ คุณสามารถตรวจสอบการทำงานของ mysql ได้โดยเชื่อมต่อกับ DBMS เอง

Mysql -u root -p ป้อนรหัสผ่าน: ยินดีต้อนรับสู่การตรวจสอบ MySQL คำสั่งลงท้ายด้วย ; หรือ\ก. รหัสการเชื่อมต่อ MySQL ของคุณคือ 43 เวอร์ชันเซิร์ฟเวอร์: 5.5.49-0+deb8u1 (Debian) ... mysql>

การเตรียมเซิร์ฟเวอร์ขั้นพื้นฐานเสร็จสิ้นแล้ว นอกจากนี้ ในการจัดการฐานข้อมูล คุณยังสามารถติดตั้งยูทิลิตี้ phpmyadmin ได้ด้วย

ฉลาดรับการติดตั้ง phpmyadmin

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

คุณยังสามารถตอบสนองเชิงบวกต่อข้อเสนอเพื่อกำหนดค่าฐานข้อมูลได้

และป้อนรหัสผ่านสำหรับผู้ดูแลระบบฐานข้อมูลหลายครั้ง (รหัสที่ระบุสำหรับผู้ใช้รูทเมื่อติดตั้ง mysql)

หลังจากติดตั้ง phpmyadmin เสร็จเรียบร้อย คุณสามารถตรวจสอบการทำงานของมันได้โดยไปที่ลิงค์ http://localhost/phpmyadmin (หากเบราว์เซอร์เปิดจากเซิร์ฟเวอร์เดียวกัน) หรือตามลิงค์ http://xxx.xxx.xxx.xxx/phpmyadmin จากคอมพิวเตอร์เครื่องอื่นโดยที่ xxx.xxx.xxx xxx คือที่อยู่ IP ของเซิร์ฟเวอร์

ในการเข้าสู่ระบบ คุณต้องใช้การเข้าสู่ระบบและรหัสผ่านที่ระบุเมื่อติดตั้ง mysql