Come installare manualmente Apache, PHP e MySQL su Windows?


48

Come posso installare Apache con il supporto PHP e il server MySQL su Windows senza utilizzare pacchetti pronti per l'uso come WAMPServer o XAMPP?

Risposte:


65

Apache

Per prima cosa, ti consiglio di leggere le Note specifiche sulla piattaforma di Apache per Windows - spiega alcune funzionalità specifiche di Windows come l'esecuzione come servizio che non hai su altri sistemi operativi e che probabilmente non hai mai usato prima.

Come menzionato in queste note specifiche della piattaforma, Apache non fornisce file binari per Windows, tuttavia hanno collegamenti a diversi siti di terze parti che forniscono file binari, ad esempio Apache Lounge .

Da quel sito Web, possiamo scaricare la versione a 32 bit (win32) o quella a 64 bit (Win64) - se il tuo sistema operativo è a 64 bit, dovresti sempre provare a installare versioni di software a 64 bit, ma tieni presente che Dovrai utilizzare anche i moduli a 64 bit, ciò significa che se hai solo un modulo a 32 bit, scarica l'Apache a 32 bit.

Ecco la versione che ho usato per scrivere questo: Apache 2.4.10 Win64 . L'ultima versione dell'ultimo aggiornamento di questa risposta: Apache 2.4.38 Win64 (guarda la data di modifica in fondo al post).

Una volta scaricato, basta estrarre la Apache24cartella nella radice del disco rigido, in modo da avere un percorso simile C:\Apache24\bin.

Apri una finestra della riga di comando (Windows + R e digita, cmdquindi premi Invio), modifica la directory in C:\Apache24\bined esegui httpd.exe, normalmente non dovrebbe stampare alcun errore.

Se viene visualizzata una finestra di dialogo di errore che indica che MSVCR110.dllmanca sul sistema, è necessario installare il ridistribuibile di Visual C ++ per Visual Studio 2012 - come sempre, quando richiesto, selezionare la versione di bit appropriata: vcredist_x86.exeper i sistemi a 32 bit e vcredist_x64.exeper 64 -Bit quelli.

Se ricevi un errore che dice che non può essere associato alla porta 80, controlla se un'altra applicazione utilizza quella porta - anche Skype è noto per usare le porte 80 e 443 per impostazione predefinita; deseleziona "Usa le porte 80 e 443 come alternative per le connessioni in entrata" nelle sue impostazioni di connessione avanzate , riavvia Skype per applicare le modifiche, quindi dovresti essere in grado di avviare Apache senza problemi.

Un avvertimento come Could not reliably determine the server's fully qualified domain namepuò essere ignorato per ora.

Windows Firewall potrebbe richiedere di consentire ad Apache di comunicare su reti specifiche, ti consiglio di utilizzare le impostazioni predefinite: consentilo su reti domestiche e di lavoro, ma non su reti pubbliche / non attendibili.

Quindi, apri un browser e cerca http://localhost, se vedi una pagina che dice It works !che significa che l'installazione di Apache funziona.

Ora puoi interrompere l'Apache attualmente in esecuzione premendo Ctrl + C nel prompt dei comandi.

Se ricevi un avviso di non essere in grado di determinare il nome di dominio completo del sistema, correggilo modificando C:\Apache24\conf\httpd.confe modificando la ServerNamevariabile (dovrebbe essere già presente in un commento, basta decommentarlo e cambiarlo):

ServerName <yourhostname>

Sostituisci <yourhostname>con il nome host del sistema o localhost.

Infine, se vuoi eseguire il server automaticamente all'avvio del sistema (anche se nessuno accede), dovrai eseguirlo come servizio - in un nuovo prompt dei comandi con privilegi elevati (come amministratore), digita:

httpd.exe -k install

Ecco fatto, ora hai un nuovo servizio in Servizi (Windows + R, quindi digita "services.msc" quindi premi Invio) denominato "Apache2.4" che puoi controllare come qualsiasi altro servizio Windows.

Limitare l'accesso di Apache a localhostsolo - facoltativo

Se stai configurando questo per scopi di sviluppo, vuoi assicurarti che nessuno tranne te possa accedervi, il tuo firewall dovrebbe già occuparsene ma aggiungiamo un altro livello di sicurezza dicendo ad Apache di accettare richieste dal locale solo macchina.

Apri il file di configurazione di Apache C:\Apache24\conf\httpd.conf, cerca il blocco di directory predefinito <Directory "c:/Apache24/htdocs">.

Alla fine, se ci fosse, dovrebbe esserci una linea Require all granted, questo significa che chiunque può accedere a questo server. Facciamo quello Require localche consente l'accesso solo dal computer locale.

Inoltre, puoi dire ad Apache di collegarsi solo all'interfaccia di loopback, in questo modo anche se il tuo firewall e le direttive di controllo degli accessi sopra menzionati falliscono, il server non sarà ancora aperto a tutta Internet.

Per questo, individuare la Listendirettiva (per impostazione predefinita è impostata su 80) e modificarla come segue:

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

La prima riga si spiega da sé, la seconda è la prima equivalente a IPv6, le parentesi sono usate nella notazione IPv6 per separare l'indirizzo e la porta.

Salva il file, se stai già eseguendo il server, riavvialo per tenere conto delle nostre modifiche e ora localhostha accesso solo , tutti gli altri riceveranno un 403 Forbidden.

PHP

Ti suggerisco di leggere la documentazione ufficiale di PHP sull'installazione su sistemi Windows.

Scarica gli ultimi binari PHP dalla pagina di download ufficiale di PHP per Windows , scegli la versione thread-safe che corrisponde alla versione bit dell'installazione di Apache (x86 per 32-Bit, x64 per 64-Bit).

La versione non thread-safe è solo quando eseguita come binario CGI - maggiori informazioni qui .

La versione che ho usato è questa: PHP 5.6.2 VC11 x64 Thread Safe . L'ultima versione dell'ultimo aggiornamento di questa risposta: PHP 7.3.3 VC15 x64 Thread Safe (guarda la data di modifica in fondo al post).

Crea una PHPcartella vuota alla radice del tuo disco rigido ed estrai lì l'archivio precedentemente scaricato, dovresti avere un percorso simile C:\PHP\ext, altrimenti hai fatto qualcosa di sbagliato.

In C:\PHP, rinominare php.ini-productiono php.ini-development(a seconda di ciò che si desidera) in php.ini.

Apri quel php.inifile, cerca extension_dir = "ext"e decommenta quella riga (rimuovi il primo ;). Questo imposta la directory di estensione predefinita su ext(che si risolve C:\PHP\exted evita di dover anteporre ext/manualmente a tutti i percorsi dell'estensione come nelle versioni precedenti di questo post.

Ora configura Apache per usare quel PHP, modificando C:\Apache24\conf\httpd.conf- dopo tutte le LoadModulerighe, aggiungi quanto segue:

(Il seguito è per PHP 7 solo )

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>

(Il seguente è per PHP 5 solo )

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>

Ora prova ad avviare Apache manualmente aprendo C:\Apache24\bined eseguendo un prompt dei comandi httpd.exe- se non vedi errori, significa che il tuo file di configurazione è valido e PHP molto probabilmente funziona .

Puoi testare la tua installazione di PHP creando un file simile info.phpa <?php phpinfo();inside e andando a http://localhost/info.php: dovresti vedere un bel po 'di informazioni sul tuo sistema, sulla tua installazione di PHP e su tutti i suoi moduli. Se ricevi qualcos'altro come un "Errore interno del server", significa che qualcosa non va.

Ora puoi terminare il tuo attuale processo Apache (Ctrl + C nella console) e avviare il servizio: la parte seguente non interagisce con Apache e può essere eseguita con il server già avviato.

Compositore - opzionale

Composer è uno strumento per la gestione delle dipendenze in PHP, come un gestore di pacchetti. Permette di installare facilmente pacchetti PHP e persino interi framework.

Composer richiede che l'estensione PHP OpenSSL sia abilitata, quindi abilitiamola in C:\PHP\php.ini.

Usa la funzione di ricerca del tuo editor di testo per cercare php_openssl.dll, dovrebbe esserci già una riga commentata, basta decommentare quella riga.

Ora scarica il programma di installazione di Windows di Composer dalla loro pagina di download o usa semplicemente questo link diretto .

Seguire le istruzioni, quando viene richiesto il percorso per PHP, navigare C:\PHPe selezionare php.exe.

Ecco fatto, Composer è ora installato a livello di sistema e può essere utilizzato da qualsiasi luogo: puoi provarlo, basta aprire un nuovo prompt dei comandi (non puoi usarne uno che è già aperto poiché deve leggere la nuova PATHvariabile impostata da Composer installatore) e digitare composer.

Dovresti ottenere un bel logo ASCII-art e qualcosa del genere:

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

Estensioni MySQL PHP - facoltative

Se vuoi accedere al tuo database MySQL da PHP, dovrai abilitare le estensioni che ti consentono di farlo, come php_mysqlio php_pdo_mysql- ti consiglio di abilitarle entrambe.

Apri il file di configurazione di PHP C:\PHP\php.ininel tuo editor di testo e cerca php_mysqlio php_pdo_mysql- dovrebbero già essere lì, decommentarli.

Fatto, ora puoi accedere a qualsiasi database MySQL usando mysqlio PDO.

MySQL

Nella pagina di download del programma di installazione di MySQL scaricare il programma di installazione Web mysql-installer-web-community-xxxxx.msi.

Ho usato mysql-installer-web-community-5.6.21.1.msi. L'ultima versione dell'ultimo aggiornamento di questa risposta: mysql-installer-web-community-8.0.15.0.msi (guarda la data di modifica in fondo al post).

Il programma di installazione installerà automaticamente la versione appropriata (32-Bit o 64-Bit) a seconda del sistema, anche se la versione di MySQL non deve corrispondere a quella di Apache e PHP, ma è comunque utile utilizzare la versione a 64 bit del il sistema lo supporta per sfruttare più di 3 GB di RAM , il che è abbastanza importante poiché i server di database tendono ad usare molta RAM.

Segui i passaggi nel programma di installazione, se lo stai installando per lo sviluppo, allora Developer defaultsarà la tua migliore opzione, installerà anche MySQL Workbench che è un client GUI nativo, evitando così di dover installare strumenti basati sul web lenti come PHPMyAdmin se non si ha familiarità con l'uso del client della riga di comando.

Una volta installato tutto, il programma di installazione richiederà alcuni valori di configurazione di base, consiglio di disabilitare "Apri porta firewall per l'accesso alla rete" a meno che non si desideri accedere al database da un'altra macchina sulla rete.

Imposta la password di root: se è solo a scopo di sviluppo e il firewall blocca le connessioni in entrata dalla rete, non è necessaria una password complessa.

Infine, puoi disabilitare l'inutile MySQL Notifier facendo clic con il pulsante destro del mouse sull'icona nella barra delle applicazioni, andando in Azioni -> Opzioni, quindi deseleziona la Run at Windows Startupcasella di controllo e applica. Ciò ti farà risparmiare qualche MB di RAM ed eviterà di rallentare il tuo computer all'avvio.

E il gioco è fatto, ora hai un server WAMP completamente funzionante che funziona come un servizio e non dipende da nessun utente (accessibile anche se nessuno ha effettuato l'accesso).

Si noti che non ho idea della sicurezza di questo, per scopi di sviluppo direi che è abbastanza sicuro poiché il tuo firewall dovrebbe bloccare le connessioni in entrata sia per Apache (porta 80 o 443) che MySQL (porta 3306).

Questo è stato testato su un'installazione di Windows 7, dovrebbe anche funzionare bene su Vista, Windows 8 e possibilmente su Windows Server 2008/2012 - non esitare a commentare e / o a sottoporre a votazione in caso contrario.


3
Vorrei solo notare che potrebbe essere necessario decommentare la riga extension_dir = "ext" per Windows in php.ini.
Chivvijim,

@jaffamcneill in effetti avevi ragione, ho aggiornato la mia risposta per renderlo conto.

Ypu mi ha salvato la vita. Stavo lottando con questo da una settimana, ma mysql non sarebbe stato abilitato in phpinfo. L'ho risolto con il tuo aiuto. Grazie mille.
clever_bassi il

Quando dovremmo usare il modulo mod_fcgid? Ho un problema se ho numerosi utenti nel sistema che fanno contemporaneamente più richieste. Ho bisogno di una versione a 64 bit poiché la memoria a 32 bit esaurisce (VFP ODBC con pesanti richieste di rapporti). La tua configurazione sopra funzionerebbe bene o devo usare il modulo php_fcgid e installare PHP come cgi moodule? Questo mi confonde sempre ... Grazie per qualsiasi approfondimento.
Jeremy,

1
Quando MSVCR110.dllè apparso l' errore (sulla versione corrente di Apache) ho finito per installare Visual C ++ Redistributable 2010 SP1. Successivamente ho ricevuto un altro errore sul file VCRUNTIME140.dll, che mi ha richiesto di installare Visual C ++ ridistribuibile per Visual Studio 2015.
Coded Monkey,

8

PHP 7

Le istruzioni nella risposta sopra funzionano perfettamente a partire da luglio 2017, tuttavia, se si desidera utilizzare PHP 7, è necessario aggiungere le seguenti righe C:\Apache24\conf\httpd.conf, anziché quelle in quella risposta (che funzionano solo per PHP 5) [Aggiungere quanto segue dopo tutte le LoadModulerighe] :

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>

Assicurarsi che tutti i percorsi siano corretti. Se non hai php7apache2_4.dllnella tua directory PHP, probabilmente hai scaricato il pacchetto sbagliato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.