Categorías
Sysadmin

Servidor Web + PHP7 para Win :(

Si el computador que usas es de una empresa y para instalar programas necesitas permisos de administrador, te muestro con como instalar un servidor web ultra liviano y facil de configurar.

A continuación la receta:

  1. Descarga de la página principal de Nginx la versión estable.
  2. Descomprime el archivo y coloca la carpeta dentro de la unidad C:
  3. Dentro de la carpeta \nginx-1.18.0\conf\nginx.conf cambia la configuración del puerto 80 a 8080, puede ser otro puerto.
  4. Desde la misma ventana del explorador de archivos de win sobre la ruta donde esta el .exe, borra la ruta y escribe cmd, esto te abrira un cmd ya dentro de misma.
  5. Ejecuta el programa con Nginx + Enter
  6. En un browser escribe localhost:8080 o 127.0.0.1:8080 y listo servidor web.
  7. Para ver las opciones en la linea de comandos ejecuta Nginx -h y despliega los parametros que puedes usar, verifica en el administrador de tarea que el servicio es UP !, para bajar el server basta con que abras otro cmd y ejecutes el comando nginx -s stop Vamos a configurar PHP7 pero ya !:
  8. Vamos a la pagina oficial de PHP y descargamos https://windows.php.net/download#php-7.4 según tu arquitectura del computador la versión del PHP (VC15 x64 Thread Safe), Non Thread Safe indica que no es multi-hilo.
  9. En mi caso lo descomprimi dentro de la carpeta de Nginx.
  10. Busca y copia este archivo php.ini-development y pegalo alli mismo y renombralo como php.ini
  11. Edita ese archivo de configuración y busca doc_root = aca colocas las ruta del Servidor Web en mi caso es «C:/nginx-1.18.0/html» (Cambia lo que esta entre comillado);
  12. Busca ;extension_dir = «ext» y cambialo por esto extension_dir = «C:/nginx-1.18.0/php-7.4.5-Win32-vc15-x64/ext», elimina el ;
  13. Busca ;cgi.force_redirect = 1 y remplaza por cgi.force_redirect = 0
  14. Busca y remplaza de la siguiente manera:
    extension=bz2
    extension=curl
    extension=ffi
    extension=ftp
    extension=fileinfo
    extension=gd2
    extension=gettext
    ;extension=gmp
    ;extension=intl
    ;extension=imap
    ;extension=ldap
    extension=mbstring
    ;extension=exif ; Must be after mbstring as it depends on it
    extension=mysqli
    ;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
    extension=odbc
    extension=openssl
    ;extension=pdo_firebird
    extension=pdo_mysql
    ;extension=pdo_oci
    extension=pdo_odbc
    extension=pdo_pgsql
    ;extension=pdo_sqlite
    extension=pgsql
    ;extension=shmop

extension=soap
;extension=sockets
;extension=sodium
extension=sqlite3
;extension=tidy
extension=xmlrpc
;extension=xsl

  1. Entra en el archivo de configuración Nginx, busca y descomenta de la siguiente manera: (Recuerda cambiar las ruta según el nombre de tu unidad y carpeta)
    location / {
    root html;
    index index.php index.html index.htm;
    } location ~ .php$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
  2. Dentro de la carpeta html de Nginx crea un documento index.php que contenga la función phpinfo(); dentro de sus respectivas tag php
  3. Ejecuta un cmd dentro dentro la carpeta php en mi caso C:/nginx-1.18.0/php-7.4.5-Win32-vc15-x64/ y ejecutas el comando php-cgi.exe -b 127.0.0.1:9000
  4. Si tenias abierto el servidor pasa el comandando nginx -s reload o inicia nuevamente nginx y listo, verifica en el browser la info PHP
  5. Luego borras todos los archivos y dentro colocas tu proyectos web. OJO recuerda si tienes este error cuando ejecutas el servidor web :bind() to 0.0.0.0:80 failed (10013: Intento de acceso a un socket no permitido por sus permisos de acceso).
    Cambia dentro del archivo \nginx-1.18.0\conf\nginx.conf cambia la configuración al puerto de 80 a 8080. Comandos:

nginx -s stop (desde cmd).
nginx -s reload
nginx -h para a ayuda.

Ahora vamos a complicar un poco las cosas pero para mejorar:

  1. Vamos a cortar del archivo nginx.conf este fragmento: server {
    listen 8080;
    server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.php index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ {root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
  2. vamos a crear una carpeta que se llame server o como quieran, creamos un documento default.conf que contenga lo que cortamos y lo guardamos.
  3. Incluimos en el archivo de configuración nginx.conf esta linea justo donde cortamos el fragmento anterior include ../server/*.conf;
  4. En la carpeta server creamos otra instancia que la llamo server_400.conf y le agregamos las siguientes lineas:
    server
    {
    listen 400;
    server_name localhost;
    root htdocs;
    index index.html;
    }
  5. Creamos una carperta con el nombre htdocs, incluimos el archivo index.html que contenga cualquier info que quieran.
  6. Recargan el nginx -s reload y listo ahora por el puerto 400 tienen otro servicio web. De esta manera pueden ir creando tantas instancias web quieran con nombre diferentes por supuesto y puertos diferentes.

Si tienes problemas para levantar el servidor web debes de verificar si tienes instalado Microsoft Visual C++ 2015 Redistributable

Ahora si nos vemos !!!

Agradecemos la participación en este post a nuestra colega Ing. Florisbel

Ronny Alejandro Garcia Marin

Por Ronny Alejandro Garcia Marin

Ronny Garcia es TSU en Informática / Ingeniero de Sistemas y fundador de la empresa Linuxtrader, se ha desempeñado en las áreas de liderazgo de proyectos IT. Actualmente trabaja tiempo completo como especialista en Cryptocurrency.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *