Cada vez es más fácil instalar y configurar un entorno para servir documentos en web, si bien lo normal es tener una combinación LAMP (Linux, Apache, MySQL y PHP) en últimos años ha cobrado popularidad Nginx como servidor web por la velocidad y rendimiento para servir contenido.
Una vez que tenemos una instalación de Ubuntu, estando en consola instalamos los paquetes, si no queremos apache y ya estuviera instalado lo quitamos:
sudo apt-get purge apache2*
Luego, instalamos los paquetes que nos interesan:
sudo apt-get install php mysql-server nginx php-fpm php-curl php-mbstring# opcionalmente si queremos convertir imágenes, mysql-server en el comando anterior también es opcional.
sudo apt-get install convert
Eso es todo, ahora vamos a configurar nginx para que pueda procesar los archivos .php, editamos el archivo /etc/nginx/sites-enabled/default y buscamos las líneas que aparecen y se refieren a php, quitamos el comentario (símbolo #), quedando algo similar a:
location ~ .php$ {include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
Reiniciamos PHP con service nginx restart si ya todo está bien, podemos entrar a nuestra página web en su ip local, hasta aquí estrictamente ya debemos tener todo un entorno para servir contenido dinámico en nuestro servidor, sin embargo vamos a ver algunas consideraciones después de recién instalado
Fecha e idioma:
Para que PHP tome correctamente la hora debe estar bien configurada en el servidor, podemos reconfigurar la zona horaria con e instalar el idioma español, además de indicarle al sistema que vamos a utilizar el idioma de Cervantes en todo el sistema.
dpkg-reconfigure tzdata # reconfigura localeecho "export TERM=xterm && export LC_ALL=es_MX.UTF-8 && export EDITOR=vim" >> /etc/bash.bashrc
En caso que nuestro servidor no tenga la hora adecuadamente, la podemos actualizar (si tiene red) con el comando ntpdate pool.ntp.org.
En el caso de PHP si lo vamos a usar en línea de comandos y como módulo FPM en nginx (por default al instalar php-fpm y nginx), buscamos en ambos archivos - en /etc/php/7.0/fpm/php.ini eb caso de FPM- la línea que dice: ;date.timezone, quitamos el comentario y la establecemos y dejamos así;
date.timezone = America/Mexico_City
... o la zona horaria que nos corresponda, en http://php.net/manual/es/timezones.php hay una lista de zonas horarias.
Además, en los mismos archivos de configuración buscamos los límites de subida de archivos, por ejemplo si vamos a subir imágenes de una cámara digital podrían ser archivos de 25 o 30 MB, así que vamos a establecer que pueda recibir archivos de hasta 64MB, para eso buscamos y dejamos las siguientes líneas de configuración de la siguiente forma:
post_max_size = 64Mupload_max_filesize = 64M
... y en la configuración de nginx, añadimos al archivo de configuración de nuestro servidor (por ahora sites-enabled/default)
client_max_body_size 64m;
Ahora reiniciamos nginx y PHP-FPM (service nginx restart && /etc/init.d/php7.0-fpm restart). De todas formas siempre podemos probar la configuración de nginx antes de reiniciar para ver si está bien con algo como:
nginx -c /etc/nginx/nginx.conf -t
Si hubiese un error, ahí se nos mostraría en la consola.
Eso es todo lo básico, hay opciones de configurar el rendimiento de PHP y de nginx, pero son temas para otro post.
nota: para muchos comandos se utiliza sudo, si vamos a hacer varias configuraciones de una sola vez lo mejor es estar como administrador ese lapso de tiempo, ejecutamos en consola "sudo -s" y eso nos dejará como root toda la sesión.
También tendríamos que pensar en instalar un certificado SSL con letsencrypt, es gratis.