Làm cách nào để cài đặt thủ công Apache, PHP và MySQL trên Windows?


48

Làm cách nào để cài đặt Apache với hỗ trợ PHP và máy chủ MySQL trên Windows mà không sử dụng bất kỳ gói sẵn sàng sử dụng nào như WAMPServer hoặc XAMPP?

Câu trả lời:


65

Apache

Trước tiên, tôi khuyên bạn nên đọc Ghi chú cụ thể về nền tảng của Apache cho Windows - nó giải thích một số tính năng dành riêng cho Windows như chạy như một dịch vụ mà bạn không có trên các HĐH khác và có thể bạn chưa từng sử dụng trước đây.

Như đã đề cập trong các ghi chú cụ thể về nền tảng này, Apache không cung cấp các tệp nhị phân cho Windows, tuy nhiên chúng có các liên kết đến một số trang web của bên thứ ba cung cấp các tệp nhị phân, ví dụ như Apache Lounge .

Từ trang web đó, chúng tôi có thể tải xuống phiên bản 32 bit (win32) hoặc phiên bản 64 bit (Win64) - nếu HĐH của bạn là 64 bit, bạn nên luôn cố gắng cài đặt phiên bản phần mềm 64 bit, nhưng lưu ý rằng bạn Cũng cần phải sử dụng các mô-đun 64-bit, điều đó có nghĩa là nếu bạn chỉ có mô-đun 32-bit thì hãy tải xuống Apache 32-bit.

Đây là phiên bản mà tôi đã sử dụng khi viết bài này: Apache 2.4.10 Win64 . Phiên bản mới nhất khi câu trả lời này được cập nhật lần cuối: Apache 2.4,38 Win64 (xem ngày chỉnh sửa ở cuối bài).

Sau khi tải về, chỉ cần giải nén Apache24thư mục vào thư mục gốc của ổ cứng, để bạn có một đường dẫn như thế nào C:\Apache24\bin.

Mở cửa sổ dòng lệnh (Windows + R và gõ cmdrồi nhấn Enter), thay đổi thư mục thành C:\Apache24\binvà chạy httpd.exe, thông thường nó không nên in bất kỳ lỗi nào.

Nếu bạn nhận được hộp thoại báo lỗi MSVCR110.dllthiếu trên hệ thống của mình, bạn sẽ cần cài đặt Visual C ++ Redistributable cho Visual Studio 2012 - như mọi khi, khi được nhắc, hãy chọn phiên bản bit phù hợp: vcredist_x86.execho các hệ thống 32 bit và vcredist_x64.exe64 -Bit những người.

Nếu bạn gặp lỗi nói rằng nó không thể liên kết với cổng 80, hãy kiểm tra xem ứng dụng khác có sử dụng cổng đó không - cũng được biết là Skype sử dụng cổng 80 và 443 theo mặc định; bỏ chọn "Sử dụng cổng 80 và 443 làm lựa chọn thay thế cho các kết nối đến" trong cài đặt kết nối nâng cao của nó , khởi động lại Skype để áp dụng các thay đổi và sau đó bạn sẽ có thể khởi động Apache mà không gặp sự cố.

Một cảnh báo như Could not reliably determine the server's fully qualified domain namecó thể được bỏ qua cho bây giờ.

Tường lửa Windows có thể nhắc bạn cho phép Apache giao tiếp trên các mạng cụ thể, tôi khuyên bạn nên sử dụng các cài đặt mặc định: cho phép nó trên các mạng gia đình và cơ quan, nhưng không phải trên các mạng công cộng / không tin cậy.

Sau đó, mở trình duyệt và duyệt đến http://localhost, nếu bạn thấy một trang nói It works !thì có nghĩa là cài đặt Apache của bạn đang hoạt động.

Bây giờ bạn có thể dừng Apache hiện đang chạy bằng cách nhấn Ctrl + C trong dấu nhắc lệnh.

Nếu bạn nhận được cảnh báo về việc không thể xác định tên miền đủ điều kiện của hệ thống, hãy khắc phục bằng cách chỉnh sửa C:\Apache24\conf\httpd.confvà chỉnh sửa ServerNamebiến (cần có trong một nhận xét, chỉ cần bỏ ghi chú và thay đổi nó):

ServerName <yourhostname>

Thay thế <yourhostname>bằng tên máy chủ của hệ thống hoặc localhost.

Cuối cùng, nếu bạn muốn chạy máy chủ tự động khi hệ thống khởi động (ngay cả khi không có ai đăng nhập), bạn sẽ cần chạy nó dưới dạng dịch vụ - trong dấu nhắc lệnh nâng cao (với tư cách quản trị viên), hãy nhập:

httpd.exe -k install

Đó là, bây giờ bạn có một dịch vụ mới trong Dịch vụ (Windows + R, sau đó nhập "services.msc" rồi nhấn Enter) có tên "Apache2.4" mà bạn có thể kiểm soát giống như bất kỳ dịch vụ Windows nào khác.

Hạn chế quyền truy cập Apache localhostchỉ - tùy chọn

Nếu bạn đang thiết lập điều này cho mục đích phát triển mà bạn muốn đảm bảo rằng không ai ngoại trừ bạn có thể truy cập nó, tường lửa của bạn sẽ xử lý vấn đề đó nhưng hãy thêm một lớp bảo mật khác cho nó bằng cách yêu cầu Apache chấp nhận các yêu cầu từ cục bộ chỉ máy.

Mở tệp cấu hình của Apache C:\Apache24\conf\httpd.conf, tìm kiếm khối thư mục mặc định <Directory "c:/Apache24/htdocs">.

Cuối cùng, nếu có, cần có một dòng Require all granted, điều này có nghĩa là bất cứ ai cũng có thể truy cập máy chủ này. Chúng ta hãy làm điều Require localđó chỉ cho phép truy cập từ máy cục bộ.

Ngoài ra, bạn có thể yêu cầu Apache chỉ liên kết với giao diện loopback, theo cách đó ngay cả khi cả tường lửa và các chỉ thị kiểm soát truy cập được đề cập ở trên đều thất bại, máy chủ vẫn sẽ không được mở cho toàn bộ internet.

Đối với điều này, xác định vị trí lệnh Listen(theo mặc định, nó được đặt thành 80) và thay đổi nó thành như sau:

Listen 127.0.0.1:80
Listen [::1]:80

Dòng đầu tiên là tự giải thích, dòng thứ hai là tương đương IPv6 đầu tiên, các dấu ngoặc được sử dụng trong ký hiệu IPv6 để phân tách địa chỉ và cổng.

Lưu tệp, nếu bạn đã chạy máy chủ rồi khởi động lại để đưa các thay đổi của chúng tôi vào tài khoản và bây giờ chỉ localhostcó quyền truy cập, mọi người khác sẽ nhận được a 403 Forbidden.

PHP

Tôi đề nghị bạn đọc tài liệu PHP chính thức về việc cài đặt nó trên các hệ thống Windows.

Tải xuống các tệp nhị phân PHP mới nhất từ trang tải xuống PHP chính thức cho Windows , chọn phiên bản an toàn luồng phù hợp với phiên bản bit cài đặt Apache của bạn (x86 cho 32-bit, x64 cho 64-bit).

Phiên bản không an toàn cho chuỗi chỉ khi chạy dưới dạng nhị phân CGI - thông tin thêm ở đây .

Phiên bản tôi đã sử dụng là: PHP 5.6.2 VC11 x64 Thread Safe . Phiên bản mới nhất khi câu trả lời này được cập nhật lần cuối: PHP 7.3.3 VC15 x64 Thread Safe (xem ngày chỉnh sửa ở cuối bài).

Tạo một PHPthư mục trống ở thư mục gốc của ổ cứng và trích xuất kho lưu trữ đã tải xuống trước đó, bạn nên có một đường dẫn như thế C:\PHP\ext, nếu không bạn đã làm sai.

Trong C:\PHP, đổi tên php.ini-productionhoặc php.ini-development(tùy thuộc vào những gì bạn muốn) thành php.ini.

Mở php.initệp đó , tìm kiếm extension_dir = "ext"và bỏ ghi chú dòng đó (xóa dòng đầu tiên ;). Điều này đặt thư mục mở rộng mặc định thành ext(giải quyết C:\PHP\extvà tránh phải trả trước ext/cho tất cả các đường dẫn của tiện ích mở rộng như trong các phiên bản trước của bài đăng này.

Bây giờ hãy định cấu hình Apache để sử dụng PHP đó, bằng cách chỉnh sửa C:\Apache24\conf\httpd.conf- sau tất cả các LoadModuledòng, thêm vào như sau:

(Các theo là dành cho PHP 7 chỉ )

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>

(Sau đây là dành cho PHP 5 chỉ )

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>

Bây giờ hãy thử khởi động Apache bằng tay bằng cách mở một dấu nhắc lệnh trong C:\Apache24\binvà chạy httpd.exe- nếu bạn thấy không có lỗi, điều đó có nghĩa là tệp cấu hình của bạn hợp lệ và rất có thể PHP đang hoạt động .

Bạn có thể kiểm tra cài đặt PHP của bạn bằng cách tạo ra một tập tin như info.phpvới <?php phpinfo();bên trong và đi http://localhost/info.php- bạn sẽ thấy khá nhiều thông tin về hệ thống của bạn và cài đặt PHP của bạn và tất cả các module của nó. Nếu bạn nhận được một cái gì đó khác như "lỗi máy chủ nội bộ" có nghĩa là có gì đó không đúng.

Bây giờ bạn có thể giết tiến trình Apache hiện tại của mình (Ctrl + C trong bảng điều khiển) và khởi động dịch vụ - phần sau không tương tác với Apache và có thể được thực hiện với máy chủ đã bắt đầu.

Nhà soạn nhạc - tùy chọn

Trình soạn thảo là một công cụ để quản lý phụ thuộc trong PHP, giống như trình quản lý gói. Nó cho phép dễ dàng cài đặt các gói PHP và thậm chí toàn bộ khung công tác.

Trình soạn thảo yêu cầu tiện ích mở rộng PHP OpenSSL được bật, vì vậy hãy kích hoạt nó C:\PHP\php.ini.

Sử dụng chức năng tìm kiếm của trình soạn thảo văn bản của bạn để tìm kiếm php_openssl.dll, đã có một dòng nhận xét cho nó, chỉ cần bỏ dòng đó.

Bây giờ hãy tải xuống trình cài đặt Windows của Composer từ trang tải xuống của họ - hoặc chỉ sử dụng liên kết trực tiếp này .

Làm theo các hướng dẫn, khi được nhắc về đường dẫn đến PHP, hãy duyệt C:\PHPvà chọn php.exe.

Vậy đó, Trình soạn thảo hiện đã được cài đặt toàn hệ thống và có thể được sử dụng từ mọi nơi - bạn có thể dùng thử, chỉ cần mở một dấu nhắc lệnh mới (bạn không thể sử dụng một lệnh đã mở vì nó cần đọc PATHbiến mới được đặt bởi Nhà soạn nhạc trình cài đặt) và loại composer.

Bạn sẽ nhận được một logo nghệ thuật ASCII đẹp và một cái gì đó như thế này:

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

Phần mở rộng PHP MySQL - tùy chọn

Nếu bạn muốn truy cập cơ sở dữ liệu MySQL của mình từ PHP, bạn sẽ cần bật các tiện ích mở rộng cho phép bạn làm như vậy, như php_mysqlihoặc php_pdo_mysql- Tôi khuyên bạn nên kích hoạt cả hai.

Mở tệp cấu hình của PHP C:\PHP\php.initrong trình soạn thảo văn bản của bạn và tìm kiếm php_mysqlihoặc php_pdo_mysql- chúng đã có sẵn ở đó, bỏ qua chúng.

Xong, bây giờ bạn có thể truy cập bất kỳ cơ sở dữ liệu MySQL nào bằng cách sử dụng mysqlihoặc PDO.

MySQL

Trên trang tải xuống MySQL Installer tải xuống trình cài đặt web mysql-installer-web-community-xxxxx.msi.

Tôi đã sử dụng mysql-Installer-web-cộng đồng-5.6.21.1.msi. Phiên bản mới nhất khi câu trả lời này được cập nhật lần cuối: mysql-Installer-web-Community-8.0.15.0.msi (xem ngày chỉnh sửa ở cuối bài).

Trình cài đặt sẽ tự động cài đặt phiên bản phù hợp (32-bit hoặc 64-bit) tùy theo hệ thống của bạn, mặc dù phiên bản bit của MySQL không phải phù hợp với phiên bản của Apache và PHP nhưng vẫn có lợi khi sử dụng phiên bản 64-bit của bạn Hệ thống hỗ trợ nó tận dụng hơn 3 GB RAM , điều đó khá quan trọng vì các máy chủ cơ sở dữ liệu có xu hướng sử dụng nhiều RAM.

Thực hiện theo các bước trong trình cài đặt, nếu bạn đang cài đặt phần mềm này để phát triển thì đó Developer defaultsẽ là lựa chọn tốt nhất của bạn, nó cũng sẽ cài đặt MySQL Workbench, một máy khách GUI gốc, do đó tránh cho bạn phải cài đặt các công cụ dựa trên web chậm như PHPMyAdmin nếu bạn không thoải mái khi sử dụng ứng dụng khách dòng lệnh.

Khi mọi thứ đã được cài đặt, trình cài đặt sẽ yêu cầu bạn cung cấp một số giá trị cấu hình cơ bản, tôi khuyên bạn nên tắt "Cổng tường lửa mở để truy cập mạng" trừ khi bạn muốn truy cập cơ sở dữ liệu từ một máy khác trên mạng.

Đặt mật khẩu gốc - nếu chỉ dành cho mục đích phát triển và tường lửa của bạn chặn các kết nối đến từ mạng thì mật khẩu mạnh là không cần thiết.

Cuối cùng, bạn có thể vô hiệu hóa Trình thông báo MySQL vô dụng bằng cách nhấp chuột phải vào biểu tượng khay, đi vào Hành động -> Tùy chọn, sau đó bỏ chọn Run at Windows Startuphộp kiểm và áp dụng. Điều đó sẽ giúp bạn tiết kiệm một vài MB RAM và tránh làm chậm máy khi khởi động.

Và đó là, bạn hiện có một máy chủ WAMP đầy đủ chức năng chạy như một dịch vụ và không phụ thuộc vào bất kỳ người dùng nào (có thể truy cập ngay cả khi không có ai đăng nhập).

Lưu ý rằng tôi không biết gì về bảo mật của điều này, vì mục đích phát triển Tôi nói điều này khá an toàn vì tường lửa của bạn sẽ chặn các kết nối đến cho cả Apache (cổng 80 và 443) và MySQL (cổng 3306).

Điều này đã được thử nghiệm trên bản cài đặt Windows 7, nó cũng chỉ hoạt động tốt trên Vista, Windows 8 và có thể cả Windows Server 2008/2012 - hãy bình luận và / hoặc downvote nếu không phải như vậy.


3
Tôi chỉ lưu ý rằng có thể cần phải bỏ dòng dòng extension_dir = "ext" cho Windows trong php.ini.
chivvijim

@jaffamcneill thực sự bạn đã đúng, tôi đã cập nhật câu trả lời của tôi cho tài khoản đó.

Ypu đã cứu mạng tôi. Tôi đã vật lộn với điều này trong một tuần qua nhưng mysql sẽ không được kích hoạt trong phpinfo. Tôi đã sửa nó với sự giúp đỡ của bạn. Cảm ơn rất nhiều.
minh_bassi

Khi nào chúng ta nên sử dụng mô-đun mod_fcgid? Tôi có một vấn đề là tôi có nhiều người dùng trên hệ thống cùng lúc thực hiện nhiều yêu cầu. Tôi đang cần một phiên bản 64 bit vì hết 32 bit (VFP ODBC với các yêu cầu nặng nề cho các báo cáo). Thiết lập của bạn ở trên có hoạt động tốt không hoặc tôi có cần sử dụng mô-đun php_fcgid và cài đặt PHP dưới dạng tâm trạng cgi không? Điều này luôn làm tôi bối rối ... Cảm ơn vì bất kỳ cái nhìn sâu sắc.
Jeremy

1
Khi MSVCR110.dlllỗi xuất hiện (trên phiên bản Apache hiện tại) tôi đã kết thúc việc cài đặt Visual C ++ Redistributable 2010 SP1. Sau đó, tôi gặp một lỗi khác về tệp VCRUNTIME140.dll, yêu cầu tôi cài đặt Visual C ++ Redistributable cho Visual Studio 2015.
Coded Monkey

8

PHP 7

Các hướng dẫn trong câu trả lời trên hoạt động hoàn hảo kể từ tháng 7 năm 2017, tuy nhiên, nếu bạn muốn sử dụng PHP 7, bạn phải thêm các dòng sau vào C:\Apache24\conf\httpd.conf, thay vì các dòng trong câu trả lời đó (chỉ hoạt động cho PHP 5) [Thêm vào sau sau tất cả các LoadModuledòng] :

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>

Đảm bảo rằng tất cả các đường dẫn là chính xác. Nếu bạn không có php7apache2_4.dlltrong thư mục PHP của mình, có lẽ bạn đã tải xuống gói sai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.