Jak ręcznie zainstalować Apache, PHP i MySQL w systemie Windows?


48

Jak zainstalować Apache z obsługą PHP i serwerem MySQL w systemie Windows bez użycia gotowych pakietów, takich jak WAMPServer lub XAMPP?

Odpowiedzi:


65

Apacz

Po pierwsze, polecam przeczytać Uwagi na temat platformy Apache dla systemu Windows - wyjaśnia niektóre funkcje specyficzne dla systemu Windows, takie jak działanie jako usługa, której nie masz w innych systemach operacyjnych i prawdopodobnie nigdy wcześniej nie korzystałeś.

Jak wspomniano w tych uwagach specyficznych dla platformy, Apache nie udostępnia plików binarnych dla systemu Windows, jednak mają one linki do kilku stron zewnętrznych, które udostępniają pliki binarne, na przykład Apache Lounge .

Z tej witryny możemy pobrać wersję 32-bitową (win32) lub 64-bitową (Win64) - jeśli twój system operacyjny to 64-bit, zawsze powinieneś próbować zainstalować 64-bitowe wersje oprogramowania, ale pamiętaj, że Będę musiał również użyć modułów 64-bitowych, co oznacza, że ​​jeśli masz tylko moduł 32-bitowy, pobierz 32-bitowy Apache.

Oto wersja, której użyłem podczas pisania: Apache 2.4.10 Win64 . Najnowsza wersja ostatniej aktualizacji tej odpowiedzi: Apache 2.4.38 Win64 (spójrz na datę edycji na dole postu).

Po pobraniu rozpakuj Apache24folder do katalogu głównego dysku twardego, aby uzyskać ścieżkę podobną do C:\Apache24\bin.

Otwórz okno wiersza poleceń (Windows + R i wpisz, cmda następnie naciśnij Enter), zmień katalog na C:\Apache24\bini uruchom httpd.exe, normalnie nie powinien on drukować żadnych błędów.

Jeśli pojawi się okno dialogowe błędu z informacją, że MSVCR110.dllbrakuje w twoim systemie, musisz zainstalować Visual C ++ Redistributable dla Visual Studio 2012 - jak zawsze, gdy pojawi się monit, wybierz odpowiednią wersję bitową: vcredist_x86.exedla systemów 32-bitowych i vcredist_x64.exe64 -Bity.

Jeśli pojawi się błąd informujący, że nie może się połączyć z portem 80, sprawdź, czy inna aplikacja korzysta z tego portu - również Skype domyślnie korzysta z portów 80 i 443; odznacz „Użyj portów 80 i 443 jako alternatywy dla połączeń przychodzących” w jego zaawansowanych ustawieniach połączenia , uruchom ponownie Skype, aby zastosować zmiany, a wtedy powinieneś być w stanie uruchomić Apache bez problemów.

Takie ostrzeżenie Could not reliably determine the server's fully qualified domain namemożna na razie zignorować.

Zapora systemu Windows może monitować o zezwolenie Apache na komunikację w określonych sieciach. Zalecam korzystanie z ustawień domyślnych: zezwalaj na to w sieci domowej i służbowej, ale nie w sieci publicznej / niezaufanej.

Następnie otwórz przeglądarkę i przejdź do http://localhost, jeśli zobaczysz stronę z napisem It works !, oznacza to, że instalacja Apache działa.

Możesz teraz zatrzymać aktualnie działający serwer Apache, naciskając Ctrl + C w wierszu polecenia.

Jeśli pojawi się ostrzeżenie o niemożności ustalenia w pełni kwalifikowanej nazwy domeny systemu, napraw ją, edytując C:\Apache24\conf\httpd.confi edytując ServerNamezmienną (powinna być już w komentarzu, po prostu odkomentuj ją i zmień):

ServerName <yourhostname>

Zamień <yourhostname>na nazwę hosta systemu lub localhost.

Wreszcie, jeśli chcesz uruchomić serwer automatycznie podczas uruchamiania systemu (nawet jeśli nikt się nie zaloguje), musisz uruchomić go jako usługę - w nowym wierszu polecenia z podwyższonym poziomem uprawnień (jako administrator) wpisz:

httpd.exe -k install

To wszystko, teraz masz nową usługę w Usługach (Windows + R, a następnie wpisz „services.msc”, a następnie naciśnij Enter) o nazwie „Apache2.4”, którą możesz kontrolować tak jak każdą inną usługę Windows.

Ograniczanie dostępu Apache localhosttylko do - opcjonalne

Jeśli konfigurujesz to dla celów programistycznych, chcesz mieć pewność, że nikt oprócz ciebie nie będzie miał do niej dostępu, twoja zapora powinna już się tym zająć, ale dodajmy do tego kolejną warstwę bezpieczeństwa, informując Apache, aby akceptował żądania od lokalnego tylko maszyna.

Otwórz plik konfiguracyjny Apache C:\Apache24\conf\httpd.conf, wyszukaj domyślny blok katalogu <Directory "c:/Apache24/htdocs">.

Jeśli na końcu powinna być linia Require all granted, oznacza to, że każdy może uzyskać dostęp do tego serwera. Zróbmy to, Require localco pozwala na dostęp tylko z komputera lokalnego.

Możesz także powiedzieć Apacheowi, aby łączył się tylko z interfejsem sprzężenia zwrotnego, w ten sposób nawet jeśli zarówno zapora ogniowa, jak i wspomniane wyżej dyrektywy kontroli dostępu zawiodą, serwer nadal nie będzie otwarty na cały Internet.

W tym celu zlokalizuj Listendyrektywę (domyślnie jest ustawiona na 80) i zmień ją na:

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

Pierwszy wiersz nie wymaga wyjaśnień, drugi odpowiada pierwszemu IPv6, nawiasy klamrowe są używane w notacji IPv6 do oddzielenia adresu i portu.

Zapisz plik, jeśli już uruchomiłeś serwer, uruchom go ponownie, aby uwzględnić nasze zmiany, a teraz localhostma tylko dostęp, wszyscy inni dostaną 403 Forbidden.

PHP

Sugeruję przeczytanie oficjalnej dokumentacji PHP na temat instalowania jej w systemach Windows.

Pobierz najnowsze pliki binarne PHP z oficjalnej strony pobierania PHP dla Windows , wybierz wersję bezpieczną dla wątków, która pasuje do wersji bitowej instalacji Apache (x86 dla 32-bitów, x64 dla 64-bitów).

Wersja nie bezpieczna dla wątków działa tylko jako plik binarny CGI - więcej informacji tutaj .

Użyłem wersji: PHP 5.6.2 VC11 x64 Thread Safe . Najnowsza wersja ostatniej aktualizacji tej odpowiedzi: PHP 7.3.3 VC15 x64 Wątek bezpieczny (spójrz na datę edycji na dole postu).

Utwórz pusty PHPfolder w katalogu głównym dysku twardego i rozpakuj tam pobrane archiwum, powinieneś mieć ścieżkę jak C:\PHP\ext, w przeciwnym razie zrobiłeś coś złego.

W C:\PHPzmień nazwę php.ini-productionlub php.ini-development(w zależności od tego, co chcesz) na php.ini.

Otwórz ten php.iniplik, wyszukaj extension_dir = "ext"i odkomentuj ten wiersz (usuń pierwszy ;). Ustawia domyślny katalog rozszerzenia na ext(który rozwiązuje C:\PHP\exti nie wymaga ext/ręcznego dodawania do wszystkich ścieżek rozszerzeń, tak jak w poprzednich wersjach tego postu.

Teraz skonfiguruj Apache, aby używał tego PHP, edytując C:\Apache24\conf\httpd.conf- po wszystkich LoadModulewierszach dodaj:

(Poniższe informacje dotyczą tylko 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>

(Poniższe dotyczy tylko 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>

Teraz spróbuj uruchomić Apache ręcznie, otwierając C:\Apache24\bini uruchamiając wiersz polecenia httpd.exe- jeśli nie widzisz błędów, oznacza to, że plik konfiguracyjny jest prawidłowy i PHP najprawdopodobniej działa .

Można przetestować swoją instalację PHP, tworząc plik jak info.phpz <?php phpinfo();wewnątrz i będzie http://localhost/info.php- powinieneś zobaczyć sporo informacji na temat systemu i instalacji PHP i wszystkich jego modułów. Jeśli pojawi się coś innego, jak „Wewnętrzny błąd serwera”, oznacza to, że coś jest nie tak.

Możesz teraz zabić swój obecny proces Apache (Ctrl + C w konsoli) i uruchomić usługę - następująca część nie współpracuje z Apache i można to zrobić przy już uruchomionym serwerze.

Kompozytor - opcjonalnie

Composer to narzędzie do zarządzania zależnościami w PHP, takie jak menedżer pakietów. Pozwala łatwo zainstalować pakiety PHP, a nawet całe frameworki.

Kompozytor wymaga włączenia rozszerzenia PHP OpenSSL, więc włączmy go C:\PHP\php.ini.

Użyj funkcji wyszukiwania w edytorze tekstów, aby wyszukać php_openssl.dll, powinna być już linia z komentarzem, po prostu odkomentuj tę linię.

Teraz pobierz instalator systemu Windows dla kompozytora ze strony pobierania - lub po prostu użyj tego bezpośredniego łącza .

Postępuj zgodnie z instrukcjami, gdy pojawi się monit o ścieżkę do PHP, przejdź do C:\PHPi wybierz php.exe.

To wszystko, Composer jest teraz zainstalowany w całym systemie i można go używać z dowolnego miejsca - możesz go wypróbować, po prostu otwórz nowy wiersz polecenia (nie możesz użyć takiego, który jest już otwarty, ponieważ musi odczytać nową PATHzmienną ustawioną przez Composer instalator) i wpisz composer.

Powinieneś dostać ładne logo ASCII-art i coś takiego:

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

Rozszerzenia PHP MySQL - opcjonalne

Jeśli chcesz uzyskać dostęp do bazy danych MySQL z poziomu PHP, musisz włączyć rozszerzenia, które to umożliwiają, np. php_mysqliLub php_pdo_mysql- Zalecam włączenie obu z nich.

Otwórz plik konfiguracyjny PHP C:\PHP\php.iniw edytorze tekstu i wyszukaj php_mysqlilub php_pdo_mysql- powinny już tam być, odkomentuj je.

Gotowe, teraz można uzyskać dostęp do dowolnej bazy danych MySQL za pomocą jednej mysqlilub PDO.

MySQL

Na stronie pobierania instalatora MySQL pobierz instalator internetowy mysql-installer-web-community-xxxxx.msi.

Użyłem mysql-installer-web-community-5.6.21.1.msi. Najnowsza wersja ostatniej aktualizacji tej odpowiedzi: mysql-installer-web-community-8.0.15.0.msi (spójrz na datę edycji na dole postu).

Instalator automatycznie zainstaluje odpowiednią wersję (32-bitową lub 64-bitową) w zależności od systemu, mimo że wersja bitowa MySQL nie musi być zgodna z wersją Apache i PHP, ale nadal korzystna jest wersja 64-bitowa system obsługuje tę funkcję, aby korzystać z ponad 3 GB pamięci RAM , co jest dość ważne, ponieważ serwery baz danych zwykle używają dużo pamięci RAM.

Postępuj zgodnie z instrukcjami w instalatorze, jeśli instalujesz to dla programistów, Developer defaultbędzie to najlepsza opcja, zainstaluje także MySQL Workbench, który jest rodzimym klientem GUI, dzięki czemu nie musisz instalować powolnych narzędzi internetowych, takich jak PHPMyAdmin, jeśli nie masz doświadczenia w korzystaniu z klienta wiersza poleceń.

Gdy wszystko zostanie zainstalowane, instalator poprosi cię o kilka podstawowych wartości konfiguracyjnych, zalecam wyłączenie opcji „Otwórz port zapory ogniowej dla dostępu do sieci”, chyba że chcesz uzyskać dostęp do bazy danych z innego komputera w sieci.

Ustaw hasło roota - jeśli jest to wyłącznie do celów programistycznych, a zapora blokuje połączenia przychodzące z sieci, silne hasło nie jest konieczne.

Na koniec możesz wyłączyć bezużyteczny MySQL Notifier, klikając prawym przyciskiem myszy ikonę na pasku zadań, przechodząc do opcji Działania -> Opcje, a następnie odznacz pole Run at Windows Startupwyboru i zastosuj. Pozwoli to zaoszczędzić kilka MB pamięci RAM i uniknąć spowolnienia komputera podczas uruchamiania.

I to wszystko, masz teraz w pełni funkcjonalny serwer WAMP, który działa jako usługa i nie zależy od żadnego użytkownika (dostępny, nawet jeśli nikt nie jest zalogowany).

Zauważ, że nie mam pojęcia o bezpieczeństwie tego, dla celów programistycznych powiedziałbym, że jest to dość bezpieczne, ponieważ twoja zapora ogniowa powinna blokować połączenia przychodzące zarówno dla Apache (port 80 i lub 443), jak i MySQL (port 3306).

Zostało to przetestowane na instalacji systemu Windows 7, powinno również dobrze działać w systemach Vista, Windows 8 i ewentualnie Windows Server 2008/2012 - możesz komentować i / lub głosować negatywnie, jeśli tak nie jest.


3
Chciałbym tylko zauważyć, że może być konieczne odkomentowanie linii extension_dir = "ext" dla Windows w php.ini.
chivvijim

@jaffamcneill rzeczywiście miałeś rację, zaktualizowałem swoją odpowiedź, aby to wyjaśnić.

Ypu uratowało mi życie. Walczyłem z tym przez ostatni tydzień, ale mysql po prostu nie zostałby włączony w phpinfo. Naprawiłem to z twoją pomocą. Wielkie dzięki.
clever_bassi,

Kiedy powinniśmy użyć modułu mod_fcgid? Mam problem z tym, że mam wielu użytkowników w systemie, którzy jednocześnie wysyłają wiele żądań. Potrzebuję wersji 64-bitowej, ponieważ brakuje 32-bitowej pamięci (VFP ODBC z dużymi żądaniami raportów). Czy powyższa konfiguracja działałaby dobrze, czy powinienem użyć modułu php_fcgid i zainstalować PHP jako cgi moodule? To mnie zawsze myli ... Dzięki za wgląd.
Jeremy,

1
Kiedy MSVCR110.dllpojawił się błąd (w bieżącej wersji Apache) skończyłem instalowanie Visual C ++ Redistributable 2010 SP1. Potem dostałem kolejny błąd związany z plikiem VCRUNTIME140.dll, który wymagał ode mnie instalacji Visual C ++ Redistributable dla Visual Studio 2015.
Coded Monkey

8

PHP 7

Instrukcje w powyższej odpowiedzi działają idealnie od lipca 2017 r. Jednak jeśli chcesz używać PHP 7, musisz dodać następujące wiersze C:\Apache24\conf\httpd.confzamiast tych w tej odpowiedzi (które działają tylko dla PHP 5) [Dodaj następujące po wszystkich LoadModulewierszach] :

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>

Upewnij się, że wszystkie ścieżki są poprawne. Jeśli nie masz go php7apache2_4.dllw katalogu PHP, prawdopodobnie pobrałeś niewłaściwy pakiet.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.