Jak zainstalować Apache z obsługą PHP i serwerem MySQL w systemie Windows bez użycia gotowych pakietów, takich jak WAMPServer lub XAMPP?
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 Apache24
folder do katalogu głównego dysku twardego, aby uzyskać ścieżkę podobną do C:\Apache24\bin
.
Otwórz okno wiersza poleceń (Windows + R i wpisz, cmd
a następnie naciśnij Enter), zmień katalog na C:\Apache24\bin
i uruchom httpd.exe
, normalnie nie powinien on drukować żadnych błędów.
Jeśli pojawi się okno dialogowe błędu z informacją, że MSVCR110.dll
brakuje w twoim systemie, musisz zainstalować Visual C ++ Redistributable dla Visual Studio 2012 - jak zawsze, gdy pojawi się monit, wybierz odpowiednią wersję bitową: vcredist_x86.exe
dla systemów 32-bitowych i vcredist_x64.exe
64 -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 name
moż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.conf
i edytując ServerName
zmienną (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.
localhost
tylko do - opcjonalneJeś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 local
co 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 Listen
dyrektywę (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 localhost
ma tylko dostęp, wszyscy inni dostaną 403 Forbidden
.
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 PHP
folder 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:\PHP
zmień nazwę php.ini-production
lub php.ini-development
(w zależności od tego, co chcesz) na php.ini
.
Otwórz ten php.ini
plik, wyszukaj extension_dir = "ext"
i odkomentuj ten wiersz (usuń pierwszy ;
). Ustawia domyślny katalog rozszerzenia na ext
(który rozwiązuje C:\PHP\ext
i 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 LoadModule
wierszach 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\bin
i 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.php
z <?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.
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:\PHP
i 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ą PATH
zmienną 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
Jeśli chcesz uzyskać dostęp do bazy danych MySQL z poziomu PHP, musisz włączyć rozszerzenia, które to umożliwiają, np. php_mysqli
Lub php_pdo_mysql
- Zalecam włączenie obu z nich.
Otwórz plik konfiguracyjny PHP C:\PHP\php.ini
w edytorze tekstu i wyszukaj php_mysqli
lub php_pdo_mysql
- powinny już tam być, odkomentuj je.
Gotowe, teraz można uzyskać dostęp do dowolnej bazy danych MySQL za pomocą jednej mysqli
lub PDO
.
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 default
bę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 Startup
wyboru 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.
MSVCR110.dll
pojawił 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 plikiemVCRUNTIME140.dll
, który wymagał ode mnie instalacji Visual C ++ Redistributable dla Visual Studio 2015.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.conf
zamiast tych w tej odpowiedzi (które działają tylko dla PHP 5) [Dodaj następujące po wszystkichLoadModule
wierszach] :Upewnij się, że wszystkie ścieżki są poprawne. Jeśli nie masz go
php7apache2_4.dll
w katalogu PHP, prawdopodobnie pobrałeś niewłaściwy pakiet.źródło