ฉันจะติดตั้ง Apache ด้วย PHP และเซิร์ฟเวอร์ MySQL บน Windows โดยไม่ใช้แพ็คเกจสำเร็จรูปเช่น WAMPServer หรือ XAMPP ได้อย่างไร
ฉันจะติดตั้ง Apache ด้วย PHP และเซิร์ฟเวอร์ MySQL บน Windows โดยไม่ใช้แพ็คเกจสำเร็จรูปเช่น WAMPServer หรือ XAMPP ได้อย่างไร
คำตอบ:
ก่อนอื่นฉันขอแนะนำให้คุณอ่านบันทึกย่อเฉพาะแพลตฟอร์มของ Apache สำหรับ Windows - อธิบายถึงคุณลักษณะเฉพาะของ Windows เช่นการทำงานเป็นบริการที่คุณไม่มีในระบบปฏิบัติการอื่นและคุณอาจไม่เคยใช้มาก่อน
ตามที่กล่าวไว้ในหมายเหตุประกอบเหล่านี้แพลตฟอร์มเฉพาะ Apache ไม่ได้ให้ไบนารีสำหรับ Windows, แต่พวกเขามีการเชื่อมโยงไปยังเว็บไซต์ของบุคคลที่สามหลายที่ให้ไบนารีเช่นApache เลาจน์
จากเว็บไซต์นั้นเราสามารถดาวน์โหลดทั้งรุ่น 32 บิต (win32) หรือ 64- บิตหนึ่ง (Win64) - หากระบบปฏิบัติการของคุณเป็น 64- บิตคุณควรพยายามติดตั้งซอฟต์แวร์เวอร์ชัน 64 บิตเสมอ แต่โปรดสังเกตว่าคุณ คุณจะต้องใช้โมดูล 64 บิตเช่นกันนั่นหมายความว่าหากคุณมีโมดูล 32 บิตแล้วดาวน์โหลด Apache 32 บิต
ต่อไปนี้เป็นรุ่นที่ผมใช้เมื่อเขียนนี้: Apache 2.4.10 Win64 เวอร์ชันล่าสุดเมื่อคำตอบนี้ได้รับการปรับปรุงล่าสุด: Apache 2.4.38 Win64 (ดูวันที่แก้ไขที่ด้านล่างของโพสต์)
เมื่อดาวน์โหลดแล้วให้แยกApache24
โฟลเดอร์ไปที่รูทของฮาร์ดไดรฟ์เพื่อให้คุณมีเส้นทางC:\Apache24\bin
ได้
เปิดหน้าต่างบรรทัดคำสั่ง (Windows + R cmd
แล้วพิมพ์จากนั้นกด Enter) เปลี่ยนไดเรกทอรีเป็นC:\Apache24\bin
และเรียกใช้httpd.exe
โดยปกติไม่ควรพิมพ์ข้อผิดพลาดใด ๆ
หากคุณได้รับกล่องโต้ตอบข้อผิดพลาดที่ระบุว่าMSVCR110.dll
ไม่มีอยู่ในระบบของคุณคุณจะต้องติดตั้งVisual C ++ Redistributable สำหรับ Visual Studio 2012 - เช่นเคยเมื่อได้รับแจ้งให้เลือกบิตรุ่นที่เหมาะสม: vcredist_x86.exe
สำหรับระบบ 32- บิตและvcredist_x64.exe
64 คน - บิต
หากคุณได้รับข้อผิดพลาดที่บอกว่าไม่สามารถผูกกับพอร์ต 80 ได้ให้ตรวจสอบว่าแอปพลิเคชันอื่นใช้พอร์ตนั้นหรือไม่โดยปกติแล้ว Skype จะใช้พอร์ต 80 และ 443 เป็นที่ทราบกันดีว่า ยกเลิกการเลือก "ใช้พอร์ต 80 และ 443 เป็นทางเลือกสำหรับการเชื่อมต่อขาเข้า" ในการตั้งค่าการเชื่อมต่อขั้นสูงรีสตาร์ท Skype เพื่อใช้การเปลี่ยนแปลงจากนั้นคุณควรเริ่ม Apache ได้โดยไม่มีปัญหา
คำเตือน Like Could not reliably determine the server's fully qualified domain name
สามารถถูกละเว้นได้ในตอนนี้
Windows Firewall อาจแจ้งให้คุณอนุญาตให้ Apache สื่อสารบนเครือข่ายเฉพาะฉันขอแนะนำให้คุณใช้การตั้งค่าเริ่มต้น: อนุญาตให้ใช้ในเครือข่ายที่บ้านและที่ทำงาน แต่ไม่ใช่ในเครือข่ายสาธารณะ / ไม่น่าเชื่อถือ
จากนั้นเปิดเบราว์เซอร์และเรียกดูhttp://localhost
หากคุณเห็นหน้าเว็บที่ระบุว่าแสดงว่าIt works !
การติดตั้ง Apache ของคุณใช้งานได้
ตอนนี้คุณสามารถหยุด Apache ที่กำลังรันอยู่ได้โดยกด Ctrl + C ในพร้อมท์คำสั่ง
หากคุณได้รับคำเตือนเกี่ยวกับการไม่สามารถระบุชื่อโดเมนที่มีคุณสมบัติครบถ้วนของระบบให้แก้ไขโดยแก้ไขC:\Apache24\conf\httpd.conf
และแก้ไขServerName
ตัวแปร (ควรมีอยู่ในความคิดเห็นแล้วเพียงแค่ยกเลิกการคอมเม้นต์และเปลี่ยน):
ServerName <yourhostname>
แทนที่ด้วยชื่อโฮสต์ทั้งระบบหรือ<yourhostname>
localhost
สุดท้ายหากคุณต้องการเรียกใช้เซิร์ฟเวอร์โดยอัตโนมัติเมื่อระบบเริ่มต้น (แม้ว่าจะไม่มีใครลงชื่อเข้าใช้) คุณจะต้องเรียกใช้เป็นบริการ - ในพรอมต์คำสั่งยกระดับ (ในฐานะผู้ดูแลระบบ) ให้พิมพ์:
httpd.exe -k install
ตอนนี้คุณมีบริการใหม่ใน Services (Windows + R แล้วพิมพ์ "services.msc" แล้วกด Enter) ชื่อ "Apache2.4" ที่คุณสามารถควบคุมได้เหมือนกับบริการ Windows อื่น ๆ
localhost
- ตัวเลือกหากคุณกำลังตั้งค่านี้เพื่อวัตถุประสงค์ในการพัฒนาที่คุณต้องการตรวจสอบให้แน่ใจว่าไม่มีใครยกเว้นคุณสามารถเข้าถึงได้ไฟร์วอลล์ของคุณควรดูแลเรื่องนี้อยู่แล้ว แต่ให้เพิ่มระดับความปลอดภัยอีกระดับด้วยการบอก Apache ให้ยอมรับคำขอจากท้องถิ่น เครื่องเท่านั้น
แฟ้มการกำหนดค่าของ Apache เปิดให้ค้นหาบล็อกไดเรกทอรีเริ่มต้นC:\Apache24\conf\httpd.conf
<Directory "c:/Apache24/htdocs">
ในตอนท้ายถ้ามันควรจะมีบรรทัดRequire all granted
ซึ่งหมายความว่าทุกคนสามารถเข้าถึงเซิร์ฟเวอร์นี้ มาสร้างสิ่งRequire local
ที่อนุญาตให้เข้าถึงได้จากเครื่องโลคอลเท่านั้น
นอกจากนี้คุณสามารถบอกให้ Apache เชื่อมโยงกับลูปแบ็คอินเทอร์เฟซเท่านั้นวิธีนั้นแม้ว่าทั้งไฟร์วอลล์ของคุณและแนวทางการควบคุมการเข้าถึงที่กล่าวถึงข้างต้นจะล้มเหลวก็ตามเซิร์ฟเวอร์ยังคงไม่สามารถเปิดอินเทอร์เน็ตได้ทั้งหมด
สำหรับสิ่งนี้ค้นหาListen
คำสั่ง (โดยค่าเริ่มต้นตั้งเป็น80
) และเปลี่ยนเป็นดังต่อไปนี้:
Listen 127.0.0.1:80
Listen [::1]:80
บรรทัดแรกคือการอธิบายตัวเองบรรทัดที่สองนั้นเทียบเท่ากับ IPv6 ตัวแรกของวงเล็บจะถูกใช้ในสัญกรณ์ IPv6 เพื่อแยกที่อยู่และพอร์ต
บันทึกไฟล์ถ้าคุณกำลังทำงานอยู่แล้วเซิร์ฟเวอร์แล้วเริ่มต้นใหม่เพื่อที่จะใช้การเปลี่ยนแปลงของเราเข้าบัญชีและตอนนี้เพียง แต่localhost
มีการเข้าถึงคนอื่น ๆ 403 Forbidden
จะได้รับ
ฉันแนะนำให้คุณอ่านเอกสาร PHP อย่างเป็นทางการเกี่ยวกับการติดตั้งบนระบบ Windows
ดาวน์โหลดไบนารี PHP ล่าสุดจากหน้าดาวน์โหลด PHP สำหรับ Windowsอย่างเป็นทางการเลือกรุ่นที่ปลอดภัยสำหรับเธรดที่ตรงกับรุ่นบิตของการติดตั้ง Apache ของคุณ (x86 สำหรับ 32-Bit, x64 สำหรับ 64-Bit)
รุ่นที่ไม่ด้ายปลอดภัยเป็นเพียงเมื่อทำงานเป็นไบนารี CGI - ข้อมูลเพิ่มเติมที่นี่
ที่ผมใช้รุ่นนี้คือ: PHP 5.6.2 VC11 x 64 กระทู้ปลอดภัย เวอร์ชั่นล่าสุดเมื่อคำตอบนี้ได้รับการปรับปรุงล่าสุด: PHP 7.3.3 VC15 x64 Thread Safe (ดูวันที่แก้ไขที่ด้านล่างของโพสต์)
สร้างPHP
โฟลเดอร์ว่างที่รากของฮาร์ดไดรฟ์ของคุณและแยกไฟล์เก็บถาวรที่ดาวน์โหลดไว้ก่อนหน้านี้คุณควรมีเส้นทางเช่นC:\PHP\ext
มิฉะนั้นคุณทำสิ่งผิดปกติ
ในC:\PHP
เปลี่ยนชื่อphp.ini-production
หรือphp.ini-development
(ขึ้นอยู่กับสิ่งที่คุณต้องการ) php.ini
เพื่อ
เปิดphp.ini
ไฟล์นั้นค้นหาextension_dir = "ext"
และเลิกคอมเม้นท์บรรทัดนั้น (ลบไฟล์แรก;
) ค่านี้ตั้งค่า dir ส่วนขยายเริ่มต้นเป็นext
(ซึ่งแก้ไขC:\PHP\ext
และหลีกเลี่ยงการต้องext/
เพิ่มเส้นทางของส่วนขยายทั้งหมดด้วยตนเองเหมือนในเวอร์ชันก่อนหน้าของโพสต์นี้
ตอนนี้กำหนดค่า Apache ให้ใช้ PHP นั้นโดยแก้ไขC:\Apache24\conf\httpd.conf
- หลังจากทุกLoadModule
บรรทัดให้เพิ่มรายการต่อไปนี้:
(ต่อไปนี้สำหรับ PHP 7 เท่านั้น )
LoadModule php7_module "c:\php\php7apache2_4.dll"
<IfModule php7_module>
AddHandler application/x-httpd-php .php
AddType application/x-httpd-php .php .html
PHPIniDir "c:\php"
</IfModule>
(ต่อไปนี้สำหรับ PHP 5 เท่านั้น )
LoadModule php5_module C:/PHP/php5apache2_4.dll
<IfModule php5_module>
DirectoryIndex index.html index.php
AddHandler application/x-httpd-php .php
PHPIniDir "C:/PHP"
</IfModule>
ตอนนี้ลองเริ่ม Apache ด้วยตนเองโดยเปิดพร้อมท์รับคำสั่งในC:\Apache24\bin
และทำงานhttpd.exe
- ถ้าคุณเห็นว่าไม่มีข้อผิดพลาดหมายความว่าไฟล์การกำหนดค่าของคุณนั้นถูกต้องและ PHP นั้นทำงานได้ดีที่สุด
คุณสามารถทดสอบการติดตั้ง PHP ของคุณโดยการสร้างไฟล์เช่นinfo.php
กับ<?php phpinfo();
ภายในและไปhttp://localhost/info.php
- คุณจะเห็นค่อนข้างบิตของข้อมูลเกี่ยวกับระบบของคุณและการติดตั้ง PHP และโมดูลทั้งหมด หากคุณได้รับอย่างอื่นเช่น "ข้อผิดพลาดเซิร์ฟเวอร์ภายใน" นั่นหมายถึงบางอย่างผิดปกติ
ตอนนี้คุณสามารถฆ่ากระบวนการ Apache ปัจจุบันของคุณ (Ctrl + C ในคอนโซล) และเริ่มบริการ - ส่วนต่อไปนี้ไม่โต้ตอบกับ Apache และสามารถทำได้กับเซิร์ฟเวอร์ที่เริ่มต้นแล้ว
นักแต่งเพลงเป็นเครื่องมือสำหรับการจัดการการพึ่งพาใน PHP เช่นผู้จัดการแพคเกจ อนุญาตให้ติดตั้งแพ็คเกจ PHP และกรอบงานทั้งหมดได้อย่างง่ายดาย
นักแต่งเพลงต้องมีการเปิดใช้งานส่วนขยาย PHP OpenSSL เพื่อให้เปิดใช้งานC:\PHP\php.ini
ได้
ใช้ฟังก์ชั่นการค้นหาของเครื่องมือแก้ไขข้อความเพื่อค้นหาphp_openssl.dll
ควรมีบรรทัดที่มีความคิดเห็นอยู่แล้วโดยไม่ใส่เครื่องหมายข้อคิดเห็นในบรรทัดนั้น
ตอนนี้ดาวน์โหลดตัวติดตั้ง Windows ของนักแต่งเพลงจากหน้าดาวน์โหลด - หรือใช้ลิงค์โดยตรงนี้
ทำตามคำแนะนำเมื่อพร้อมท์สำหรับเส้นทางไปยัง PHP, เรียกดูและเลือกC:\PHP
php.exe
เพียงเท่านี้ Composer ก็จะถูกติดตั้งทั่วทั้งระบบและสามารถใช้งานได้จากทุกที่ - คุณสามารถลองใช้งานได้เพียงเปิดพร้อมท์คำสั่งใหม่ (คุณไม่สามารถใช้งานได้ที่เปิดอยู่แล้วเนื่องจากจำเป็นต้องอ่านPATH
ชุดตัวแปรใหม่โดยนักแต่งเพลง ติดตั้ง) composer
และประเภท
คุณควรได้รับโลโก้ ASCII-art ที่ดีและสิ่งนี้:
Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28
หากคุณต้องการเข้าถึงฐานข้อมูล MySQL ของคุณจาก PHP คุณจะต้องเปิดใช้งานส่วนขยายที่อนุญาตให้คุณทำเช่นนั้นphp_mysqli
หรือphp_pdo_mysql
- ฉันแนะนำให้เปิดใช้งานทั้งคู่
เปิดไฟล์การกำหนดค่าของ PHP C:\PHP\php.ini
ในเท็กซ์เอดิเตอร์ของคุณและค้นหาphp_mysqli
หรือphp_pdo_mysql
- ควรมีอยู่แล้วไม่ใส่ข้อคิดเห็น
ทำตอนนี้คุณสามารถเข้าถึงฐานข้อมูล MySQL ใด ๆ ที่ใช้อย่างใดอย่างหนึ่งหรือmysqli
PDO
ในหน้าดาวน์โหลด MySQL การติดตั้งmysql-installer-web-community-xxxxx.msi
ดาวน์โหลดติดตั้งเว็บ
ฉันใช้ mysql-installer-web-community-5.6.21.1.msi เวอร์ชันล่าสุดเมื่อคำตอบนี้ได้รับการปรับปรุงล่าสุด: mysql-installer-web-community-8.0.15.0.msi (ดูวันที่แก้ไขที่ด้านล่างของโพสต์)
โปรแกรมติดตั้งจะติดตั้งรุ่นที่เหมาะสมโดยอัตโนมัติ (32- บิตหรือ 64- บิต) ขึ้นอยู่กับระบบของคุณแม้ว่ารุ่นบิตของ MySQL จะไม่ตรงกับ Apache และ PHP แต่ก็ยังมีประโยชน์ในการใช้เวอร์ชัน 64 บิตของคุณ ระบบรองรับการใช้ประโยชน์จากRAMมากกว่า3 GBซึ่งค่อนข้างสำคัญเนื่องจากเซิร์ฟเวอร์ฐานข้อมูลมักจะใช้ RAM เป็นจำนวนมาก
ทำตามขั้นตอนในตัวติดตั้งหากคุณกำลังติดตั้งสิ่งนี้เพื่อการพัฒนาDeveloper default
ตัวเลือกที่ดีที่สุดของคุณก็จะติดตั้ง MySQL Workbench ซึ่งเป็นไคลเอนต์ GUI พื้นฐานคุณจึงหลีกเลี่ยงการติดตั้งเครื่องมือที่ใช้เว็บช้าเช่น PHPMyAdmin ถ้าคุณไม่พอใจกับการใช้ไคลเอนต์บรรทัดคำสั่ง
เมื่อติดตั้งทุกอย่างแล้วตัวติดตั้งจะถามค่ากำหนดพื้นฐานบางอย่างฉันขอแนะนำให้ปิดการใช้งาน "เปิดพอร์ตไฟร์วอลล์สำหรับการเข้าถึงเครือข่าย" เว้นแต่คุณต้องการเข้าถึงฐานข้อมูลจากเครื่องอื่นบนเครือข่าย
ตั้งค่ารหัสผ่านรูท - หากเป็นเพียงเพื่อการพัฒนาและไฟร์วอลล์ของคุณบล็อกการเชื่อมต่อขาเข้าจากเครือข่ายคุณไม่จำเป็นต้องใช้รหัสผ่านที่คาดเดายาก
ในที่สุดคุณสามารถปิดการใช้งานตัวแจ้ง MySQL ที่ไม่มีประโยชน์ได้ด้วยการคลิกขวาที่ไอคอนถาดไปที่การทำงาน -> ตัวเลือกจากนั้นยกเลิกการRun at Windows Startup
เลือกช่องทำเครื่องหมายและนำไปใช้ นั่นจะช่วยให้คุณประหยัด RAM สักสองสามเมกะไบต์และหลีกเลี่ยงการทำให้เครื่องทำงานช้าลงขณะทำการบูท
และนั่นคือตอนนี้คุณมีเซิร์ฟเวอร์ WAMP ที่ทำงานได้อย่างสมบูรณ์ซึ่งทำงานเป็นบริการและไม่ขึ้นอยู่กับผู้ใช้ใด ๆ (เข้าถึงได้แม้ว่าจะไม่มีใครลงชื่อเข้าใช้)
โปรดทราบว่าฉันไม่มีความคิดเกี่ยวกับความปลอดภัยของสิ่งนี้เพื่อจุดประสงค์ในการพัฒนาฉันคิดว่ามันค่อนข้างปลอดภัยเนื่องจากไฟร์วอลล์ของคุณควรบล็อกการเชื่อมต่อขาเข้าทั้ง Apache (พอร์ต 80 และ 443) และ MySQL (พอร์ต 3306)
สิ่งนี้ได้รับการทดสอบในการติดตั้ง Windows 7 มันควรทำงานได้ดีบน Vista, Windows 8 และ Windows Server 2008/2012 - อย่าลังเลที่จะแสดงความคิดเห็นและ / หรือลดลงหากไม่มีกรณีดังกล่าว
MSVCR110.dll
ข้อผิดพลาดปรากฏขึ้น (ในเวอร์ชั่น Apache ปัจจุบัน) ฉันลงเอยด้วยการติดตั้ง Visual C ++ Redistributable 2010 SP1 หลังจากนั้นฉันก็พบข้อผิดพลาดเกี่ยวกับไฟล์VCRUNTIME140.dll
ซึ่งทำให้ฉันต้องติดตั้ง Visual C ++ Redistributable สำหรับ Visual Studio 2015
คำแนะนำในคำตอบข้างต้นทำงานได้อย่างสมบูรณ์ตั้งแต่เดือนกรกฎาคม 2017 อย่างไรก็ตามหากคุณต้องการใช้ PHP 7 คุณต้องเพิ่มบรรทัดต่อไปนี้C:\Apache24\conf\httpd.conf
แทนที่จะเป็นคำตอบนั้น (ซึ่งใช้ได้กับ PHP 5 เท่านั้น) [เพิ่มรายการต่อไปนี้ หลังจากทุกLoadModule
บรรทัด] :
LoadModule php7_module C:/PHP/php7apache2_4.dll
<IfModule php7_module>
DirectoryIndex index.html index.php
AddHandler application/x-httpd-php .php
PHPIniDir "C:/PHP"
</IfModule>
ตรวจสอบให้แน่ใจว่าเส้นทางทั้งหมดถูกต้อง หากคุณไม่มีphp7apache2_4.dll
ในไดเรกทอรี PHP ของคุณคุณอาจดาวน์โหลดแพคเกจที่ไม่ถูกต้อง