Recetas/nginxinicial

De FESOL. Proyectos de Software Libre ULS
Saltar a: navegación, buscar

Resumen de la receta

En esta receta se instala nginx php7 en un Debian Stretch y se verifica que puede mostrar páginas en html y php.

Requisitos

  • Debian GNU/Linux Jessie 9.x
  • nginx 1.10
  • php 7.0.27
  • Tener configurado los repositorios, ver Recetas/repositorio

Instalación de programas

apt-get install nginx-full php-fpm
  • nginx-full: Servidor web nginx
  • php-fpm: Lenguaje php

Configuración

La configuración de nginx por defecto solo nos mostrará las páginas html. La configuración por defecto de nginx, quitando los comentarios, tiene esta estructura:

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	root /var/www/html;
	index index.html index.htm index.nginx-debian.html;
	server_name _;
	location / {
		try_files $uri $uri/ =404;
	}
}

Donde define:

  1. El puerto IPv4 e IPv6 que estará escuchando: 80
  2. La carpeta del sitio que publicará: /var/www/html
  3. El orden en que buscará y cargará los archivos
  4. Y la configuración de la carpeta

Probando el servidor apache

Para probar el servidor nginx :

  1. Si estamos en la misma computadora abrimos en el navegador la direccion http://localhost/
  2. Si estamos en otra computadora, abrir en el navegador la dirección de la computadora http://<IP de la computadora remota donde se instalo apache> (Por ejemplo 192.168.1.5)
Deberá aparecer el siguiente sitio .
Página por defecto de apache en debian Jessie

Configuración de php

Para que nginx pueda interpretar código php, es necesario enlazar nginx con php por:

  1. Módulo fpm de php
  2. Socket de PHP cgi

La configuración que se deberá agregar a la configuración por defecto para que interprete código php es:

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	root /var/www/html;
	index index.php index.html index.htm index.nginx-debian.html;
	server_name _;
	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {

	include snippets/fastcgi-php.conf;
	
		fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
	}
	error_log /var/log/nginx/nginx-error.log warn;
	access_log /var/log/nginx/nginx-access.log ;

}

Donde:

  1. Habilitamos que pueda interpretar el arcivo index.php
  2. Habilitamos que pueda interpretar código php vía socket cgi
  3. Habilitamos los logs personalizados

Probando que el servidor apache pueda ejecutar código php

Para verificar que el servidor puede ejecutar código php lo que hacemos es:

Verificar cuál es el directorio que publica nuestro servidor web, para nuestro caso como es una instalacion nueva, la vemos en el archivo

nano /etc/apache2/sites-enabled/000-default.conf 

Ahí notamos que la carpeta que publica es la /var/www/html/

Ahora solo creamos un archivo llamado /var/www/html/phpinfo.php con el siguiente contenido:

nano /var/www/html/phpinfo.php
 <?php
  phpinfo();
 ?>

Luego abrimos el archivo con http://localhost/phpinfo.php

Deberá aparecer el siguiente sitio .
Salida de phpinfo()



Nota: En caso de que no muestre nada o no funcione, podemos ver los logs del nginx para ver que parte es la que esta fallando con el comando:

tail /var/log/nginx/*.log

ó

tail -f /var/log/nginx/*.log

Con la opción -f muestra las lineas conforme se van agregando. Para salirse de ese modo solo se presionan las teclas Ctrl + C

Referencias

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-debian-8