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

อาปาเช่คืออะไร?
Apache เป็นซอฟต์แวร์แอปพลิเคชันที่โดดเด่นมาก เป็นแอปพลิเคชันเว็บเซิร์ฟเวอร์ที่ใช้กันอย่างแพร่หลายที่สุดในโลก โดยมีส่วนแบ่งการตลาดมากกว่า 50% ในตลาดเว็บเซิร์ฟเวอร์เชิงพาณิชย์ Apache เป็นแอปพลิเคชันเว็บเซิร์ฟเวอร์ที่ใช้กันอย่างแพร่หลายที่สุดบนระบบปฏิบัติการที่คล้าย Unix แต่ก็สามารถใช้งานได้บนแพลตฟอร์มเกือบทุกแพลตฟอร์ม เช่น Windowsเช่น OS X, OS/2 เป็นต้น คำว่า Apache มาจากชื่อของชนเผ่าพื้นเมืองอเมริกัน Apache ซึ่งมีชื่อเสียงในด้านทักษะการทำสงครามและการวางแผนกลยุทธ์
Apache Web Server เป็นแอปพลิเคชันเว็บเซิร์ฟเวอร์แบบโมดูลาร์ที่ใช้กระบวนการทำงาน โดยจะสร้างเธรดใหม่ทุกครั้งที่มีการเชื่อมต่อพร้อมกัน มันรองรับคุณสมบัติมากมาย ซึ่งหลายอย่างถูกคอมไพล์เป็นโมดูลแยกต่างหากและขยายฟังก์ชันการทำงานหลัก โดยให้ทุกอย่างตั้งแต่การสนับสนุนภาษาการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ไปจนถึงกลไกการตรวจสอบสิทธิ์ การโฮสต์เสมือน (Virtual hosting) เป็นหนึ่งในคุณสมบัติดังกล่าว ซึ่งช่วยให้ Apache Web Server ตัวเดียวสามารถให้บริการเว็บไซต์ต่างๆ ได้หลายเว็บไซต์จากฮาร์ดแวร์เดียวกัน
วิธีการติดตั้งอาปาเช่
ก่อนที่จะติดตั้ง Apache ควรทำความเข้าใจวิธีการติดตั้งต่างๆ ที่มีอยู่เสียก่อน มีหลายวิธีในการติดตั้งแพ็กเกจหรือแอปพลิเคชัน ดังที่ระบุไว้ด้านล่าง
- หนึ่งในคุณสมบัติที่เปิดกว้างนี้ ข้อดีของแอปพลิเคชันเว็บแบบโอเพนซอร์สคือทุกคนสามารถเตรียมตัวติดตั้งสำหรับสภาพแวดล้อมของตนเองได้ สิ่งนี้ทำให้ผู้จำหน่ายต่างๆ เช่น Debian, Red Hat, FreeBSD และ SUSE สามารถปรับแต่งตำแหน่งไฟล์และการกำหนดค่าของ Apache โดยคำนึงถึงแอปพลิเคชันอื่นๆ ที่ติดตั้งไว้และระบบปฏิบัติการพื้นฐานได้
- นอกจากการติดตั้งผ่านตัวติดตั้งของผู้จำหน่ายแล้ว ยังมีตัวเลือกในการสร้างและติดตั้งจากซอร์สโค้ดได้อีกด้วย การติดตั้ง Apache จากไฟล์ซอร์สโค้ดนั้นไม่ขึ้นอยู่กับแพลตฟอร์ม และใช้งานได้กับระบบปฏิบัติการเกือบทุกระบบ
เว็บเซิร์ฟเวอร์ Apache เป็นแอปพลิเคชันแบบโมดูลาร์ ซึ่งผู้ดูแลระบบสามารถเลือกฟังก์ชันการทำงานที่ต้องการและติดตั้งโมดูลต่างๆ ได้ตามความต้องการ
โมดูลทั้งหมดสามารถคอมไพล์ได้ดังนี้ วัตถุที่ใช้ร่วมกันแบบไดนามิก (DSO คือไฟล์อ็อบเจ็กต์ที่สามารถใช้ร่วมกันได้โดยหลายแอปพลิเคชันขณะที่กำลังทำงานอยู่) ซึ่งแยกต่างหากจากไบนารีหลักของ Apache วิธีการใช้ DSO นั้นแนะนำเป็นอย่างยิ่ง เพราะจะทำให้การเพิ่ม ลบ หรืออัปเดตโมดูลจากไฟล์การกำหนดค่าเซิร์ฟเวอร์ทำได้ง่ายมาก
ติดตั้ง Apache: แพลตฟอร์ม Linux
บนระบบที่ใช้ Red Hat หรือ rpm
หากคุณใช้ระบบปฏิบัติการ Linux ที่ใช้ไฟล์ rpm (Red Hat Package Manager ซึ่งเป็นยูทิลิตี้สำหรับติดตั้งแอปพลิเคชันบนระบบ Linux) เช่น Red Hat, Fedora, CentOS หรือ SUSE คุณสามารถติดตั้งแอปพลิเคชันนี้ได้โดยใช้ Package Manager ของผู้ผลิตแต่ละราย หรือโดยการสร้างไฟล์ rpm โดยตรงจากไฟล์ tarball ต้นฉบับที่มีอยู่
คุณสามารถติดตั้ง Apache ผ่านตัวจัดการแพ็กเกจเริ่มต้นที่มีอยู่ในระบบปฏิบัติการที่ใช้ Red Hat ทั้งหมด เช่น CentOS, Red Hat และ Fedora
[root@amsterdam ~]# yum install httpd
สามารถแปลงไฟล์ tarball ของซอร์สโค้ด Apache ให้เป็นไฟล์ rpm ได้โดยใช้คำสั่งต่อไปนี้
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
จำเป็นต้องติดตั้งแพ็กเกจ -devel บนเซิร์ฟเวอร์ของคุณเพื่อสร้างไฟล์ .rpm จากซอร์สโค้ด
เมื่อคุณแปลงไฟล์ต้นฉบับให้เป็นตัวติดตั้ง rpm แล้ว คุณสามารถใช้คำสั่งต่อไปนี้เพื่อติดตั้ง Apache ได้
[root@amsterdam ~]# rpm -ivh httpd-2.4.4-3.1.x86_64.rpm
หลังจากติดตั้งเสร็จแล้ว เซิร์ฟเวอร์จะไม่เริ่มต้นทำงานโดยอัตโนมัติ ในการเริ่มต้นบริการ คุณต้องใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้บน Fedora, CentOS หรือ Red Hat
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
ติดตั้ง Apache จากแหล่งที่มา
หากแพ็กเกจที่สร้างจากตัวจัดการแพ็กเกจไม่ตรงกับสภาพแวดล้อมของคุณ การติดตั้งจากซอร์สโค้ดจะให้การควบคุมอย่างเต็มที่ การติดตั้ง Apache จากซอร์สโค้ดจำเป็นต้องติดตั้งแพ็กเกจ -devel บนเซิร์ฟเวอร์ของคุณ คุณสามารถค้นหาเวอร์ชันล่าสุดของ Apache และดาวน์โหลดได้จากที่นี่ หน้าดาวน์โหลด Apache อย่างเป็นทางการเมื่อดาวน์โหลดไฟล์ต้นฉบับแล้ว ให้ย้ายไฟล์นั้นไปยังโฟลเดอร์ /usr/local/src
[root@amserversterdam ~] cd /usr/local/src [root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz [root@amserversterdam ~] tar xvf httpd-2.2.26.tar [root@amserversterdam ~] httpd-2.2.26
หากต้องการดูตัวเลือกการกำหนดค่าทั้งหมดที่มีให้สำหรับ Apache คุณสามารถใช้ตัวเลือก ./configure –help ได้ ตัวเลือกการกำหนดค่าที่พบบ่อยที่สุดคือ –prefix={ชื่อไดเร็กทอรีการติดตั้ง}
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure --prefix=/usr/local/apache --enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
ตัวอย่างข้างต้นแสดงการคอมไพล์ Apache ภายในไดเร็กทอรี /usr/local/apache โดยใช้ความสามารถ DSO ตัวเลือก –enable-so อนุญาตให้โหลดโมดูลที่จำเป็นลงใน Apache ในระหว่างการทำงานผ่านกลไก DSO แทนที่จะต้องคอมไพล์ใหม่
เมื่อการติดตั้งเสร็จสมบูรณ์ คุณสามารถเข้าชมหน้าเว็บเริ่มต้นของเว็บเซิร์ฟเวอร์ด้วยเบราว์เซอร์ที่คุณชื่นชอบได้ หากไฟร์วอลล์เปิดใช้งานอยู่บนเซิร์ฟเวอร์ของคุณ คุณต้องเพิ่มข้อยกเว้นสำหรับพอร์ต 80 ในไฟร์วอลล์ของระบบปฏิบัติการ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเปิดพอร์ต 80
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
บริการ iptables บันทึก
คุณสามารถดูค่าเริ่มต้นได้ หน้าจอต้อนรับ Apache2 โดยการเข้าถึงที่อยู่ IP ของเซิร์ฟเวอร์ของคุณ
โฮสต์เสมือนคืออะไร?
เมื่อ Apache ทำงานแล้ว ขั้นตอนต่อไปที่สมเหตุสมผลคือการเรียนรู้วิธีการโฮสต์เว็บไซต์หลายแห่งบนเครื่องเดียวกัน เว็บเซิร์ฟเวอร์ Apache สามารถโฮสต์เว็บไซต์หลายแห่งบนเครื่องเดียวกันได้ เหมือนกัน คุณไม่จำเป็นต้องมีเครื่องเซิร์ฟเวอร์และซอฟต์แวร์ Apache แยกต่างหากสำหรับแต่ละเว็บไซต์ สามารถทำได้โดยใช้แนวคิดของเซิร์ฟเวอร์เดียว โฮสต์เสมือน or วีโฮส
โดเมนใด ๆ ที่คุณต้องการโฮสต์บนเว็บเซิร์ฟเวอร์ของคุณ จะมีรายการแยกต่างหากในไฟล์การกำหนดค่า Apache
ประเภทของ Apache Virtualhost
- โฮสต์เสมือนตามชื่อ
- โฮสต์เสมือนแบบอิงตามที่อยู่หรือแบบอิงตาม IP
โฮสต์เสมือนตามชื่อ
การโฮสต์เสมือนแบบใช้ชื่อโดเมน ใช้สำหรับโฮสต์เว็บไซต์เสมือนหลายแห่งบนที่อยู่ IP เดียวกัน
ในการกำหนดค่าโฮสติ้งเสมือนแบบใช้ชื่อ คุณต้องกำหนดที่อยู่ IP ที่จะใช้รับคำขอจาก Apache สำหรับเว็บไซต์ทั้งหมดที่คุณต้องการ คุณสามารถทำได้โดยใช้คำสั่ง NameVirtualHost ภายในไฟล์การกำหนดค่า Apache นั่นคือ ไฟล์ httpd.conf หรือ apache2.conf
ตัวอย่างโฮสต์เสมือนของ Apache:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
คุณสามารถเพิ่มโฮสต์เสมือนได้มากเท่าที่สภาพแวดล้อมของคุณต้องการ คุณสามารถตรวจสอบไฟล์การกำหนดค่าเว็บของคุณได้โดยใช้คำสั่ง:
[root@amsterdam ~]#httpd -t
Syntax OK
หากไฟล์การกำหนดค่ามีไวยากรณ์ไม่ถูกต้อง จะทำให้เกิดข้อผิดพลาด:
[root@115 conf.d]# httpd -t
Syntax error on line 978 of /etc/httpd/conf/httpd.conf:
Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
โฮสต์เสมือนที่ใช้ IP
ในการตั้งค่าโฮสติ้งเสมือนแบบใช้ IP คุณต้องกำหนดค่าที่อยู่ IP มากกว่าหนึ่งรายการบนเซิร์ฟเวอร์ของคุณ ดังนั้นจำนวน vhost ที่ Apache สามารถให้บริการได้จะขึ้นอยู่กับจำนวนที่อยู่ IP ที่กำหนดค่าไว้บนเซิร์ฟเวอร์ของคุณ หากเซิร์ฟเวอร์ของคุณมีที่อยู่ IP 10 รายการ คุณสามารถสร้างโฮสต์เสมือนแบบใช้ IP ได้ 10 รายการ
ในแผนภาพด้านบน เว็บไซต์สองแห่ง ได้แก่ example1.com และ example2.com ได้รับการกำหนดที่อยู่ IP ที่แตกต่างกัน และใช้งานการโฮสติ้งเสมือนแบบอิงตาม IP
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Apache กับ Nginx: เปรียบเทียบอย่างรวดเร็ว
เมื่อวางแผนการติดตั้งระบบใหม่ Apache มักถูกนำมาเปรียบเทียบกับ Nginx ตารางด้านล่างสรุปประเด็นการตัดสินใจที่พบบ่อยที่สุด
| ปัจจัย | Apache HTTP Server | Nginx |
|---|---|---|
| แบบจำลองการประมวลผล | กระบวนการหรือเธรดต่อการเชื่อมต่อ (prefork, worker, event MPMs) | ขับเคลื่อนโดยเหตุการณ์, อะซิงโครนัส |
| องค์ประกอบ | รองรับการกำหนดค่า .htaccess เฉพาะแต่ละไดเร็กทอรี | การกำหนดค่าแบบรวมศูนย์ ไม่ต้องใช้ไฟล์ .htaccess |
| เนื้อหาแบบไดนามิก | mod_php และโมดูลอื่นๆ ฝังรันไทม์ไว้ในกระบวนการเดียวกัน | พร็อกซีไปยัง PHP-FPM หรือเซิร์ฟเวอร์แอปพลิเคชันภายนอก |
| อัตราการประมวลผลไฟล์คงที่ | แข็งแกร่ง แต่ใช้หน่วยความจำต่อการเชื่อมต่อสูงกว่า | ยอดเยี่ยมภายใต้สภาวะการทำงานพร้อมกันสูงมาก |
| ระบบนิเวศของโมดูล | มีขนาดใหญ่มาก โหลดเป็น DSO ในระหว่างการทำงาน | โมดูลที่คอมไพล์ไว้หรือโมดูลแบบไดนามิก ระบบนิเวศที่เล็กลง |
| กรณีการใช้งานทั่วไป | โฮสติ้งแบบแชร์, เวิร์กโฟลว์ .htaccess, แอปพลิเคชันแบบไดนามิกผสม | Reverse พร็อกซี, การส่งแบบคงที่, เอนด์พอยต์ที่มีการใช้งานพร้อมกันสูง |
Apache ใดที่จำเป็นในการเรียกใช้ไฟล์ Php
การเรียกใช้ไฟล์ PHP บน Apache จำเป็นต้องใช้ mod_php เปิดใช้งานบนเซิร์ฟเวอร์ของคุณแล้ว มันช่วยให้ Apache สามารถตีความไฟล์ .php ได้ โดยมีตัวจัดการ PHP ที่ตีความโค้ด PHP ใน Apache และส่ง HTML ไปยังเว็บเซิร์ฟเวอร์ของคุณ
หากเปิดใช้งาน mod_php บนเซิร์ฟเวอร์ของคุณ คุณจะมีไฟล์ชื่อ php.conf อยู่ในไดเร็กทอรี /etc/httpd/conf.d/ คุณสามารถตรวจสอบได้ด้วยคำสั่งต่อไปนี้:
httpd -M | grep "php5_module"
ผลลัพธ์จะคล้ายกับ:
ตัวจัดการ PHP ใน Apache
- mod_php
- CGI
- FastCGI
- suPHP
mod_php เป็นตัวจัดการ PHP ที่เก่าแก่ที่สุด มันทำให้ PHP เป็นส่วนหนึ่งของ Apache และไม่เรียกใช้กระบวนการ PHP ภายนอกใดๆ โมดูลนี้ถูกติดตั้งโดยค่าเริ่มต้นในที่เก็บของระบบปฏิบัติการ Linux ทุกตัว ดังนั้นการเปิดใช้งานหรือปิดใช้งานจึงทำได้ง่ายมาก
หากคุณกำลังใช้ FastCGI ในฐานะผู้จัดการ PHP ของคุณ คุณสามารถตั้งค่า PHP หลายเวอร์ชันให้ใช้งานโดยบัญชีต่างๆ บนเซิร์ฟเวอร์ของคุณได้
FastCGI นั่นเอง mod_fastcgiเป็นส่วนขยายของ mod_fcgidที่นี่มี mod_fcgid เป็นทางเลือกที่มีประสิทธิภาพสูงกว่า CGI (mod_cgi) โดยจะเริ่มต้นอินสแตนซ์ CGI จำนวนเพียงพอที่จะรองรับคำขอเว็บพร้อมกัน นอกจากนี้ยังใช้ suexec เพื่อรองรับผู้ใช้หลายรายที่มีอินสแตนซ์ PHP ของตนเอง และช่วยเพิ่มความปลอดภัยของเว็บ
การเรียกใช้ไฟล์ Ruby บน Apache จำเป็นต้องเปิดใช้งาน mod_ruby Apache ยังสามารถจัดการไฟล์ Ruby ผ่าน FastCGI ได้อีกด้วย โดยสามารถใช้ Ruby หลายเวอร์ชันได้ด้วยความช่วยเหลือของ mod_fcgid หรือ FastCGI นั่นเอง
นอกจากนี้ คุณยังสามารถติดตั้ง Apache Passenger และกำหนดค่า Apache ให้ใช้งานเพื่อให้บริการ Ruby Pages ได้อีกด้วย
(ผู้โดยสารฟูซิออน หรือที่รู้จักกันในชื่อ “ผู้โดยสาร"เป็นโมดูลเว็บเซิร์ฟเวอร์ฟรีที่ออกแบบมาเพื่อทำงานร่วมกับ Apache และ Nginx"
ขั้นตอนการติดตั้ง mod_ruby บนเซิร์ฟเวอร์ของคุณ:
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
วิธีรัน Ruby ด้วย Apache
เราต้องเพิ่มโมดูล mod_ruby ลงในการตั้งค่า Apache ซึ่งก็คือไฟล์ /etc/httpd/conf.d/ruby.conf และเพิ่มบรรทัดต่อไปนี้
LoadModule ruby_module โมดูล/mod_ruby.so
หากคุณต้องการเปิดใช้งานหรือปิดใช้งานโมดูลเหล่านี้ คุณต้องแก้ไขไฟล์การกำหนดค่า Apache และใส่เครื่องหมายคอมเมนต์หรือลบเครื่องหมายคอมเมนต์ให้กับโมดูลเหล่านั้น โดยมีเงื่อนไขว่าเว็บเซิร์ฟเวอร์นั้นได้คอมไพล์รวมโมดูลเหล่านั้นไว้แล้ว
วิธีรักษาความปลอดภัยเว็บเซิร์ฟเวอร์ Apache
เมื่อ Apache สามารถให้บริการเนื้อหาที่ถูกต้องได้แล้ว สิ่งสำคัญลำดับต่อไปคือการรักษาความปลอดภัย การรักษาความปลอดภัยของเว็บเซิร์ฟเวอร์มีความสำคัญมาก ซึ่งหมายถึงการอนุญาตให้ผู้อื่นเห็นเฉพาะข้อมูลที่ตั้งใจไว้ การปกป้องข้อมูลของคุณ และการจำกัดการเข้าถึง
นี่คือแนวทางปฏิบัติทั่วไปที่ช่วยเพิ่มความปลอดภัยให้กับเว็บเซิร์ฟเวอร์ Apache ของคุณ
1) การซ่อนข้อมูลเวอร์ชัน Apache และระบบปฏิบัติการ
Apache จะแสดงเวอร์ชันและชื่อของระบบปฏิบัติการในข้อผิดพลาด ดังที่แสดงในภาพหน้าจอด้านล่าง
ผู้โจมตีสามารถใช้ข้อมูลนี้เพื่อโจมตีโดยใช้ช่องโหว่ที่เปิดเผยต่อสาธารณะในเวอร์ชันเฉพาะของเซิร์ฟเวอร์หรือระบบปฏิบัติการนั้นๆ
เพื่อป้องกันไม่ให้ Apache แสดงข้อมูลนี้ เราต้องแก้ไขตัวเลือก "ลายเซ็นเซิร์ฟเวอร์" ที่มีอยู่ในไฟล์การกำหนดค่าของ Apache โดยค่าเริ่มต้นจะเป็น "เปิด" เราต้องตั้งค่าเป็น "ปิด"
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
นอกจากนี้ เรายังได้ตั้งค่า “ServerTokens Prod” ซึ่งบอกให้เว็บเซิร์ฟเวอร์ส่งคืนเฉพาะ Apache และไม่แสดงเวอร์ชันหลักและเวอร์ชันย่อยของระบบปฏิบัติการ
หลังจากแก้ไขไฟล์การกำหนดค่าแล้ว คุณต้องรีสตาร์ทหรือรีโหลดเว็บเซิร์ฟเวอร์ Apache เพื่อให้การเปลี่ยนแปลงมีผล
service httpd restart
2) ปิดการใช้งานรายการไดเรกทอรี
หากไดเร็กทอรีรากของเอกสารของคุณไม่มีไฟล์ดัชนี โดยค่าเริ่มต้น เว็บเซิร์ฟเวอร์ Apache ของคุณจะแสดงเนื้อหาทั้งหมดในไดเร็กทอรีรากของเอกสาร
สามารถปิดใช้งานคุณสมบัตินี้สำหรับไดเร็กทอรีที่ระบุได้ผ่านคำสั่ง “Options” ที่มีอยู่ในไฟล์การกำหนดค่า Apache
<Directory /var/www/html> Options -Indexes </Directory>
3) ปิดการใช้งานโมดูลที่ไม่จำเป็น
เป็นเรื่องที่ควรปฏิบัติอย่างยิ่งที่จะปิดใช้งานโมดูลที่ไม่จำเป็นทั้งหมดที่ไม่ใช้งาน คุณสามารถดูรายการโมดูลที่เปิดใช้งานได้ในไฟล์การกำหนดค่า Apache ของคุณ
[root@amsterdam ~]#httpd -M
perl_module (shared)
php5_module (shared)
proxy_ajp_module (shared)
python_module (shared)
ssl_module (shared)
โมดูลหลายตัวที่ระบุไว้สามารถปิดใช้งานได้ เช่น mod_imap, mod_include, mod_info, mod_userdir และ mod_autoindex เนื่องจากแทบไม่มีการใช้งานในเว็บเซิร์ฟเวอร์ที่ใช้งานจริงเลย
vi /etc/httpd/conf/httpd.conf
#LoadModule auth_digest_module modules/mod_auth_digest.so
หลังจากคอมเมนต์โค้ดส่วนนั้นแล้ว ให้บันทึกไฟล์
รีสตาร์ทบริการ Apache ด้วยคำสั่งต่อไปนี้
/etc/init.d/httpd restart
4) การจำกัดการเข้าถึงไฟล์ที่อยู่นอกไดเร็กทอรีรูทของเว็บ
หากคุณต้องการให้แน่ใจว่าไฟล์ที่อยู่นอกไดเร็กทอรีรูทของเว็บจะไม่สามารถเข้าถึงได้ คุณต้องตรวจสอบให้แน่ใจว่าไดเร็กทอรีนั้นถูกจำกัดด้วยตัวเลือก "อนุญาต" และ "ปฏิเสธ" ในไฟล์การกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณ
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
เมื่อคุณจำกัดการเข้าถึงจากภายนอกไดเร็กทอรีรูทของเว็บ คุณจะไม่สามารถเข้าถึงไฟล์ใด ๆ ที่อยู่ในโฟลเดอร์อื่น ๆ บนเว็บเซิร์ฟเวอร์ของคุณได้ คุณจะได้รับรหัสตอบกลับ 404
5) การใช้ mod_evasive เพื่อตอบโต้การโจมตี DoS
หากคุณต้องการปกป้องเว็บเซิร์ฟเวอร์ของคุณจากการโจมตี DoS (Denial of Service) คุณต้องเปิดใช้งานโมดูล mod_evasive โมดูลนี้เป็นโมดูลจากผู้พัฒนาภายนอกที่ตรวจจับการโจมตี DoS และป้องกันไม่ให้เกิดความเสียหายมากเท่ากับที่จะเกิดขึ้นหากปล่อยไว้โดยไม่ตรวจสอบ คุณสามารถดาวน์โหลดได้ด้านล่าง
6) การใช้ mod_security เพื่อเพิ่มความปลอดภัยให้กับ Apache
โมดูลนี้ทำหน้าที่เป็นไฟร์วอลล์สำหรับ Apache และช่วยให้คุณตรวจสอบการรับส่งข้อมูลแบบเรียลไทม์ นอกจากนี้ยังป้องกันเว็บเซิร์ฟเวอร์จากการโจมตีแบบ Brute-force อีกด้วย สามารถติดตั้งโมดูล mod_security ได้โดยใช้ตัวจัดการแพ็กเกจเริ่มต้นของระบบปฏิบัติการของคุณ
7) การจำกัดขนาดคำขอ
Apache ไม่มีข้อจำกัดใดๆ เกี่ยวกับขนาดโดยรวมของคำขอ HTTP ซึ่งอาจนำไปสู่การโจมตีแบบ DoS ได้ คุณสามารถจำกัดขนาดของคำขอได้โดยใช้คำสั่ง Apache “LimitRequestBody” ภายในแท็ก <Directory> โดยสามารถกำหนดค่าได้ตั้งแต่ 0 ถึง 2 GB (2147483647 ไบต์) ตามความต้องการของคุณ
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
รูปแบบบันทึก Apache
เมื่อเซิร์ฟเวอร์ได้รับการรักษาความปลอดภัยอย่างเข้มงวดแล้ว การตรวจสอบบันทึก (log review) จะกลายเป็นเครื่องมือหลักในการตรวจจับปัญหา บันทึกของ Apache ให้ข้อมูลโดยละเอียดซึ่งช่วยในการตรวจจับปัญหาทั่วไปของเซิร์ฟเวอร์
ในการสร้างบันทึกการเข้าถึง จำเป็นต้องเปิดใช้งานโมดูล mod_log_config
มีคำสั่งสามคำสั่งในไฟล์การกำหนดค่าของ Apache
- TransferLog: การสร้างไฟล์บันทึก
- รูปแบบการบันทึก: การระบุรูปแบบที่กำหนดเอง
- CustomLog: การสร้างและจัดรูปแบบไฟล์บันทึกข้อมูล
คำสั่ง TransferLog มีอยู่ในไฟล์การกำหนดค่าของ Apache และจะหมุนเวียนไฟล์บันทึกของโฮสต์เสมือนตามพารามิเตอร์ที่ตั้งไว้
<VirtualHost www.example.com> ServerAdmin webmaster@example.com DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog /usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost>
รูปแบบบันทึก Apache สองประเภท
- รูปแบบบันทึกทั่วไป
- รูปแบบบันทึกรวม
คุณสามารถเปิดใช้งานได้โดยการแก้ไขไฟล์การกำหนดค่า Apache ซึ่งก็คือ apache2.conf (Debian/Ubuntuหรือ httpd.conf (สำหรับระบบที่ใช้ rpm)
รูปแบบบันทึกทั่วไป
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
บันทึกทั่วไปที่สร้างโดย Apache
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
รูปแบบบันทึกรวม
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
ที่นี่
- %h คือโฮสต์ระยะไกล
- %l คือรหัสประจำตัวของผู้ใช้ที่กำหนดโดย identd
- %u คือชื่อผู้ใช้ที่กำหนดโดยการตรวจสอบสิทธิ์ HTTP
- %t คือเวลาที่เซิร์ฟเวอร์ประมวลผลคำขอเสร็จสิ้น
- %r คือบรรทัดคำขอจากไคลเอนต์ (“รับ / HTTP/1.0”)
- %>s คือรหัสสถานะที่เซิร์ฟเวอร์ส่งไปยังไคลเอ็นต์ (500, 404 เป็นต้น)
- %b คือขนาดของการตอบกลับไปยังไคลเอ็นต์ (หน่วยเป็นไบต์)
- Referer คือหน้าเว็บที่เชื่อมโยงมายังหน้านี้ URL.
- User-agent คือสตริงการระบุเบราว์เซอร์
บันทึกรวมที่สร้างโดย Apache:
199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Custom Log จะสร้างไฟล์บันทึกแยกต่างหากสำหรับแต่ละ Virtual Host บนเซิร์ฟเวอร์ของคุณ คุณต้องระบุตัวเลือกนี้ในส่วนของ Virtual Host ในไฟล์การกำหนดค่า
คุณสามารถดูการกำหนดค่าโฮสต์เสมือนได้ด้านล่าง บันทึกที่สร้างขึ้นจะปรับแต่งเฉพาะสำหรับโฮสต์เสมือนนั้น และรูปแบบจะถูกรวมเข้าด้วยกัน
ตั้งค่าเว็บเซิร์ฟเวอร์สำหรับใช้งานจริงเครื่องแรกของคุณ
เมื่อการตั้งค่า การรักษาความปลอดภัย และการบันทึกข้อมูลเสร็จสมบูรณ์แล้ว ขั้นตอนสุดท้ายคือการนำทุกอย่างมารวมกันให้เป็นสภาพแวดล้อมที่พร้อมใช้งานจริง
1. เพื่อให้เว็บเซิร์ฟเวอร์ทำงานได้อย่างต่อเนื่อง คุณจำเป็นต้องมีเซิร์ฟเวอร์เฉพาะ ปม (อินสแตนซ์ทางกายภาพ เสมือน หรือบนคลาวด์) ที่ทำงานบนระบบปฏิบัติการ Linux, Unix, Windows, macOSฯลฯ
2. เว็บเซิร์ฟเวอร์ต้องมี การเชื่อมต่อเครือข่ายโดยตรง และ ที่อยู่ IP แบบคงที่ กำหนดค่าไว้บนนั้น
3. มันต้องมีทุกอย่าง โมดูล จำเป็นสำหรับการแสดงผลเว็บเพจ หากเว็บเซิร์ฟเวอร์ประมวลผลหน้าเว็บ PHP จะต้องเปิดใช้งานโมดูล PHP
- นอกจากนี้ยังต้องการสิ่งที่ดีอีกด้วย โปรแกรมป้องกันไวรัส แอปพลิเคชันที่ได้รับการกำหนดค่าและทำงานเพื่อรักษาความปลอดภัยของเว็บเซิร์ฟเวอร์จากการโจมตีของมัลแวร์หรือไวรัส นอกจากนี้คุณยังต้องการกลไกในการ... ปรับปรุง ตั้งค่าโปรแกรมป้องกันไวรัสหรือโปรแกรมป้องกันมัลแวร์เป็นประจำโดยไม่ต้องมีการแทรกแซงด้วยตนเอง เพื่อให้ได้ประโยชน์สูงสุด
- หากคุณมีโดเมนหลายร้อยโดเมนที่ต้องโฮสต์บนเว็บเซิร์ฟเวอร์ของคุณ คุณต้องดำเนินการตามขั้นตอนต่อไปนี้ ข้อจำกัดเกี่ยวกับโควต้าพื้นที่ไฟล์ระบบสำหรับแต่ละโดเมน จำนวนฐานข้อมูลที่แต่ละโดเมนสามารถสร้างได้ จำนวนบัญชีอีเมลต่อโดเมน เป็นต้น
- หากเว็บเซิร์ฟเวอร์ของคุณได้รับการตั้งค่าไว้แล้ว บริการเว็บโฮสติ้งแบบแชร์ จำเป็นต้องจำกัดจำนวนผู้ใช้งานบนเว็บเซิร์ฟเวอร์ของคุณผู้ใช้งานโฮสติ้งแบบแชร์ควรมีสิทธิ์การใช้งานขั้นต่ำที่สุด เพื่อป้องกันไม่ให้เกิดความเสียหายกับไฟล์สำคัญหรือทำให้เซิร์ฟเวอร์ล่มทั้งหมด Apache ไม่มีฟังก์ชันดังกล่าว และต้องใช้แอปพลิเคชันของบุคคลที่สามและการปรับแต่งระบบปฏิบัติการเพิ่มเติมเพื่อให้สามารถทำเช่นนั้นได้
- หากคุณกำลังเพิ่มก โดเมนใหม่ บนเว็บเซิร์ฟเวอร์ของคุณ จำเป็นต้องแก้ไขรายการการกำหนดค่าหลายร้อยรายการเพื่อเปิดใช้งานคุณสมบัติทั้งหมดสำหรับโดเมนที่เพิ่มเข้ามา
- หากโดเมนที่โฮสต์โดเมนใดโดเมนหนึ่งต้องการ การตั้งค่า PHP ที่แตกต่างกัน เมื่อเทียบกับโดเมนอื่นๆ การนำสิ่งนี้ไปใช้ในส่วนหลักของ Apache นั้นซับซ้อนมากและต้องปรับแต่งเว็บเซิร์ฟเวอร์ของคุณอย่างกว้างขวาง
- เว็บเซิร์ฟเวอร์ที่ใช้งานจริงจำเป็นต้องมี ไฟร์วอลล์ เพื่อบล็อกการรับส่งข้อมูลที่ไม่พึงประสงค์ซึ่งอาจทำให้เซิร์ฟเวอร์ของคุณทำงานหนักเกินไป การดำเนินการ ไอพีเทเบิล การกำหนดกฎผ่านบรรทัดคำสั่งนั้นซับซ้อน จำเป็นต้องมีความเชี่ยวชาญในสภาพแวดล้อมหลักของ Linux หรือ Unix เพื่อเขียนกฎไฟร์วอลล์ที่มีประสิทธิภาพในการบล็อกการรับส่งข้อมูลที่ไม่พึงประสงค์ IPTABLE ใช้โมดูล netfilter เป็นพื้นฐาน ซึ่งเป็นไฟร์วอลล์ระดับระบบปฏิบัติการที่ช่วยให้ผู้ดูแลระบบสามารถสร้างกฎสำหรับการรับส่งข้อมูลขาเข้าและขาออกบนเซิร์ฟเวอร์ได้
- เว็บเซิร์ฟเวอร์ที่ใช้งานจริงต้องการแอปพลิเคชันที่แตกต่างกันหลายอย่างเช่น อีเมล, FTP สำหรับการอัปโหลดไฟล์ และ ระบบชื่อโดเมน สำหรับโดเมนที่จอดไว้ การจัดการแอปพลิเคชันทั้งหมดเหล่านี้บนระบบ Linux หรือ Unix หลัก จำเป็นต้องใช้ความเชี่ยวชาญในเทคโนโลยีที่เกี่ยวข้อง
ดังนั้น อาจกล่าวได้ว่าการจัดการเว็บเซิร์ฟเวอร์สำหรับหลายโดเมนเป็นงานที่ซับซ้อนมาก และต้องแก้ไขไฟล์การกำหนดค่าหลายร้อยไฟล์ รวมถึงปรับแต่งแต่ละแอปพลิเคชันเพื่อให้ได้ผลลัพธ์ที่ต้องการ การแก้ไขปัญหาการกำหนดค่าที่ไม่ถูกต้องจะเป็นเรื่องยากมากสำหรับผู้เริ่มต้น
โซลูชันที่ใช้ Cpanel หรือซอฟต์แวร์ที่คล้ายกัน
cPanel เป็นเครื่องมือที่ช่วยให้คุณจัดการเว็บเซิร์ฟเวอร์ได้อย่างง่ายดายด้วยรูปแบบกราฟิกcPanel มีจุดประสงค์เพื่อให้บริการโฮสติ้งจำนวนมากที่ใช้งานและกำหนดค่าได้ง่าย ช่วยลดอุปสรรคทางเทคนิคในการเข้าถึงการจัดการโฮสติ้งและเว็บเซิร์ฟเวอร์ ทำให้งานที่ซับซ้อนง่ายขึ้น มีเว็บอินเทอร์เฟซที่ใช้งานง่ายและมีประโยชน์มากมาย ซึ่งช่วยในการทำงานด้านการดูแลระบบทั่วไปที่จำเป็นต่อการใช้งานเว็บเซิร์ฟเวอร์
cPanel รวบรวมซอฟต์แวร์เวอร์ชันของตัวเอง
หากคุณต้องคอมไพล์เว็บเซิร์ฟเวอร์ (Apache) ใหม่บนแพลตฟอร์ม Linux ทั่วไป คุณต้องเลือกหรือค้นหาโมดูลที่จำเป็นด้วยตนเอง cPanel มีฟังก์ชัน EasyApache ซึ่งเป็นวิธีการคอมไพล์เว็บเซิร์ฟเวอร์โดยใช้สคริปต์
นอกจากจะให้บริการเว็บแล้ว ยัง... Mailรวมถึง DNS, FTP และบริการอื่นๆ อีกมากมายที่จำเป็นสำหรับเว็บแอปพลิเคชันของคุณ
งานต่างๆ ที่ต้องการความเชี่ยวชาญด้านระบบโฮสติ้ง Linux หรือ Unix หลักๆ เช่น การติดตั้ง SSL, การคอมไพล์ Apache ใหม่ด้วยโมดูล PHP ต่างๆ, การอัปเดตความปลอดภัยของเว็บไซต์, การกำหนดค่ากฎ IPTABLE ที่มีประสิทธิภาพ, การเพิ่มผู้ใช้ FTP, การสร้างบัญชีอีเมลสำหรับแต่ละโดเมน, การสแกนไดเร็กทอรีหลักของเว็บไซต์ด้วยโปรแกรมป้องกันไวรัส และการสร้างฐานข้อมูล สามารถทำได้อย่างง่ายดายด้วย cPanel
โปรแกรมนี้มีสคริปต์มากมายที่ใช้แก้ไข ติดตั้ง และแก้ไขปัญหาต่างๆ ในงานด้านการดูแลระบบทั่วไป
ระบบนี้มีฟังก์ชันสำรองข้อมูลและกู้คืนข้อมูล ช่วยลดความจำเป็นในการคัดลอกไฟล์ไปยังพื้นที่จัดเก็บข้อมูลสำรองด้วยตนเอง หากคุณกำลังสำรองข้อมูลโดเมนของคุณ cPanel จะสร้างไฟล์ tar ซึ่งประกอบด้วยโฟลเดอร์รูทเอกสาร บัญชีอีเมลและอีเมล บัญชี FTP ฐานข้อมูล บันทึก DNS และแอปพลิเคชันอื่นๆ
นอกจากนี้ ยังมีเอกสารประกอบที่ครบถ้วน และมีชุมชนผู้ใช้งานขนาดใหญ่ที่คุณสามารถพูดคุยและหาทางแก้ไขปัญหาต่างๆ ได้
ดังนั้นใครๆ ก็พูดแบบนั้นได้ cPanel เป็นแอปพลิเคชันที่มีประสิทธิภาพสำหรับการจัดการเว็บเซิร์ฟเวอร์ของคุณ พร้อมคุณสมบัติที่จำเป็นครบครัน มีอินเทอร์เฟซที่ใช้งานง่ายสำหรับการจัดการโดเมนของคุณ และกลไกที่จะช่วยให้คุณหลีกเลี่ยงความซับซ้อนของการจัดการเว็บเซิร์ฟเวอร์หลัก
มีผลิตภัณฑ์คู่แข่งมากมายสำหรับ cPanel เช่น Plesk, ISPConfig, Ajenti, Kloxo, Open Panel และ ZPanel

















