Comment installer manuellement Apache, PHP et MySQL sur Windows?

48

Comment installer Apache avec le support PHP et le serveur MySQL sous Windows sans utiliser de progiciels prêts à l'emploi tels que WAMPServer ou XAMPP?


la source

Réponses:

65

Apache

Tout d’abord, je vous recommande de lire les Notes spécifiques à la plate - forme d’Apache pour Windows; elles expliquent certaines fonctionnalités spécifiques à Windows, telles que l’exécution de services en tant que services que vous n’avez pas sur d’autres systèmes d’exploitation et que vous n’avez probablement jamais utilisées auparavant.

Comme indiqué dans ces notes spécifiques à la plate-forme, Apache ne fournit pas de fichiers binaires pour Windows. Toutefois, ils ont des liens vers plusieurs sites tiers fournissant des fichiers binaires, par exemple Apache Lounge .

Sur ce site Web, nous pouvons télécharger la version 32 bits (win32) ou la version 64 bits (Win64). Si votre système d’exploitation est à 64 bits, vous devez toujours essayer d’installer des versions 64 bits du logiciel. Vous devrez également utiliser des modules 64 bits, ce qui signifie que si vous ne possédez qu'un module 32 bits, téléchargez Apache 32 bits.

Voici la version que j'ai utilisée pour écrire ceci: Apache 2.4.10 Win64 . Dernière version à laquelle cette réponse a été mise à jour pour la dernière fois: Apache 2.4.38 Win64 (regardez la date d'édition au bas de l'article).

Une fois téléchargé, extrayez simplement le Apache24dossier à la racine de votre disque dur, de sorte que vous ayez un chemin similaire à C:\Apache24\bin.

Ouvrez une fenêtre de ligne de commande (Windows + R et tapez cmdpuis appuyez sur Entrée), changez de répertoire C:\Apache24\binet exécutez-le httpd.exe, normalement, il ne devrait pas imprimer d'erreur.

Si vous obtenez une boîte de dialogue d'erreur indiquant qu'il MSVCR110.dllmanque à votre système, vous devez installer Visual C ++ Redistributable pour Visual Studio 2012 - comme toujours, lorsque vous y êtes invité, sélectionnez la version de bit appropriée: vcredist_x86.exepour les systèmes 32 bits et vcredist_x64.exepour 64 -Les bits.

Si vous obtenez une erreur indiquant qu'elle ne peut pas se lier au port 80, vérifiez si une autre application utilise ce port. De plus, Skype est connu pour utiliser les ports 80 et 443 par défaut. Décochez la case "Utiliser les ports 80 et 443 comme alternatives pour les connexions entrantes" dans ses paramètres de connexion avancés , redémarrez Skype pour appliquer les modifications, puis vous devriez pouvoir démarrer Apache sans problème.

Un avertissement comme Could not reliably determine the server's fully qualified domain namepeut être ignoré pour le moment.

Le pare-feu Windows peut vous demander d'autoriser Apache à communiquer sur des réseaux spécifiques. Je vous recommande d'utiliser les paramètres par défaut: autorisez-le sur les réseaux domestique et professionnel, mais pas sur les réseaux publics / non fiables.

Ensuite, ouvrez un navigateur et accédez à http://localhost, si une page indique que It works !cela signifie que votre installation Apache fonctionne.

Vous pouvez maintenant arrêter Apache en cours d'exécution en appuyant sur Ctrl + C dans l'invite de commande.

Si vous êtes averti de ne pas être en mesure de déterminer le nom de domaine complet du système, corrigez-le en modifiant C:\Apache24\conf\httpd.confet en modifiant la ServerNamevariable (elle devrait déjà figurer dans un commentaire, décommentez-la et changez-la):

ServerName <yourhostname>

Remplacez- <yourhostname>le par le nom d'hôte du système ou par localhost.

Enfin, si vous souhaitez exécuter le serveur automatiquement au démarrage du système (même si personne ne se connecte), vous devez l'exécuter en tant que service - dans une nouvelle invite de commande avec privilèges élevés (en tant qu'administrateur), tapez:

httpd.exe -k install

Ça y est, vous avez maintenant un nouveau service dans Services (Windows + R puis tapez "services.msc" puis appuyez sur Entrée) nommé "Apache2.4" que vous pouvez contrôler comme tout autre service Windows.

Limiter l'accès à Apache localhostuniquement - facultatif

Si vous configurez ceci à des fins de développement, vous voulez vous assurer que personne d'autre que vous ne pouvez y accéder, votre pare-feu devrait déjà s'en charger, mais ajoutons un autre niveau de sécurité en disant à Apache d'accepter les demandes du serveur local. machine seulement.

Ouvrez le fichier de configuration d'Apache C:\Apache24\conf\httpd.conf, recherchez le bloc de répertoire par défaut <Directory "c:/Apache24/htdocs">.

À la fin, s'il y a lieu, il devrait y avoir une ligne Require all granted, cela signifie que tout le monde peut accéder à ce serveur. Faisons ce Require localqui permet uniquement l'accès depuis la machine locale.

En outre, vous pouvez indiquer à Apache de ne se lier qu'à l'interface de bouclage, même si votre pare-feu et les directives de contrôle d'accès mentionnées ci-dessus échouent, le serveur ne sera toujours pas ouvert à l'ensemble de l'internet.

Pour cela, localisez la Listendirective (par défaut, elle est définie sur 80) et modifiez-la comme suit:

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

La première ligne est explicite, la seconde est son équivalent IPv6, les crochets sont utilisés dans la notation IPv6 pour séparer l'adresse et le port.

Enregistrez le fichier, si vous exécutez déjà le serveur, puis redémarrez-le afin de prendre en compte nos modifications, et n’a maintenant plus localhostaccès qu’à un accès, tous les autres utilisateurs recevront un 403 Forbidden.

PHP

Je vous suggère de lire la documentation officielle de PHP concernant son installation sur les systèmes Windows.

Téléchargez les derniers fichiers binaires PHP à partir de la page de téléchargement officielle de PHP pour Windows , choisissez la version adaptée aux threads qui correspond à la version bit de votre installation Apache (x86 pour 32 bits, x64 pour 64 bits).

La version non-thread-safe est uniquement utilisée en binaire CGI - plus d'informations ici .

La version que j'ai utilisée est la suivante: PHP 5.6.2 Thread Safe de VC11 x64 . Dernière version lorsque cette réponse a été mise à jour pour la dernière fois: PHP 7.3.3 Thread Safe pour VC15 x64 (regardez la date d'édition au bas de l'article).

Créez un PHPdossier vide à la racine de votre disque dur et extrayez l'archive précédemment téléchargée, vous devriez avoir un chemin tel que C:\PHP\ext, sinon vous avez fait quelque chose de mal.

Dans C:\PHP, renommez le php.ini-productionou php.ini-development(selon ce que vous voulez) php.ini.

Ouvrez ce php.inifichier, recherchez extension_dir = "ext"et décommentez cette ligne (supprimez la première ;). Ceci définit le répertoire d'extension par défaut sur ext(ce qui résout C:\PHP\extet évite d'avoir à ajouter ext/manuellement tous les chemins des extensions comme dans les versions précédentes de ce message.

Configurez maintenant Apache pour qu’il utilise PHP, en le modifiant C:\Apache24\conf\httpd.conf- après toutes les LoadModulelignes, ajoutez ce qui suit:

(La suite est pour PHP 7 seulement )

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>

(Ce qui suit concerne uniquement 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>

Essayez maintenant de démarrer Apache manuellement en ouvrant une invite de commande C:\Apache24\binet en cours d'exécution httpd.exe. Si vous ne voyez aucune erreur, cela signifie que votre fichier de configuration est valide et que PHP fonctionne probablement .

Vous pouvez tester votre installation PHP en créant un fichier comme info.phpavec <?php phpinfo();dedans et aller dans http://localhost/info.php- vous devriez voir pas mal d'informations sur votre système, votre installation PHP et tous ses modules. Si vous obtenez autre chose comme une "erreur de serveur interne", cela signifie que quelque chose ne va pas.

Vous pouvez maintenant tuer votre processus Apache actuel (Ctrl + C dans la console) et démarrer le service - la partie suivante n'interagit pas avec Apache et peut être effectuée avec le serveur déjà démarré.

Compositeur - facultatif

Composer est un outil de gestion des dépendances en PHP, à la manière d'un gestionnaire de paquets. Cela permet d'installer facilement des paquets PHP et même des frameworks entiers.

Composer nécessite que l'extension PHP OpenSSL soit activée. Activez-la donc C:\PHP\php.ini.

Utilisez la fonction de recherche de votre éditeur de texte pour rechercher php_openssl.dll, il devrait déjà y avoir une ligne commentée, décommentez simplement cette ligne.

Téléchargez maintenant l'installateur Windows de Composer à partir de leur page de téléchargement - ou utilisez simplement ce lien direct .

Suivez les instructions. Lorsque vous êtes invité à indiquer le chemin d'accès à PHP, recherchez C:\PHPet sélectionnez php.exe.

Ça y est, Composer est maintenant installé à l’échelle du système et peut être utilisé n’importe où. Vous pouvez l’essayer en ouvrant simplement une nouvelle invite de commande (vous ne pouvez pas en utiliser une qui est déjà ouverte, car elle doit lire la nouvelle PATHvariable définie par Composer. installateur) et le type composer.

Vous devriez obtenir un joli logo ASCII-art et quelque chose comme ceci:

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

Extensions PHP MySQL - facultatif

Si vous souhaitez accéder à votre base de données MySQL à partir de PHP, vous devez activer les extensions qui vous permettent de le faire, comme php_mysqliou php_pdo_mysql- je vous recommande de les activer toutes les deux.

Ouvrez le fichier de configuration de PHP C:\PHP\php.inidans votre éditeur de texte et recherchez php_mysqliou php_pdo_mysql- ils devraient déjà être là, décommentez-les.

C'est fait, vous pouvez maintenant accéder à n'importe quelle base de données MySQL en utilisant soit, mysqlisoit PDO.

MySQL

Sur la page de téléchargement du programme d'installation MySQL, téléchargez le programme d'installation Web mysql-installer-web-community-xxxxx.msi.

J'ai utilisé mysql-installer-web-community-5.6.21.1.msi. La dernière version de cette réponse date de la dernière mise à jour: mysql-installer-web-community-8.0.15.0.msi (consultez la date de modification au bas de l'article).

Le programme d’installation installera automatiquement la version appropriée (32 bits ou 64 bits) en fonction de votre système, même si la version bit de MySQL ne doit pas nécessairement correspondre à celle d’Apache et de PHP, mais il est toujours avantageux d’utiliser la version 64 bits de votre ordinateur. Le système le prend en charge pour tirer parti de plus de 3 Go de RAM , ce qui est très important, car les serveurs de bases de données ont tendance à utiliser beaucoup de RAM.

Suivez les étapes du programme d'installation. Si vous installez ceci pour le développement, alors ce Developer defaultsera votre meilleure option. Il installera également MySQL Workbench, un client d'interface graphique natif, vous évitant ainsi d'avoir à installer des outils Web lents tels que PHPMyAdmin si vous n'êtes pas à l'aise avec le client en ligne de commande.

Une fois que tout est installé, le programme d'installation vous demandera quelques valeurs de configuration de base. Je vous recommande de désactiver "Ouvrir le port du pare-feu pour l'accès au réseau", sauf si vous souhaitez accéder à la base de données à partir d'un autre ordinateur du réseau.

Définissez le mot de passe root - si c'est uniquement à des fins de développement et que votre pare-feu bloque les connexions entrantes du réseau, un mot de passe fort n'est pas nécessaire.

Enfin, vous pouvez désactiver le Notifier inutile MySQL en cliquant avec le bouton droit de la souris sur l’icône de la barre des tâches, en allant dans Actions -> Options, puis en décochant la Run at Windows Startupcase à cocher et en appliquant. Cela vous permettra d'économiser quelques Mo de RAM et d'éviter de ralentir votre ordinateur au démarrage.

Et voilà, vous avez maintenant un serveur WAMP entièrement fonctionnel qui fonctionne en tant que service et ne dépend d'aucun utilisateur (accessible même si personne n'est connecté).

Notez que je n'ai aucune idée de la sécurité de cette opération. Aux fins du développement, je dirais que c'est assez sûr, car votre pare-feu doit bloquer les connexions entrantes pour Apache (ports 80 et ou 443) et MySQL (port 3306).

Ceci a été testé sur une installation de Windows 7, il devrait également fonctionner parfaitement sous Vista, Windows 8 et éventuellement Windows Server 2008/2012 - n'hésitez pas à commenter et / ou à voter si ce n'est pas le cas.

Zacharie Raman
la source
3
Je voudrais juste noter qu'il pourrait être nécessaire de décommenter la ligne extension_dir = "ext" pour Windows dans php.ini.
Chivvijim
@ jaffamcneill en effet vous aviez raison, j'ai mis à jour ma réponse pour en tenir compte.
Ypu m'a sauvé la vie. Je me débattais avec cela depuis une semaine mais mysql ne serait tout simplement pas activé dans phpinfo. Je l'ai réparé avec votre aide. Merci beaucoup.
clever_bassi
Quand devrions-nous utiliser le module mod_fcgid? J'ai un problème si de nombreux utilisateurs utilisent simultanément le système pour faire plusieurs demandes. J'ai besoin d'une version 64 bits car la mémoire 32 bits manque de mémoire (ODBC VFP avec de nombreuses demandes de rapports). Votre configuration ci-dessus fonctionnerait-elle correctement ou dois-je utiliser le module php_fcgid et installer PHP en tant que cgi moodule? Cela me confond toujours ... Merci pour toute idée.
Jeremy
1
Lorsque l' MSVCR110.dllerreur est apparue (sur la version actuelle d'Apache), j'ai fini par installer Visual SP ++ Redistributable 2010 SP1. Ensuite, j'ai eu une autre erreur à propos du fichier VCRUNTIME140.dll, qui m'a obligé à installer Visual C ++ Redistributable pour Visual Studio 2015.
Coded Monkey
8

PHP 7

Les instructions de la réponse ci-dessus fonctionnent parfaitement à compter de juillet 2017. Toutefois, si vous souhaitez utiliser PHP 7, vous devez ajouter les lignes suivantes à la C:\Apache24\conf\httpd.confplace de celles de cette réponse (qui ne fonctionnent que pour PHP 5) [Ajoutez le suivant après toutes les LoadModulelignes] :

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>

Assurez-vous que tous les chemins sont corrects. Si vous n'avez pas php7apache2_4.dlldans votre répertoire PHP, vous avez probablement téléchargé le mauvais paquet.

Rahuldottech
la source