10 mayo, 2020

Servidor Web + PHP7 para Win :(

Por Ronny Alejandro Garcia Marin

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