¿Cómo instalo Apache con soporte PHP y el servidor MySQL en Windows sin usar ningún paquete listo para usar como WAMPServer o XAMPP?
Primero, le recomiendo que lea las Notas específicas de la plataforma de Apache para Windows: explica algunas características específicas de Windows, como ejecutarse como un servicio que no tiene en otros sistemas operativos y que probablemente nunca haya usado antes.
Como se menciona en estas notas específicas de la plataforma, Apache no proporciona binarios para Windows, sin embargo, tienen enlaces a varios sitios de terceros que proporcionan binarios, por ejemplo Apache Lounge .
Desde ese sitio web, podemos descargar la versión de 32 bits (win32) o la de 64 bits (Win64); si su sistema operativo es de 64 bits, siempre debe intentar instalar versiones de software de 64 bits, pero tenga en cuenta que También necesitaré usar módulos de 64 bits, eso significa que si solo tiene un módulo de 32 bits, descargue el Apache de 32 bits.
Aquí está la versión que usé al escribir esto: Apache 2.4.10 Win64 . La última versión cuando esta respuesta se actualizó por última vez: Apache 2.4.38 Win64 (mira la fecha de edición en la parte inferior de la publicación).
Una vez descargado, simplemente extraiga la Apache24
carpeta a la raíz de su disco duro, para que tenga una ruta como C:\Apache24\bin
.
Abra una ventana de línea de comandos (Windows + R y escriba y cmd
luego presione Entrar), cambie el directorio C:\Apache24\bin
y ejecútelo httpd.exe
, normalmente no debería imprimir ningún error.
Si MSVCR110.dll
aparece un cuadro de diálogo de error que indica que falta en su sistema, deberá instalar Visual C ++ Redistributable para Visual Studio 2012 ; como siempre, cuando se le solicite, seleccione la versión de bit adecuada: vcredist_x86.exe
para sistemas de 32 bits y vcredist_x64.exe
para 64 -Bit los.
Si recibe un error que dice que no puede vincularse al puerto 80, verifique si otra aplicación usa ese puerto; también se sabe que Skype usa los puertos 80 y 443 de manera predeterminada; desmarque "Usar el puerto 80 y 443 como alternativas para las conexiones entrantes" en su configuración de conexión avanzada , reinicie Skype para aplicar los cambios y luego podrá iniciar Apache sin problemas.
Una advertencia como Could not reliably determine the server's fully qualified domain name
puede ser ignorada por ahora.
Firewall de Windows puede solicitarle que permita que Apache se comunique en redes específicas, le recomiendo que use la configuración predeterminada: permitirlo en redes domésticas y de trabajo, pero no en redes públicas / no confiables.
Luego, abra un navegador y busque http://localhost
, si ve una página que dice It works !
que significa que su instalación de Apache está funcionando.
Ahora puede detener el Apache actualmente en ejecución presionando Ctrl + C en el símbolo del sistema.
Si recibió una advertencia acerca de no poder determinar el nombre de dominio completo del sistema, corríjalo editando C:\Apache24\conf\httpd.conf
y editando la ServerName
variable (ya debería estar allí en un comentario, simplemente descomente y cámbielo):
ServerName <yourhostname>
Reemplace <yourhostname>
con el nombre de host del sistema o localhost
.
Finalmente, si desea ejecutar el servidor automáticamente cuando se inicia el sistema (incluso si nadie inicia sesión), deberá ejecutarlo como un servicio: en un nuevo símbolo del sistema elevado (como administrador), escriba:
httpd.exe -k install
Eso es todo, ahora tiene un nuevo servicio en Servicios (Windows + R, luego escriba "services.msc" y luego presione Intro) llamado "Apache2.4" que puede controlar como cualquier otro servicio de Windows.
localhost
: opcionalSi está configurando esto para fines de desarrollo, desea asegurarse de que nadie, excepto usted, pueda acceder a él, su firewall ya debería ocuparse de eso, pero agreguemos otra capa de seguridad al decirle a Apache que acepte solicitudes del local solo máquina.
Abra el archivo de configuración de Apache C:\Apache24\conf\httpd.conf
, busque el bloque de directorio predeterminado <Directory "c:/Apache24/htdocs">
.
Al final si es así, debe haber una línea Require all granted
, esto significa que cualquiera puede acceder a este servidor. Hagamos lo Require local
que solo permite el acceso desde la máquina local.
Además, puede decirle a Apache que solo se una a la interfaz de bucle invertido, de esa manera, incluso si su firewall y las directivas de control de acceso mencionadas anteriormente fallan, el servidor aún no estará abierto a Internet.
Para esto, ubique la Listen
directiva (de manera predeterminada está configurada en 80
) y cámbiela a lo siguiente:
Listen 127.0.0.1:80
Listen [::1]:80
La primera línea se explica por sí misma, la segunda es el equivalente de IPv6 del primero, los corchetes se usan en la notación de IPv6 para separar la dirección y el puerto.
Guarde el archivo, si ya está ejecutando el servidor, reinícielo para tener en cuenta nuestros cambios, y ahora solo localhost
tiene acceso, todos los demás obtendrán un 403 Forbidden
.
Le sugiero que lea la documentación oficial de PHP sobre cómo instalarlo en sistemas Windows.
Descargue los últimos archivos binarios de PHP de la página oficial de descarga de PHP para Windows , elija la versión segura para subprocesos que coincida con la versión de bits de su instalación de Apache (x86 para 32 bits, x64 para 64 bits).
La versión no segura para subprocesos es solo cuando se ejecuta como un binario CGI: más información aquí .
La versión que utilicé es esta: PHP 5.6.2 VC11 x64 Thread Safe . La última versión cuando esta respuesta se actualizó por última vez: PHP 7.3.3 VC15 x64 Thread Safe (mira la fecha de edición en la parte inferior de la publicación).
Cree una PHP
carpeta vacía en la raíz de su disco duro y extraiga el archivo descargado previamente allí, debería tener una ruta como C:\PHP\ext
, de lo contrario, hizo algo mal.
En C:\PHP
, cambie el nombre de php.ini-production
o php.ini-development
(según lo que desee) a php.ini
.
Abra ese php.ini
archivo, busque extension_dir = "ext"
y elimine el comentario de esa línea (elimine el primero ;
). Esto establece el directorio de extensión predeterminado en ext
(que resuelve C:\PHP\ext
y evita tener que anteponer ext/
todas las rutas de extensión manualmente como en versiones anteriores de esta publicación.
Ahora configure Apache para usar ese PHP, editando C:\Apache24\conf\httpd.conf
; después de todas las LoadModule
líneas, agregue lo siguiente:
(El seguimiento es para PHP 7 solamente )
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>
(El siguiente es para PHP 5 solamente )
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>
Ahora intente iniciar Apache manualmente abriendo un símbolo del sistema C:\Apache24\bin
y ejecutándolo httpd.exe
; si no ve errores, significa que su archivo de configuración es válido y que PHP probablemente esté funcionando .
Puede probar la instalación de PHP mediante la creación de un archivo como info.php
con <?php phpinfo();
el interior e ir a http://localhost/info.php
- debería ver un poco de información sobre el sistema y la instalación de PHP y todos sus módulos. Si obtiene algo más como un "Error interno del servidor", significa que algo está mal.
Ahora puede eliminar su proceso actual de Apache (Ctrl + C en la consola) e iniciar el servicio: la siguiente parte no interactúa con Apache y se puede hacer con el servidor ya iniciado.
Composer es una herramienta para la gestión de dependencias en PHP, como un administrador de paquetes. Permite instalar fácilmente paquetes PHP e incluso marcos completos.
Composer requiere que la extensión PHP OpenSSL esté habilitada, así que habilítela en C:\PHP\php.ini
.
Use la función de búsqueda de su editor de texto para buscar php_openssl.dll
, ya debería haber una línea comentada, solo descomente esa línea.
Ahora descargue el instalador de Windows de Composer desde su página de descarga , o simplemente use este enlace directo .
Siga las instrucciones, cuando se le solicite la ruta a PHP, busque C:\PHP
y seleccione php.exe
.
Eso es todo, Composer ahora está instalado en todo el sistema y se puede usar desde cualquier lugar: puede probarlo, solo abra un nuevo símbolo del sistema (no puede usar uno que ya esté abierto, ya que necesita leer la nueva PATH
variable establecida por Composer instalador) y tipo composer
.
Debería obtener un bonito logotipo de arte ASCII y algo como esto:
Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28
Si desea acceder a su base de datos MySQL desde PHP, deberá habilitar extensiones que le permitan hacerlo, como php_mysqli
o php_pdo_mysql
- Recomiendo habilitar ambas.
Abra el archivo de configuración de PHP C:\PHP\php.ini
en su editor de texto y busque php_mysqli
o php_pdo_mysql
, ya deberían estar allí, descomentarlos.
Hecho, ahora puede acceder a cualquier base de datos MySQL usando mysqli
o PDO
.
En la página de descarga del instalador MySQL, descargue el instalador web mysql-installer-web-community-xxxxx.msi
.
Usé mysql-installer-web-community-5.6.21.1.msi. La última versión cuando esta respuesta se actualizó por última vez: mysql-installer-web-community-8.0.15.0.msi (mira la fecha de edición en la parte inferior de la publicación).
El instalador instalará automáticamente la versión adecuada (32 bits o 64 bits) dependiendo de su sistema, aunque la versión de bits de MySQL no tiene que coincidir con la de Apache y PHP, pero aún así es beneficioso usar la versión de 64 bits de su el sistema lo admite para aprovechar más de 3 GB de RAM , eso es bastante importante ya que los servidores de bases de datos tienden a usar mucha RAM.
Siga los pasos en el instalador, si está instalando esto para el desarrollo, entonces Developer default
será su mejor opción, también instalará MySQL Workbench, que es un cliente GUI nativo, evitando así que tenga que instalar herramientas lentas basadas en la web como PHPMyAdmin si no se siente cómodo con el uso del cliente de línea de comandos.
Una vez que todo esté instalado, el instalador le pedirá algunos valores de configuración básicos, le recomiendo deshabilitar "Abrir puerto de firewall para acceso a la red" a menos que desee acceder a la base de datos desde otra máquina en la red.
Establezca la contraseña de root: si es solo para fines de desarrollo y su firewall bloquea las conexiones entrantes de la red, entonces no es necesaria una contraseña segura.
Finalmente, puede deshabilitar el inútil MySQL Notifier haciendo clic derecho en el icono de la bandeja, yendo a Acciones -> Opciones, luego desmarque la Run at Windows Startup
casilla y aplique. Eso le ahorrará unos pocos MB de RAM y evitará ralentizar su máquina cuando se inicia.
Y eso es todo, ahora tiene un servidor WAMP completamente funcional que se ejecuta como un servicio y no depende de ningún usuario (accesible incluso si nadie está conectado).
Tenga en cuenta que no tengo idea sobre la seguridad de esto, para fines de desarrollo, diría que esto es bastante seguro ya que su firewall debe bloquear las conexiones entrantes tanto para Apache (puerto 80 y 443) como para MySQL (puerto 3306).
Esto se probó en una instalación de Windows 7, también debería funcionar bien en Vista, Windows 8 y posiblemente en Windows Server 2008/2012, siéntase libre de comentar y / o votar si ese no es el caso.
MSVCR110.dll
apareció el error (en la versión actual de Apache) terminé instalando Visual C ++ Redistributable 2010 SP1. Luego recibí otro error sobre el archivoVCRUNTIME140.dll
, que me obligó a instalar Visual C ++ Redistributable para Visual Studio 2015.PHP 7
Las instrucciones en la respuesta anterior funcionan perfectamente a partir de julio de 2017, sin embargo, si desea utilizar PHP 7, debe agregar las siguientes líneas
C:\Apache24\conf\httpd.conf
, en lugar de las de esa respuesta (que funcionan solo para PHP 5) [Agregue lo siguiente después de todas lasLoadModule
líneas] :Asegúrese de que todas las rutas sean correctas. Si no tiene
php7apache2_4.dll
en su directorio PHP, probablemente descargó el paquete incorrecto.fuente