สร้างโฮสต์เสมือน Apache การทำงานกับโฮสต์เสมือน สร้างโฮสต์เสมือนของ Apache

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

การเชื่อมต่อโฮสต์เสมือน Apache บน Windows

โฮสต์เสมือนสามารถเชื่อมโยงกับชื่อโฮสต์ (เช่น study.loc) IP (เช่น 127.0.0.3) และพอร์ต (*:81) วิธีที่สองและสามเป็นวิธีที่ดีในการที่เราไม่ต้องจัดการกับความละเอียด DNS ของชื่อโฮสต์เสมือนของเรา (ซึ่งมักจะทำได้โดยการเปลี่ยนไฟล์ระบบหรือใช้เซิร์ฟเวอร์ DNS ส่วนบุคคลพร้อมบันทึกที่เหมาะสม)

ลองดูทั้งสามวิธี แต่ขอเริ่มต้นด้วยการเตรียมตัวเล็กน้อย มาสร้างไดเร็กทอรีที่เราจะวางโฮสต์เสมือนของเรา ตัวอย่างเช่น, . และในไดเร็กทอรีนี้ เราจะสร้างโฟลเดอร์ใหม่สามโฟลเดอร์: host1, host2, host3. ในแต่ละรายการ ให้สร้างไฟล์ดัชนี ( index.html) พร้อมเนื้อหาใดๆ ที่จะช่วยให้คุณระบุได้ว่าคุณไปยังโฮสต์ที่ถูกต้อง ฉันจะสร้างรายการต่อไปนี้ในไฟล์ดัชนีโฮสต์ที่เกี่ยวข้อง สำหรับโฮสต์แรก:

คุณได้เข้าถึงโฮสต์1

สำหรับวินาที:

คุณมาถึงโฮสต์2

สำหรับที่สาม:

คุณมาถึงโฮสต์3

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

ในไฟล์

แสดงความคิดเห็น (หรือลบ) บรรทัดเริ่มต้นในไฟล์

โฮสต์เสมือนที่ใช้ IP

โฮสต์เสมือนที่ผูกกับ IP ต้องการหลาย IP อย่างไรก็ตาม คุณสามารถใช้เคล็ดลับนี้ได้บนเซิร์ฟเวอร์ภายในของคุณ เนื่องจากใน IPv4 127.0.0.1 จะสะท้อนที่อยู่ใดๆ ระหว่าง 127.0.0.0 ถึง 127.255.255.255

ลองพิมพ์ 127.0.0.1 ในเบราว์เซอร์ของคุณ จากนั้นลอง 127.0.0.2, 127.0.0.3, 127.0.0.4, 127.0.0.5 เป็นต้น อย่างที่คุณเห็น เรามี IP จำนวนมาก และคุณสามารถผูกโฮสต์เสมือนกับแต่ละ IP ได้

เพิ่มในไฟล์ C:\Server\bin\Apache24\conf\extra\httpd-vhosts.confบรรทัดต่อไปนี้:

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล] DocumentRoot "C:/Server/data/htdocs/virthosts/host2/"

รีสตาร์ทเว็บเซิร์ฟเวอร์ (รีสตาร์ทหลังจากเปลี่ยนไฟล์การกำหนดค่าทุกครั้ง):

C:\Server\bin\Apache24\bin\httpd.exe -k restart

ในเวลาเดียวกัน การตั้งค่าของเราจะไม่มีผลกับ IP 127.0.0.* อื่น ๆ เช่นเดียวกับ localhost

โฮสต์เสมือนที่ใช้พอร์ต (ไซต์ต่าง ๆ บนพอร์ตต่าง ๆ)

ตอนนี้เพิ่มไปยังไฟล์ C:\Server\bin\Apache24\conf\extra\httpd-vhosts.confบรรทัด:

ฟัง81 ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล] DocumentRoot "C:/Server/data/htdocs/virthosts/host3/"

คุณสามารถเปลี่ยนพอร์ตเป็นพอร์ตอื่นที่ไม่ได้ใช้ในระบบของคุณ คุณยังระบุ IP เฉพาะแทนเครื่องหมายดอกจันได้อีกด้วย รีสตาร์ทและเปิด http://localhost:81 ในเบราว์เซอร์ของคุณ:

โฮสต์เสมือนตามชื่อโฮสต์

วิธีถัดไปต้องแก้ไขไฟล์ C:\Windows\System32\drivers\etc\hosts(หรือสร้างบันทึกในเซิร์ฟเวอร์ DNS ของคุณเอง) ลองนึกถึงชื่อโฮสต์ใดๆ โดยเฉพาะชื่อที่ไม่ตรงกับชื่อจริง ตัวอย่าง supersite, study.loc, video.ofme ผมจะยกตัวอย่าง study.loc. เปิดไฟล์ C:\Windows\System32\drivers\etc\hostsและเพิ่มที่นั่น:

127.0.0.1 study.loc

และยื่น C:\Server\bin\Apache24\conf\extra\httpd-vhosts.confเพิ่มบรรทัด:

ชื่อเซิร์ฟเวอร์ localhost DocumentRoot "C:/Server/data/htdocs/" ชื่อเซิร์ฟเวอร์ study.loc DocumentRoot "C:/Server/data/htdocs/virthosts/host1/"

รีสตาร์ทเซิร์ฟเวอร์และนำทางในเบราว์เซอร์ของคุณเพื่อ:

โดเมนย่อยได้รับการกำหนดค่าในทำนองเดียวกัน (dir1.study.loc, dir2.study.loc, dir3.localhost เป็นต้น)

การสร้างโฮสต์เสมือน / โดเมนย่อยโดยอัตโนมัติ

ในไฟล์ C:\Server\bin\Apache24\conf\httpd.confค้นหาและยกเลิกหมายเหตุบรรทัดต่อไปนี้:

LoadModule vhost_alias_module modules/mod_vhost_alias.so

และหากคุณยังไม่ได้ดำเนินการ บรรทัด:

รวม conf/extra/httpd-vhosts.conf

ในไดเรกทอรี C:\Server\data\htdocs\virthosts\สร้างโฟลเดอร์ localhost(ตอนนี้เนื้อหาจะปรากฏขึ้นเมื่อคุณพิมพ์ http://localhost ในเบราว์เซอร์)

ในการยื่น C:\Server\bin\Apache24\conf\extra\httpd-vhosts.confเพิ่มบรรทัดต่อไปนี้

VirtualDocumentRoot "C:/Server/data/htdocs/virthosts/%1/"

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

ตอนนี้โฟลเดอร์ใด ๆ ที่สร้างขึ้นใน C:\Server\data\htdocs\virthosts\จะสามารถใช้ได้ตามที่อยู่ของแบบฟอร์ม

http://foldername.localhost

การกำหนดค่า SSL สำหรับ Apache บน Windows (การย้ายจาก HTTP เป็น HTTPS)

หากคุณต้องการใช้ SSL ในเว็บเซิร์ฟเวอร์ Apache ใน Windows คุณต้องมีไฟล์สามไฟล์: *.key, *.csr และ *.crt หากคุณซื้อใบรับรอง SSL ที่ถูกต้องสำหรับเว็บไซต์ของคุณ ไฟล์เหล่านี้ควรส่งถึงคุณหลังจากการซื้อ อาจมีมากกว่านั้น - อาจมีใบรับรองระดับกลาง

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

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

เปิดพรอมต์คำสั่งของ Windows ( ชนะ+xจากนั้นเลือก " บรรทัดคำสั่ง") ที่พรอมต์คำสั่ง ให้ป้อนคำสั่ง:

Cd C:\Server\bin\Apache24\bin\ set OPENSSL_CONF=C:\Server\bin\Apache24\conf\openssl.cnf openssl.exe genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out localhost.key openssl.exe req -ใหม่ -key localhost.key -out localhost.csr

เมื่อคุณป้อนคำสั่งสุดท้าย ข้อความแจ้งเป็นภาษาอังกฤษจะปรากฏขึ้น การแปลของพวกเขาดังต่อไปนี้

คุณจะถูกขอให้ป้อนข้อมูลที่จะรวมอยู่ในคำขอใบรับรองของคุณ สิ่งที่คุณกำลังจะป้อนคือสิ่งที่เรียกว่า Distinguished Name หรือ DN มีฟิลด์ค่อนข้างน้อยแต่คุณสามารถเว้นว่างไว้ได้ สำหรับบางฟิลด์จะมีค่าเริ่มต้น ถ้าคุณป้อน "." ฟิลด์จะเว้นว่างไว้ -----

คุณจะถูกขอให้ป้อนข้อมูลที่จะรวมอยู่ในคำขอใบรับรองของคุณ สิ่งที่คุณจะต้องป้อนเรียกว่า Distinguished Name หรือ DN มีเพียงไม่กี่ฟิลด์ที่สามารถเว้นว่างไว้ได้ บางฟิลด์จะมีค่าเริ่มต้น หากคุณป้อน "." ฟิลด์จะเว้นว่างไว้

ชื่อประเทศ (รหัส 2 ตัวอักษร) :

ชื่อประเทศสองตัวอักษร (รหัสสองตัวอักษร)

ชื่อรัฐหรือจังหวัด (ชื่อเต็ม) :

ชื่อรัฐหรือจังหวัด/จังหวัด (ชื่อเต็ม)

ชื่อท้องที่ (เช่น เมือง) :

ชื่อสถานที่ (เช่น เมือง)

ชื่อองค์กร (เช่น บริษัท) :

ชื่อองค์กร (เช่น บริษัท)

ชื่อหน่วยขององค์กร (เช่น ส่วน) :

หน่วยองค์กร (เช่น แผนก)

ชื่อสามัญ (เช่น เซิร์ฟเวอร์ FQDN หรือชื่อของคุณ):

ชื่อสามัญ (เช่น เซิร์ฟเวอร์ FQDN หรือชื่อของคุณ) คุณสามารถป้อน localhost

ที่อยู่อีเมล :

ที่อยู่ทางไปรษณีย์

โปรดป้อนแอตทริบิวต์ "พิเศษ" ต่อไปนี้เพื่อส่งพร้อมกับคำขอใบรับรอง รหัสผ่านท้าทาย : ชื่อบริษัทที่ไม่บังคับ :

โปรดป้อนแอตทริบิวต์ "ไม่บังคับ" ต่อไปนี้เพื่อส่งพร้อมกับคำขอใบรับรองของคุณ

  • ขอรหัสผ่าน:
  • ชื่อบริษัทเพิ่มเติม:

ตอนนี้รันคำสั่ง:

Opensl.exe x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt

ด้วยเหตุนี้ ไฟล์ใหม่สามไฟล์จึงควรปรากฏในไดเร็กทอรี C:\Server\bin\Apache24\bin\:

  • localhost.key
  • localhost.csr
  • localhost.crt

ในจำนวนนี้เราต้องการเพียงสอง:

  • localhost.key
  • localhost.crt

เมื่อใช้ใบรับรองเพื่อสร้างเว็บไซต์จริง การสร้างโฮสต์เสมือนด้วยการตั้งค่าดังต่อไปนี้จะสะดวกกว่า:

ชื่อเซิร์ฟเวอร์ www.example.com SSLEngine บน SSLCertificateFile "/path/to/www.example.com.crt" SSLCertificateKeyFile "/path/to/www.example.com.key"

ทำตามคำแนะนำด้านล่างเพื่อกำหนดค่า SSL บนเว็บเซิร์ฟเวอร์ Apache ในเครื่องของคุณบน Windows

ในแคตตาล็อก C:\เซิร์ฟเวอร์\สร้างโฟลเดอร์ใหม่ ใบรับรองและย้ายไฟล์ไปที่นั่น localhost.keyและ localhost.crt.

ในไดเรกทอรี C:\Server\bin\Apache24\conf\เปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความ httpd.conf. ที่ด้านล่างสุด ให้เพิ่มบรรทัดต่อไปนี้:

LoadModule ssl_module modules/mod_ssl.so ฟัง 443 DocumentRoot "c:/Server/data/htdocs/" ชื่อเซิร์ฟเวอร์ localhost:443 ServerAdmin [ป้องกันอีเมล] ErrorLog "$(SRVROOT)/logs/error-ssl.log" TransferLog "$(SRVROOT)/logs/access-ssl.log" SSLEngine บน SSLCertificateFile "C:\Server\certs\localhost.crt" SSLCertificateKeyFile "C:\ เซิร์ฟเวอร์\ใบรับรอง\localhost.key"

โปรดทราบว่าคุณอาจต้องแก้ไขคำสั่งต่อไปนี้

  • DocumentRoot- ระบุเส้นทางไปยังไซต์บนเซิร์ฟเวอร์
  • ชื่อเซิร์ฟเวอร์- ระบุชื่อโฮสต์ของคุณ หากไม่ใช่ localhost

โปรดทราบว่าเราไม่ได้เพียงแค่ใส่บรรทัดเหล่านี้ในไฟล์ปรับแต่ง แต่เรารวมไว้ในคอนเทนเนอร์ โฮสต์เสมือน. ความจริงก็คือถ้าสิ่งนี้ไม่ทำอย่างนั้นคำสั่ง SSL Engine onจะเปิดใช้งาน SSL สำหรับเว็บเซิร์ฟเวอร์ทั้งหมด และแม้ว่าคุณจะพยายามเปิดไซต์บนพอร์ต 80 การเชื่อมต่อเหล่านี้จะถือว่าเป็น HTTPS ซึ่งจะทำให้เกิด "คำขอไม่ถูกต้อง เบราว์เซอร์ของคุณส่งคำขอที่เซิร์ฟเวอร์นี้ไม่เข้าใจ" ด้วยเหตุนี้ การตั้งค่าเหล่านี้จึงอยู่ในคอนเทนเนอร์โฮสต์เสมือน โปรดทราบว่ามีการใช้คำหลัก _default_ นั่นคือ คำขอทั้งหมดในพอร์ต 443 จะถูกรวบรวมที่นี่ หากไม่ได้มีไว้สำหรับโฮสต์อื่นที่มีการกำหนดค่าไว้ด้วย นั่นคือ หากคุณต้องการ คุณสามารถสร้างโฮสต์เสมือนเพิ่มเติมเพื่อทำงานกับ HTTPS ได้ ในขณะที่แทนที่จะ _ค่าเริ่มต้น_ระบุ IP โฮสต์หรืออักขระ * (ดาว).

หลังจากนั้นให้บันทึกการเปลี่ยนแปลง ปิดไฟล์และรีสตาร์ทเว็บเซิร์ฟเวอร์

หากต้องการตรวจสอบการเปลี่ยนแปลง ให้ไปที่ที่อยู่ (โปรโตคอล HTTPS) เนื่องจากใบรับรองเป็นแบบลงนามเอง ข้อความต่อไปนี้จะปรากฏขึ้น:

ใบรับรองที่ลงนามเองไม่น่าเชื่อถือ และข้อผิดพลาดนี้ไม่สามารถลบออกได้หากไม่เพิ่มใบรับรองดังกล่าวในใบรับรองที่เชื่อถือได้ คลิก "ดำเนินการต่อ" เพื่อดำเนินการต่อ

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

ไฟล์ .bat สำหรับการจัดการเซิร์ฟเวอร์ (การติดตั้งเซิร์ฟเวอร์ การเริ่มต้น การรีสตาร์ท ฯลฯ)

สร้างไฟล์ RUN.batและคัดลอกลงไป:

ขยาย

:start @ECHO OFF TITLE จัดการเซิร์ฟเวอร์ Apache ในเครื่อง %TIME:~0.8% %DATE% echo ผู้แต่ง: Alexey Miloserdov (miloserdov.?p=21 echo ++++++++++++++++++) ++++++++++++++++++++++++++++++++++++++++++++++++++ ++ + ECHO เลือกการดำเนินการที่ต้องการด้วยเซิร์ฟเวอร์: ECHO ====================================== === ===================================== ECHO = 11 - เรียกใช้เซิร์ฟเวอร์หนึ่งครั้ง ไม่มีการติดตั้ง = ECHO = 12 - เริ่มเซิร์ฟเวอร์หากติดตั้งบริการแล้ว = ECHO = 13 - รีสตาร์ทเซิร์ฟเวอร์ (Apache เท่านั้น) = ECHO = 14 - รีสตาร์ทเซิร์ฟเวอร์ (Apache + MySQL) = ECHO ========== ==== ============================================= === ================ ECHO = 21 - การติดตั้งบริการพร้อมการเริ่มต้นเซิร์ฟเวอร์ = ECHO = 22 - การติดตั้งเซิร์ฟเวอร์เท่านั้น (ไม่เริ่มทำงาน) = ECHO ========= === ============================================== == ================= ECHO = 31 - เซิร์ฟเวอร์หยุด = ECHO ======================== == =============================================== = ==== ECHO = 41 - หยุดและลบบริการเซิร์ฟเวอร์ = ECHO === ================================================== ========================= ECHO = 51 - การเริ่มต้น ApacheMonitor.exe = ECHO =============== = =============================================== == ============= ECHO = 61 - ตรวจสอบว่าโปรแกรมใดกำลังฟังอยู่ที่พอร์ต 80 = ECHO ======================== =============================================== == =====ECHO=71 - เปิด http://localhost=ECHO=72 - เปิดโฟลเดอร์ไซต์=ECHO ====================== ==== ================================================= == ECHO = 0 - ทางออก = ECHO ========================================= ================================== เสียงสะท้อน ++++++ ++++++++ ++++++++++++++++++++++++++++++++++++++++++++ ++++++ +++++ set /p ACTIONLEVEL=ป้อนหมายเลขตัวเลือกการเปิดใช้งานแล้วกด ENTER: ECHO Operation #%ACTIONLEVEL% กำลังดำเนินการ! รอ... IF "%ACTIONLEVEL%"=="0" (ออก) IF "%ACTIONLEVEL%"=="11" (CLS echo ผลลัพธ์ของการดำเนินการ: echo +++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++ ++++ ECHO ON START /B c:\Server\bin\Apache24\bin\httpd.exe START /B c:\Server\bin\mysql-8.0\bin\mysqld.exe --defaults-file= C: \Server\bin\mysql-8.0\my.ini --standalone --console echo +++++++++++++++++++++++++++++ ++++ ++++++++++++++++++++++++++++++++++++++ หยุดชั่วคราว ไปที่เริ่ม) IF "%ACTIONLEVEL %"=="12 " (CLS สะท้อนผลลัพธ์ของการทำงาน: echo +++++++++++++++++++++++++++++++++++ ++++++++ ++++++++++++++++++++++++++ ECHO บน c:\Server\bin\Apache24\bin\httpd.exe -k start ECHO หากไม่มีข้อความด้านบนข้อผิดพลาดหมายความว่า Apache กำลังเรียกใช้ net start mysql echo +++++++++++++++++++++++++++++++++ +++++++++ +++++++++++++++++++++++++++ หยุดชั่วคราว ไปที่เริ่ม) IF "%ACTIONLEVEL%"=="13 " (CLS สะท้อนผลลัพธ์ของการทำงาน: echo +++++++++++++++++++++++++++++++++++++++ +++++++++++ +++++++++++++++++ ECHO บน c:\Server\bin\A pache24\bin\httpd.exe -k restart ECHO หากไม่มีข้อผิดพลาดข้างต้น Apache ได้รีสตาร์ทแล้ว echo ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++ หยุดชั่วคราว ไปที่เริ่ม) IF "%ACTIONLEVEL%"= ="14" (CLS echo RESULT OF OPERATION: echo ++++++++ ++++++++++++++++++++++++++++++++ ++++++++++++++++++ +++++++++++++ ECHO บน c:\Server\bin\Apache24\bin\httpd.exe -k รีสตาร์ท ECHO หากข้างต้นไม่มีข้อความแสดงข้อผิดพลาดหมายความว่า apache รีสตาร์ท net stop mysql net start mysql echo ++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ +++ หยุดชั่วคราว ไปเริ่มต้น) IF "%ACTIONLEVEL%"=="21" (CLS echo RESULT of OPERATION: echo ++++++++++++++++++++++++) ++++++++++++++++++++++++++++++++++++++++++++++ ECHO บน c:\ Server\bin\Apache24\bin\httpd.exe -k ติดตั้ง c:\Server\bin\Apache24 \bin\httpd.exe -k start c:\Server\bin\mysql-8 0\bin\mysqld --install net start mysql echo ++++++++++++++++++++++++++++++++++++++ ++ +++++++++++++++++++++++++++++++ หยุดชั่วคราวไปที่เริ่มต้น) IF "%ACTIONLEVEL%"=="22" (CLS ผลการดำเนินการ echo : echo ++++++++++++++++++++++++++++++++++++++++++ +++ +++++++++++++++++++ ECHO บน c:\Server\bin\Apache24\bin\httpd.exe -k ติดตั้ง c:\Server\bin\mysql- 8.0\bin \mysqld --install echo ++++++++++++++++++++++++++++++++++++++ +++++ +++++++++++++++++++++++ หยุดชั่วคราว ไปที่การเริ่มต้น) IF "%ACTIONLEVEL%"=="31" (CLS echo ผลลัพธ์ของการดำเนินการ: เสียงสะท้อน ++++ +++++++++++++++++++++++++++++++++++++++++++++ +++++++ +++++++++++++ ECHO บน c:\Server\bin\Apache24\bin\httpd.exe -k stop net stop mysql echo +++++++ +++++++ +++++++++++++++++++++++++++++++++++++++++++ +++++++++ +++ หยุดชั่วคราว ไปที่เริ่ม) IF "%ACTIONLEVEL%"=="41" (CLS echo RESULT OF OPERATION: echo +++++++++++++++ +++++++++++ +++++++++++++++++++++++++++++++++++++++ ++++++ ECHO บน c:\Server\ bin\Apache24\bin\httpd.exe -k stop c:\Server\bin\Apache24\ bin\httpd.exe -k ถอนการติดตั้ง net stop mysql c:\Server\bin\mysql-8.0\bin\mysqld --remove echo +++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++ ++ หยุดชั่วคราว ไปเริ่มต้น) IF "%ACTIONLEVEL%"=="51" (CLS echo OPERATION RESULT: echo ++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++ +++++++++++++++++ +++++++++++++++++++++ ECHO ON start c:\Server\bin\Apache24\bin\ ApacheMonitor.exe echo ApacheMonitor.exe กำลังทำงาน! เสียงสะท้อน +++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++ หยุดชั่วคราว ไปที่เริ่ม) IF "%ACTIONLEVEL%"=="71" (CLS echo ผลลัพธ์ของการทำงาน: echo +++++++ +++++++++++++++++++++++++++++++++++++++++++++++ ++++ ++++++++ ECHO ON เริ่มต้น http://localhost echo +++++++++++++++++++++++++++++ ++++++ ++++++++++++++++++++++++++++++++++++ ไปที่เริ่มต้น) ถ้า "%ACTIONLEVEL% "=="72" (CLS echo ผลลัพธ์ของการทำงาน: echo ++++++++++++++++++++++++++++++++++++ ++++++++++ +++++++++++++++++++++++ ECHO ON start C:\Server\data\htdocs\ echo ++++ ++++++++++ ++++++++++++++++++++++++++++++++++++++++ ++++++++++++ +++ goto start) IF "%ACTIONLEVEL%"=="61" (CLS echo RESULT OF OPERATION: echo +++++++++++++) ++++++++++++++ ++++++++++++++++++++++++++++++++++++ ++++++++ ECHO ON สำหรับ /f "tokens= 1,2,3,4,5*" %%i in ("netstat -aon ^| findstr ":80" ^| findstr /i listen" ) ทำ echo %%j %%l & @tasklist | findstr %% m echo ++++++++++++++++++++++++++++++++ ++++++++++++++++ +++++++++++++++++++++ หยุด goto star t) หยุดชั่วคราวออก

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

เปิดใช้งานโมดูลสำหรับแสดงข้อมูลและสถานะเซิร์ฟเวอร์

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

ในไฟล์ C:\Server\bin\Apache24\conf\httpd.confค้นหาและยกเลิกหมายเหตุบรรทัดต่อไปนี้:

LoadModule status_module modules/mod_status.so LoadModule info_module modules/mod_info.so รวม conf/extra/httpd-info.conf

ในไฟล์ C:\Server\bin\Apache24\conf\extra\httpd-info.confเปลี่ยนบรรทัดที่กำหนด (หรือเพียงแค่ลบออกแล้วแทนที่ด้วยบรรทัดที่แนะนำ) เพื่อรับ:

สถานะเซิร์ฟเวอร์ SetHandler ต้องการโฮสต์ localhost ต้องการ ip::1 ข้อมูลเซิร์ฟเวอร์ SetHandler ต้องการโฮสต์ localhost ต้องการ ip::1

Uncomment บรรทัด:

ขยายสถานะเปิด

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

ขณะนี้ เมื่อเข้าถึง http://localhost/server-info และ http://localhost/server-status คุณจะสามารถดูข้อมูลและสถานะของเซิร์ฟเวอร์แบบเรียลไทม์ได้

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

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

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

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

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

การฝึกอบรม

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

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

sudo apt-get update sudo apt-get ติดตั้ง apache2

หลังจากทำตามขั้นตอนข้างต้นเรียบร้อยแล้ว ก็เริ่มกันเลย

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

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

ขั้นตอนที่หนึ่ง - สร้างแผนผังไดเรกทอรี

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

สำหรับโดเมนที่ให้ไว้เป็นตัวอย่าง คำสั่งสร้างไดเร็กทอรีจะมีลักษณะดังนี้:

sudo mkdir -p /var/www/example.com /public_html sudo mkdir -p /var/www/test.com /public_html

โดเมนที่คุณจะให้บริการด้วย VPS ของคุณจะถูกเน้นด้วยสีแดง

ขั้นตอนที่สอง - การกำหนดสิทธิ์

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

sudo chown -R $USER:$USER /var/www/example.com /public_html sudo chown -R $USER:$USER /var/www/test.com /public_html

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

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

sudo chmod -R 755 /var/www

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

ขั้นตอนที่สาม - สร้างหน้าทดสอบสำหรับโฮสต์เสมือนแต่ละตัว

เราได้สร้างโครงสร้างไดเร็กทอรีและกำหนดค่าการอนุญาตสำหรับพวกเขา ได้เวลาโพสต์เนื้อหาแล้ว
ณ จุดนี้ เราแค่ต้องตรวจสอบให้แน่ใจว่าทุกอย่างได้รับการตั้งค่าและทำงานอย่างถูกต้อง ดังนั้นเราจะใช้ไฟล์ index.html อย่างง่ายสำหรับแต่ละโฮสต์
มาเริ่มกันที่ example.com คุณสามารถสร้าง index.html และเปิดในโปรแกรมแก้ไขข้อความได้โดยใช้คำสั่ง:

นาโน /var/www/example.com/public_html/index.html

ภายในไฟล์นี้ เราจะวางโค้ด html เล็กๆ ไว้ ซึ่งทำให้เราเข้าใจได้ว่าเราลงจอดบนไซต์ที่เราต้องการแล้ว ตัวอย่างเช่นเช่นนี้:

ยินดีต้อนรับสู่ Example.com!

การทำงาน! โฮสต์เสมือนของ example.com ได้รับการตั้งค่าอย่างถูกต้อง!



บันทึกและปิดไฟล์
มาทำสำเนาของไฟล์ที่สร้างขึ้นใหม่เพื่อใช้เป็นฐานสำหรับไฟล์ที่คล้ายกันของโดเมน test.com:

cp /var/www/example.com /public_html/index.html /var/www/test.com /public_html/index.html

มาเปิดสำเนาของไฟล์และเปลี่ยนค่าบางอย่างในนั้น:

นาโน /var/www/test.com/public_html/index.html ยินดีต้อนรับสู่ Test.com!

การทำงาน! โฮสต์เสมือน test.com ได้รับการตั้งค่าอย่างถูกต้อง!



บันทึกและปิดไฟล์ ตอนนี้เรามีหน้าสำหรับทดสอบการทำงานของ Virtual Hosts

ขั้นตอนที่สี่ – การสร้างไฟล์การกำหนดค่าโฮสต์เสมือน

ไฟล์การกำหนดค่าโฮสต์เสมือนคือไฟล์ที่ระบุวิธีที่ Apache ควรทำงานเมื่อส่งคำขอไปยังโดเมนต่างๆ
โดยค่าเริ่มต้น Apache มีไฟล์ดังกล่าวอยู่แล้วหนึ่งไฟล์ 000-default.conf เราสามารถใช้เป็นตัวอย่างและจุดเริ่มต้นได้
เราต้องคัดลอก 000-default.conf สำหรับโดเมนแรก ปรับแต่งตามความต้องการของเรา จากนั้นคัดลอกไฟล์ที่แก้ไขแล้วและกำหนดค่าสำหรับโดเมนที่สอง ทำการปรับเปลี่ยนเล็กน้อย เป็นที่น่าสังเกตว่าชื่อไฟล์การกำหนดค่าโฮสต์เสมือนทั้งหมดใน Ubuntu จะต้องลงท้ายด้วย .conf

มาสร้างไฟล์กำหนดค่าแรกกัน

เริ่มต้นด้วยการคัดลอกไฟล์ 000-default.conf สำหรับโดเมนแรกของเรา:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com .conf

เปิดไฟล์ใหม่ในเท็กซ์เอดิเตอร์ที่มีสิทธิ์ผู้ใช้รูท:

sudo nano /etc/apache2/sites-available/example.com .conf

คุณควรเห็นบางอย่างเช่นภาพต่อไปนี้ (ความคิดเห็นถูกลบออกจากไฟล์เพื่อความชัดเจน):

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล] DocumentRoot /var/www/html ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log รวมกัน

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

ขั้นแรก ให้เปลี่ยนพารามิเตอร์ ServerAdmin ใส่ที่อยู่อีเมลที่ผู้ดูแลไซต์จะได้รับข้อความ:

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล]

หลังจากนั้น คุณต้องเพิ่มพารามิเตอร์สองตัว อันแรก ServerName กำหนดโดเมนที่โฮสต์เสมือนนี้จะจัดการคำขอ อันที่สองคือ ServerAlias ​​กำหนดชื่ออื่นสำหรับไซต์ของคุณซึ่งจะได้รับการปฏิบัติเหมือนกับโดเมนหลัก ซึ่งมีประโยชน์ ตัวอย่างเช่น สำหรับการจับคู่โดเมนหลักและโดเมน www.*** ของคุณ

ชื่อเซิร์ฟเวอร์ example.com ServerAlias ​​​​www.example.com

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

DocumentRoot /var/www/example.com/public_html

หลังจากปรับแต่งแล้ว ไฟล์ของเราควรมีลักษณะดังนี้:

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล]ชื่อเซิร์ฟเวอร์ example.com ServerAlias ​​​​www.example.com DocumentRoot /var/www/example.com /public_html ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log รวมกัน

มาบันทึกและปิดมัน

คัดลอก Virtual Host แรกและกำหนดค่าให้จัดการโดเมนที่สอง

เมื่อไฟล์การกำหนดค่าแรกพร้อมแล้ว เราสามารถคัดลอกและตั้งค่าสำหรับโดเมนที่สองได้

sudo cp /etc/apache2/sites-available/example.com .conf /etc/apache2/sites-available/test.com .conf

มาเปิดไฟล์ใหม่ด้วยสิทธิ์รูทกันเถอะ:

sudo nano /etc/apache2/sites-available/test.com .conf

ตอนนี้ เราต้องเปลี่ยนการตั้งค่าทั้งหมด กำหนดค่าสำหรับโดเมนที่สอง มันควรจะเป็นดังนี้:

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล]ชื่อเซิร์ฟเวอร์ test.com ServerAlias ​​​​www.test.com DocumentRoot /var/www/test.com /public_html ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log รวมกัน

เมื่อเสร็จแล้ว ให้บันทึกและปิดไฟล์

ขั้นตอนที่ห้า - เปิดใช้งานโฮสต์เสมือน

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

ใช้เครื่องมือ a2ensite เพื่อเปิดใช้งานโฮสต์ของคุณ ตัวอย่างการใช้งาน:

sudo a2ensite example.com .conf sudo a2ensite test.com .conf

หลังจากรันคำสั่งเหล่านี้ คุณต้องปิดการใช้งานโฮสต์มาตรฐาน:

sudo a2dissite 000-default.conf

คุณต้องรีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงมีผล:

sudo systemctl รีสตาร์ท apache2

ในการรีสตาร์ท คุณสามารถใช้คำสั่งอื่น:

sudo service apache2 รีสตาร์ท

คำสั่งนี้จะใช้งานได้ แต่คุณอาจไม่ได้ผลลัพธ์หากคุณลองใช้กับการกระจายอื่นที่ไม่ใช่ systemctl

ขั้นตอนที่หก – การตั้งค่าไฟล์โฮสต์ (ไม่บังคับ)

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

ตรวจสอบให้แน่ใจว่าคุณกำลังตั้งค่าคอมพิวเตอร์ในพื้นที่ไม่ใช่ VPS คุณต้องมีสิทธิ์ของผู้ดูแลระบบหรือต้องทราบรหัสผ่านสำหรับบัญชีผู้ดูแลระบบเพื่อทำการเปลี่ยนแปลงไฟล์โฮสต์ หากคุณกำลังใช้ระบบปฏิบัติการ Linux หรือ Mac ให้รันคำสั่งต่อไปนี้:

sudo nano /etc/hosts

หากคุณใช้ระบบปฏิบัติการ Windows คุณจะพบไฟล์โฮสต์ได้ที่:

C:\Windows\System32\drivers\etc\hosts

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

คุณต้องเพิ่มโดเมนที่ใช้ในคู่มือนี้และที่อยู่ IP สาธารณะของ VPS ของคุณลงในไฟล์ สำหรับโดเมนที่ฉันใช้ สมมติว่าที่อยู่ IP ของ VPS คือ 111.111.111.111 รายการที่จะเพิ่มจะมีลักษณะดังนี้:

127.0.0.1 localhost 111.111.111.111 example.com 111.111.111.111 test.com

บันทึกและปิดไฟล์ ตอนนี้คำขอทั้งหมดสำหรับโดเมน example.com และ test.com จะถูกเปลี่ยนเส้นทางไปยัง VPS 111.111.111.111 ของเราโดยอัตโนมัติ และรับการปฏิบัติโดยโฮสต์เสมือนเสมือนว่าเราใช้โดเมนจริง

ขั้นตอนที่เจ็ด - ตรวจสอบการทำงาน

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

ในทำนองเดียวกัน เมื่อคุณค้นหาโดเมน test.com คุณจะเห็นหน้าที่เกี่ยวข้อง:

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

บทสรุป

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

สวัสดีผู้อ่านบล็อกทุกคน ในบทความนี้ ฉันจะอธิบายขั้นตอนการตั้งค่าโฮสต์เสมือนใน Apache บน Ubuntu 14 ฉันคิดว่าขั้นตอนที่อธิบายไว้สามารถใช้กับ Ubuntu เวอร์ชันก่อนหน้าหรือใหม่กว่าได้

บทนำ

ต่อไป เราจะพิจารณาสร้างโฮสต์เสมือนสำหรับชื่อโดเมน example.com. สำหรับโดเมน Cyrillic คุณต้องแปลชื่อโดเมนเป็น punycode เช่น การใช้บริการนี้:

ขั้นตอนที่ 1 สร้างโครงสร้างไดเร็กทอรี

ในขั้นตอนนี้ คุณต้องสร้างโครงสร้างไดเร็กทอรีที่มีข้อมูลไซต์ที่จะแสดงต่อผู้ใช้

ไดเร็กทอรีรากของเรา (หรือรูทเอกสาร) จะถูกตั้งค่าให้ใช้ไดเร็กทอรีภายในไดเร็กทอรี /var/www. ที่นี่เราจะสร้างไดเร็กทอรีสำหรับโฮสต์เสมือน example.comที่เราวางแผนจะปรับแต่ง เราจะสร้างไดเร็กทอรีที่ซ้อนกัน public_htmlซึ่งจะมีไฟล์ไซต์

สร้างไดเร็กทอรีที่จำเป็นด้วยคำสั่งต่อไปนี้:

sudo mkdir -p /var/www/ example.com/public_html

ขั้นตอนที่ 2 กำหนดสิทธิ์การเข้าถึง

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

sudo chown -R $USER:$USER /var/www/ example.com/public_html

ตัวแปร $USER มีชื่อผู้ใช้ที่คุณเข้าสู่ระบบอยู่ในปัจจุบัน ผู้ใช้ปัจจุบันเป็นเจ้าของไดเร็กทอรี public_html ซึ่งเราจะจัดเก็บไฟล์ไซต์

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

sudo chmod -R 755 /var/www

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

ขั้นตอนที่ 3 สร้างหน้าสาธิตสำหรับโฮสต์

เมื่อโครงสร้างไดเร็กทอรีพร้อมแล้ว เราก็สามารถสร้างเนื้อหาเพื่อแสดงต่อผู้เยี่ยมชมไซต์ได้ example.com.

เรากำลังดำเนินการนี้เพื่อการทดสอบเท่านั้น ดังนั้นหน้าทดสอบจึงเรียบง่ายมาก

ในโฟลเดอร์ public_htmlโดเมน example.comสร้างไฟล์ index.php:

นาโน /var/www/ example.com/public_html/index.php

ในไฟล์นี้ มาสร้างสคริปต์ PHP แบบง่าย ๆ เพื่อให้แน่ใจว่าทุกอย่างทำงาน:

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

ขั้นตอนที่ 4 สร้างไฟล์โฮสต์เสมือน

ไฟล์โฮสต์เสมือนกำหนดการกำหนดค่าและกำหนดวิธีที่เว็บเซิร์ฟเวอร์ Apache จะตอบสนองต่อคำขอไปยังโดเมนต่างๆ

การกำหนดค่าเริ่มต้นของ Ubuntu ต้องการให้ทุกไฟล์โฮสต์เสมือนลงท้ายด้วยนามสกุล .conf. โดยค่าเริ่มต้น Apache มีไฟล์โฮสต์เสมือน 000-default.confซึ่งเราสามารถใช้เป็นจุดเริ่มต้นได้ คัดลอกไฟล์นี้เพื่อสร้างไฟล์โฮสต์เสมือนสำหรับโดเมนของเราตามนั้น example.com.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ example.com.conf

มาเปิดไฟล์ใหม่นี้ในตัวแก้ไขรูท:

Sudo nano /etc/apache2/sites-available/ example.com.conf

ไฟล์จะมีลักษณะดังนี้:

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล] DocumentRoot /var/www/html ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log รวมกัน

ก่อนอื่น เราต้องเปลี่ยนคำสั่ง ServerAdmin เป็นที่อยู่อีเมลที่ผู้ดูแลเว็บไซต์จะได้รับอีเมล

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล]example.com

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

ชื่อเซิร์ฟเวอร์ example.comชื่อแทนเซิร์ฟเวอร์ www.example.com

สิ่งเดียวที่เหลือในการเปลี่ยนแปลงในไฟล์โฮสต์เสมือนพื้นฐานคือตำแหน่งของไดเร็กทอรีรากของโดเมนนี้ เราได้สร้างไดเร็กทอรีที่จำเป็นแล้ว ดังนั้นสิ่งที่เราต้องทำคือเปลี่ยน directive DocumentRootเพื่อให้อ้างอิงถึงไดเร็กทอรีที่เราสร้าง:

DocumentRoot /var/www/ example.com/public_html

ไฟล์โฮสต์เสมือนของเราตอนนี้ควรมีลักษณะดังนี้:

ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล] ชื่อเซิร์ฟเวอร์ example.comชื่อแทนเซิร์ฟเวอร์ www.example.com DocumentRoot /var/www/ example.com/public_html ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log รวมกัน

บันทึกและปิดไฟล์

ขั้นตอนที่ 5. เปิดใช้งานโฮสต์เสมือนใหม่

ตอนนี้เราได้สร้างไฟล์โฮสต์เสมือนแล้ว example.comคุณต้องเปิดใช้งานไซต์โดยใช้ยูทิลิตี้ a2ensite:

Sudo a2ensite example.com.conf

เมื่อเสร็จแล้ว คุณต้องรีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงมีผล:

sudo service apache2 รีสตาร์ท

ขั้นตอนที่ 6. การทดสอบผลลัพธ์

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

http://example.com

คุณควรเห็นหน้าที่คล้ายกัน:

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

บทความนี้อธิบายวิธีการสร้างโฮสต์เสมือนหลายเครื่องบนเครื่องท้องถิ่น ผู้ดูแลเว็บจะต้องสามารถดำเนินการนี้ได้เมื่อพัฒนาไซต์หลายแห่ง

ขั้นแรกให้คำอธิบายเล็กน้อย

โฮสต์เสมือนคืออะไร? นี่คือการตั้งค่าเว็บเซิร์ฟเวอร์ในพื้นที่ที่เว็บเซิร์ฟเวอร์เริ่มตอบสนองต่อชื่อที่กำหนด ไม่ใช่แค่ IP 127.0.0.1 หรือชื่อแทน localhost นั่นคือเมื่อตั้งค่าโฮสต์เสมือนด้วยชื่อ site.ru เว็บเซิร์ฟเวอร์ในพื้นที่จะเริ่มตอบสนองต่อ URL นี้ในเบราว์เซอร์

เว็บเซิร์ฟเวอร์สามารถกำหนดค่าได้ด้วยชื่อไซต์หลายชื่อ จากนั้นเว็บเซิร์ฟเวอร์จะเริ่มออกหน้าที่เกี่ยวข้องกับไดเร็กทอรีที่มีข้อมูลสำหรับชื่อที่ระบุ ตัวอย่างเช่น มีโฮสต์เสมือนสองแห่ง - site.ru และ money.com ไดเร็กทอรีการทำงานสำหรับ site.ru คือ /var/www/site.ru และสำหรับ money.com ไดเร็กทอรีการทำงานคือ /var/www/money.com หากตอนนี้คุณเข้าถึง site.ru ในเบราว์เซอร์ เว็บเซิร์ฟเวอร์จะออกหน้าจากไดเร็กทอรี /var/www/site.ru และหากคุณเข้าถึง money.com เว็บเซิร์ฟเวอร์จะสร้างหน้าจาก /var/www / ไดเรกทอรี money.com วิธีการตั้งค่าดังกล่าวเขียนไว้ในบทความนี้

ใน เดเบียน 5.x.x, เซิร์ฟเวอร์ Apache-2 พร้อมที่จะทำงานกับโฮสต์เสมือนทันทีหลังการติดตั้ง แต่กำหนดค่าให้โฮสต์เดียว (ค่าเริ่มต้น) ซึ่งมีให้ใช้งานเป็น localhost ในการเพิ่มโฮสต์เสมือนอื่น ให้ทำดังต่อไปนี้:

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

2. ในไฟล์นี้ คุณต้องป้อน (โดยประมาณ) ต่อไปนี้:

ชื่อเซิร์ฟเวอร์ studio.ru
ServerAlias ​​​​www.studio.ru

DocumentRoot "/var/www/studio"


อนุญาตจากทุกคน
ตัวเลือก+ดัชนี

  • ServerName, ServerAlias ​​​​คือ URL ที่พิมพ์ในเบราว์เซอร์ที่โฮสต์เสมือนนี้ควรตอบสนอง
  • DocumentRoot เป็นไดเร็กทอรีรากของโฮสต์เสมือนนี้
  • ส่วนไดเร็กทอรี - การตั้งค่าสิทธิ์การเข้าถึงไดเร็กทอรีที่ระบุ ในกรณีนี้ มีการกำหนดค่าสิทธิ์การเข้าถึงไดเรกทอรีรากของโฮสต์เสมือน

คุณต้องใส่ใจกับพารามิเตอร์ของส่วน VirtualHost ในที่นี้เขียนว่า "*:80" แต่อย่าลืมดูไฟล์ /etc/apache2/sites-available/defaultและดูว่าพารามิเตอร์ใดเขียนไว้ในส่วน VirtualHost เดียวกัน ถ้า "*" เขียนขึ้น เราต้องเขียน "*" ในไฟล์ด้วย

กล่าวอีกนัยหนึ่ง คุณต้องดูไฟล์ /etc/apache2/ports.conf ที่นั่นคุณต้องค้นหาคำสั่ง:

ชื่อ VirtualHost *:80

ค่าใดที่อยู่ในคำสั่งนี้ (ในที่นี้ - "*: 80") ค่าดังกล่าวต้องระบุเป็นพารามิเตอร์ของส่วน VirtualHost ในไฟล์ทั้งหมดของไดเร็กทอรี /etc/apache2/sites-available มิฉะนั้น โฮสต์จะไม่เป็น มองเห็นได้.

ข้อผิดพลาดทั่วไปคือเมื่อ "*.80" ถูกเขียนใน /etc/apache2/ports.conf และ "*" ถูกเขียนในไฟล์โฮสต์ในส่วน VirtualHost แม้ว่ามาสก์ "*" จะครอบคลุมมาสก์ "*.80" แต่ Apache ไม่เข้าใจสัญกรณ์นี้ ด้วยการตั้งค่านี้ เซิร์ฟเวอร์ Apache จะไม่พบโฮสต์ที่ถูกต้อง!

3. เราต้องไปที่ไดเร็กทอรี /etc/apache2/sites-enabled และสร้างลิงค์สัญลักษณ์ที่นั่นไปยังไฟล์ที่เราสร้างขึ้น:

# cd /etc/apache2/sites-enabled
# ln -s /etc/apache2/sites-available/studio.ru.conf studio.ru.conf

4. คุณต้องรีสตาร์ท Apache ด้วยคำสั่ง:

# /etc/init.d/apache2 stop
กำลังหยุดเว็บเซิร์ฟเวอร์: apache2 ... กำลังรอ

# /etc/init.d/apache2 start
เริ่มต้นเว็บเซิร์ฟเวอร์: apache2

ในเวลาที่รีสตาร์ท คุณต้องดูว่าข้อความแสดงข้อผิดพลาดหรือคำเตือนปรากฏในคอนโซลหรือไม่ ใน Apache ที่กำหนดค่าตามปกติ ไม่ควรออกข้อความแสดงข้อผิดพลาด (และแม้แต่คำเตือน!)

5. ขั้นตอนสุดท้ายคือการเปิดไฟล์ /etc/hosts และเขียนบรรทัดใหม่พร้อมกับเนื้อหาต่อไปนี้:

127.0.0.1 studio.ru

ซึ่งจะทำให้เบราว์เซอร์สามารถเข้าถึง Apache ในพื้นที่แทนที่จะค้นหาเว็บไซต์บนอินเทอร์เน็ต

ทุกอย่างการกำหนดค่าเสร็จสิ้น ไม่จำเป็นต้องรีบูต

คุณสามารถป้อน URL ในเบราว์เซอร์ http://studio.ru/index.htmlและไฟล์ควรเปิดขึ้น /var/www/studio/index.html(ถ้าเขาเป็น) ดังนั้นจึงเป็นที่ชัดเจนว่าโฮสต์เสมือนได้ถูกสร้างขึ้นและแสดงในเบราว์เซอร์แล้ว โฮสต์เสมือนอื่นๆ ถูกเพิ่มในลักษณะเดียวกัน

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

ที่พบบ่อยที่สุดคือการใช้โฮสต์เสมือนตามชื่อที่ผูกกับที่อยู่ IP เดียว ดังนั้นจึงสามารถจัดเก็บเว็บไซต์จำนวนมากไว้ใน IP เดียวได้

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

ใน หมวกสีแดง/CentOS/Fedora:

/etc/httpd/conf/httpd.conf

เดเบียน/อูบุนตู:

/etc/apache2/apache2.conf

วิธีที่สองในการปรับแต่งคือใช้ของคุณเอง .confไฟล์ที่ควรวางไว้ตามเส้นทาง:

ใน หมวกสีแดง/CentOS/Fedora:

/etc/httpd/conf.d/filename.conf,

เดเบียน/อูบุนตู:

/etc/apache2/conf.d/filename.conf.

มักจะอยู่ในไฟล์ปรับแต่ง httpd.confหรือ apache2.confส่วนการจัดการโฮสต์เสมือนอยู่ที่ส่วนท้ายสุด ในการเพิ่มโฮสต์เสมือน คุณจะต้องเปิดไฟล์นี้และยกเลิกการแสดงข้อคิดเห็น (remove # ) คำสั่ง ชื่อ VirtualHost *:80(ข้อโต้แย้ง * ย่อมาจาก "ชื่อโฮสต์ทั้งหมด") หากวิธีการวางการกำหนดค่าใน conf.dดังนั้นคำสั่งที่ระบุจึงไม่จำเป็นต้องไม่มีความคิดเห็น แต่ควรกำหนดไว้ในไฟล์ที่สร้างขึ้นเอง

หลังจาก ชื่อVirtualHostตามด้วยบล็อก VirtualHost *:80. บล็อกดังกล่าวเป็นการกำหนดค่าโฮสต์เสมือนของคุณ ทั้งหมดมีลักษณะดังนี้:

ชื่อ VirtualHost *:80 AllowOverride All Options All ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล] DocumentRoot /var/www/site1.ru ชื่อเซิร์ฟเวอร์ site1.ru ServerAlias ​​​​www.site1.ru ErrorLog บันทึก/site1.ru-error_log CustomLog บันทึก/site1.ru-access_log ทั่วไป ผู้ดูแลระบบเซิร์ฟเวอร์ [ป้องกันอีเมล] DocumentRoot /var/www/site2.ru ชื่อเซิร์ฟเวอร์ site2.ru ServerAlias ​​​​www.site2.ru บันทึกบันทึกข้อผิดพลาด/site2.ru-error_log บันทึก CustomLog/site2.ru-access_log ทั่วไป

ที่นี่ทำการตั้งค่าทั้งหมดสำหรับโฮสต์เสมือน รวมทั้งเปิดหรือปิดตัวเลือกบางอย่าง

มาดูกันดีกว่าว่าแต่ละคำสั่งด้านบนมีหน้าที่รับผิดชอบอะไร

1. คำสั่ง ผู้ดูแลระบบเซิร์ฟเวอร์ระบุที่อยู่อีเมลของผู้ดูแลระบบเซิร์ฟเวอร์ ซึ่งส่งการแจ้งเตือนทั้งหมดจากโฮสต์เกี่ยวกับการดูแลระบบ

2. คำสั่ง DocumentRootระบุไดเร็กทอรีรากด้วยไฟล์ไซต์ที่จะออกโดยเว็บเซิร์ฟเวอร์ไปยังไคลเอนต์ (เบราว์เซอร์)

3. คำสั่ง ชื่อเซิร์ฟเวอร์กำหนดชื่อของโฮสต์ตามคำขอซึ่งไฟล์ที่อยู่ใน DocumentRoot ควรจะออก

4. คำสั่ง ชื่อแทนเซิร์ฟเวอร์ทำหน้าที่ระบุชื่อโฮสต์ทางเลือก (นามแฝง นามแฝง) ที่จะตอบสนอง

5. คำสั่ง บันทึกข้อผิดพลาดระบุไฟล์บันทึกข้อผิดพลาดสำหรับแต่ละโฮสต์และ บันทึกที่กำหนดเอง– ไฟล์บันทึกสำหรับทุกอย่างยกเว้นข้อผิดพลาด

ก่อนบล็อกกับโฮสต์เสมือน อย่างที่คุณสังเกตเห็น มีรายการอื่น:

AllowOverride All

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

AuthConfig– อนุญาตให้ใช้คำสั่งการให้สิทธิ์ (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, etc..)

FileInfo– อนุญาตให้ใช้คำสั่งที่ควบคุมประเภทเอกสาร (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority เป็นต้น)

ดัชนี- อนุญาตให้ใช้คำสั่งเพื่อควบคุมการจัดทำดัชนีไดเรกทอรี (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName เป็นต้น)

ขีดจำกัด- อนุญาตให้ใช้คำสั่งควบคุมการเข้าถึง (อนุญาต ปฏิเสธ และสั่งการ)

ตัวเลือก- อนุญาตให้ใช้คำสั่งที่คุณสามารถควบคุมคุณสมบัติเฉพาะของไดเรกทอรี (ตัวเลือกและ XBitHack)

นี่เป็นหนึ่งในแนวทางที่เป็นไปได้มากมายที่คุณสามารถดูได้จากเว็บไซต์ของผู้พัฒนา

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

apachectl configtest apachectl -S apachectl -d

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

หมวกแดง/CentOS/Fedora:

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

/etc/init.d/ httpd restart

เดเบียน/อูบุนตู:

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

/etc/init.d/apache2 restart

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

ชื่อเซิร์ฟเวอร์เริ่มต้น DocumentRoot /var/www/default

ดังนั้นคำขอที่ไม่ถูกต้องทั้งหมดจะถูกส่งไปตามเส้นทาง var/www/defaultซึ่งคุณสามารถสร้างหน้าดัชนีที่จะรายงานข้อความค้นหาที่ไม่ถูกต้อง

นอกจากนี้ ตามค่าเริ่มต้น Apache จะไม่สามารถเข้าถึงโฮมไดเร็กทอรีของคุณ เฉพาะไดเร็กทอรี /var/www. หากคุณกำลังใช้งาน SElinux บนเซิร์ฟเวอร์ของคุณ ให้ใช้คำสั่งต่อไปนี้เพื่อให้ Apache สามารถเข้าถึงโฮมไดเร็กทอรี:

Setsebool -P httpd_enable_homedirs 1

Setsebool -P apache2_enable_homedirs 1

เพื่อให้ Apache สามารถเข้าถึงไดเร็กทอรีเฉพาะ เช่น to /home/mydirควรใช้คำสั่ง:

Chcon -R -t httpd_sys_content_t /home/mydir

Chcon -R -t apache2_sys_content_t /home/mydir

มีคนพิการ เซลินุกซ์เพื่อให้ Apache สามารถเข้าถึงโฮมไดเร็กทอรีของเว็บไซต์เฉพาะ คุณจะต้องแก้ไขไฟล์การกำหนดค่าด้วยตนเอง ( /etc/httpd/conf/httpd.confใน CentOS/Fedoraหรือ /etc/apache2/apache2.confใน เดเบียน/อูบุนตู).

หลังจากเปิดไฟล์การกำหนดค่าเว็บเซิร์ฟเวอร์เพื่อทำการแก้ไข ให้ค้นหาบรรทัด DocumentRoot(เมื่อใช้ตัวแก้ไข nano สามารถพบได้โดยใช้แป้นพิมพ์ลัด ctrl+w). แทนที่ค่าในเครื่องหมายคำพูด /var/www/htmlไปยังพาธสัมบูรณ์ไปยังโฮมไดเร็กทอรีของไซต์ (เช่น /home/username/site.com). บันทึกการเปลี่ยนแปลงของคุณและออกจากเมนูตัวแก้ไข ( Ctrl+Oและ Ctrl+X). รีสตาร์ท Apache

หากคุณมีระบบปฏิบัติการติดตั้งอยู่บน VPS . ของคุณ เดเบียน/อูบุนตูแล้วแก้ไขบรรทัด DocumentRootจำเป็นในไฟล์ /etc/apache2/sites-available/default. เปิดเพื่อแก้ไขและแทนที่ค่าเริ่มต้น /var/wwwไปยังเส้นทางที่แน่นอนไปยังโฮมไดเร็กทอรีของไซต์ รีสตาร์ทเว็บเซิร์ฟเวอร์

เสร็จสิ้นการกำหนดค่าพื้นฐานของโฮสต์เสมือน

  • ส่วนของไซต์