จะติดตั้ง Apache, PHP และ MySQL ด้วยตนเองได้อย่างไร?


48

ฉันจะติดตั้ง Apache ด้วย PHP และเซิร์ฟเวอร์ MySQL บน Windows โดยไม่ใช้แพ็คเกจสำเร็จรูปเช่น WAMPServer หรือ XAMPP ได้อย่างไร

คำตอบ:


65

อาปาเช่

ก่อนอื่นฉันขอแนะนำให้คุณอ่านบันทึกย่อเฉพาะแพลตฟอร์มของ 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.exe64 คน - บิต

หากคุณได้รับข้อผิดพลาดที่บอกว่าไม่สามารถผูกกับพอร์ต 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 อื่น ๆ

จำกัด การเข้าถึง Apache ไปที่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

ฉันแนะนำให้คุณอ่านเอกสาร 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:\PHPphp.exe

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

คุณควรได้รับโลโก้ ASCII-art ที่ดีและสิ่งนี้:

Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28

ส่วนขยาย PHP MySQL - ตัวเลือก

หากคุณต้องการเข้าถึงฐานข้อมูล MySQL ของคุณจาก PHP คุณจะต้องเปิดใช้งานส่วนขยายที่อนุญาตให้คุณทำเช่นนั้นphp_mysqliหรือphp_pdo_mysql- ฉันแนะนำให้เปิดใช้งานทั้งคู่

เปิดไฟล์การกำหนดค่าของ PHP C:\PHP\php.iniในเท็กซ์เอดิเตอร์ของคุณและค้นหาphp_mysqliหรือphp_pdo_mysql- ควรมีอยู่แล้วไม่ใส่ข้อคิดเห็น

ทำตอนนี้คุณสามารถเข้าถึงฐานข้อมูล MySQL ใด ๆ ที่ใช้อย่างใดอย่างหนึ่งหรือmysqliPDO

MySQL

ในหน้าดาวน์โหลด 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 - อย่าลังเลที่จะแสดงความคิดเห็นและ / หรือลดลงหากไม่มีกรณีดังกล่าว


3
ฉันเพิ่งจะทราบว่าอาจจำเป็นต้องยกเลิกการใส่เครื่องหมายบรรทัด extension_dir = "ext" สำหรับ Windows ใน php.ini
chivvijim

@jaffamcneill แน่นอนคุณพูดถูกฉันได้อัปเดตคำตอบสำหรับบัญชีนั้น

Ypu ช่วยชีวิตฉันไว้ ฉันดิ้นรนกับสิ่งนี้ในช่วงหนึ่งสัปดาห์ที่ผ่านมา แต่ mysql จะไม่เปิดใช้งานใน phpinfo ฉันได้รับการแก้ไขด้วยความช่วยเหลือของคุณ ขอบคุณมาก
clever_bassi

เมื่อใดที่เราควรใช้โมดูล mod_fcgid ฉันมีปัญหาคือฉันมีผู้ใช้จำนวนมากในระบบในเวลาเดียวกันทำให้คำขอหลาย ๆ ฉันต้องการรุ่น 64 บิตเนื่องจากหน่วยความจำ 32 บิตหมด (VFP ODBC ที่มีการร้องขอรายงานจำนวนมาก) การตั้งค่าของคุณทำงานได้ดีหรือไม่ฉันต้องใช้โมดูล php_fcgid และติดตั้ง PHP เป็น cgi moodule หรือไม่ มันทำให้ฉันสับสนอยู่เสมอ ... ขอบคุณสำหรับความเข้าใจที่ลึกซึ้ง
Jeremy

1
เมื่อMSVCR110.dllข้อผิดพลาดปรากฏขึ้น (ในเวอร์ชั่น Apache ปัจจุบัน) ฉันลงเอยด้วยการติดตั้ง Visual C ++ Redistributable 2010 SP1 หลังจากนั้นฉันก็พบข้อผิดพลาดเกี่ยวกับไฟล์VCRUNTIME140.dllซึ่งทำให้ฉันต้องติดตั้ง Visual C ++ Redistributable สำหรับ Visual Studio 2015
รหัสลิง

8

PHP 7

คำแนะนำในคำตอบข้างต้นทำงานได้อย่างสมบูรณ์ตั้งแต่เดือนกรกฎาคม 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 ของคุณคุณอาจดาวน์โหลดแพคเกจที่ไม่ถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.