Archivo de la etiqueta: servidor web

Instalar servidor NGINX, y configurar virtual host en Ubuntu 18.04

Entre la variedad de seServidor web nginx en ubuntu 18.04rvidores web para linux, el más habitual suele ser Apache. Pero hay uno que esta comiendole terreno. Este es NGINX.

Instalación del servidor web NGINX

Para instalar este servidor en un Ubuntu 18.04 es facil, solo tenemos que tirar de repositorio y lo tendremos instalado sin ningun problema.

1
2
sudo apt-get update
sudo apt-get install nginx

En cuanto termine, ya tendremos instalado nuestro servidor web en nuestro sistema bajo Ubuntu 18.04

Abrir los puertos en el firewall del Ubuntu 18.04

Una de las opciones que nos agrega la instalación de nginx, es añadir los diferentes modos de funcional el servidor web, al firewall que trae por defecto la distribución de Ubuntu.

1
sudo ufw app list

Para activar los puertos de nginx en el firewall solo tendremos que utilizar el nombre del metodo que deseamos activar.

Para el modo de “http”, le indicamos a firewall que queremos usar el metodo “Nginx HTTP”. Con esta opción abriremos el puerto 80 en el firewall.

1
sudo ufw allow 'Nginx HTTP'

Para activar el modo HTTPS, y abrir el puerto 443 para la conexión seguras, utilizaremos la opción ‘Nginx HTTPS’

1
sudo ufw allow 'Nginx HTTPS'

Configurar un virtual host en el nginx

La configuración de los virtual host en el servidor nginx, es muy parecida a la que utilizamos en el servidor apache. en el directorio de nginx (/etc/nginx), tenemos las mismas carpetas que encontramos en el apache (sites-avaliable, sites-enabled, modules-available, modules-enabled, etc). La unica diferencia que encontramos con respecto Apache, es que los enlace simbolicos, que en apache los creamos con a2ensite o a2dissite, etc. En el caso de nginx los tendremos que crear manualmente.

1
sudo ln -s /etc/nginx/sites-available/virtualhost.conf /etc/nginx/sites/enabled/

Crear el fichero de configuración del virtualhost

En la carpeta de /etc/nignx/sites-available/ tenemos un fichero con la configuración por defecto del servidor. Podemos usar este fichero como plantilla para nuestros virtual host.

1
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/virtualhost1.conf

Editamos el fichero que hemos creado, para personalizar la configuración de nuestro virtual host.

1
sudo nano /etc/nginx/sites-available/virtualhost1.conf

Una de las primeras lineas que nos encotramos son las siguientes

1
2
 listen 80 default_server;
listen [::]:80 default_server;

Lo primero que deberemos de hacer es eliminar “default_server”,  de las dos lineas. A no ser que queramos que este virtual host que estamos configurando sea el servidor por defecto. En ese caso tendremos que, o eliminar el enlace simbolico de “default” dentro de la carpeta de los sites activados (/etc/nginx/sites/enabled/). O eliminar esa opción del fichero “default”. Tener dos host configurados como servidor por defecto da un conflicto en el servidor web.

El siguiente parametro que tendremos que modificar es la linea

1
root /var/www/html;

Estableciendo la ruta donde queremos que apunte nuestro virtual host.

1
root /var/www/mi_virtual_host;

La siguiente linea que tendremos que modificar sera la de

1
server_name _;

En esta linea especificaremos el nombre del dominio que deseamos utilizar en el virtual host

1
server_name dominio.local www.dominio.local;

Pondremos todos los dominio que desemos que responda nuestro servidor web.

Para una configuración basica ya tendriamos nuestro vistual host configurado. Solo nos queda pulsar Ctrl+X, confirmar el guardado de los cambios en nuestro fichero, y salir del editor.

Verificación de la configuración del virtual host

Una vez que tengamos nuestro fichero de configuración creado, comprobamos que los hemos hecho todo correctamente usando el siguiente comando

1
sudo nginx -t

Si recibimos una respuesta parecida a esta

1
2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nuestra configuración es correcta, y esta listos para reiniciar el servidor web.

Si recibimos cualquier otro mensaje, con algo parecido a esto.

1
nginx: configuration file /etc/nginx/nginx.conf test failed

Tenemos algun fallo en la configuración de nuestro servidor. tendremos que revisar la configuración, centrandonos en el error que acompaña al mensaje.

Una vez que tengamos el ok por parte del servidor nginx, solo nos queda resetar el servidor para que carge la nueva condiguración.

1
sudo systemctl restart nginx.service

Una vez reseteado el servidor web, ya tenemos nuestro virtual host funcionando sin problemas.

Si queremos verificar si el servidor funciona correctamente, aparte de probar a cargar la pagina,. Podemos utilizar el siguiente comando

1
sudo systemctl status nginx.conf

Donde en la linea de “active” no tendra que mostrar el siguiente mensaje si todo esta funcionando correctamente.

1
Active: active (running) since Thu 2018-05-17 13:33:58 UTC; 1h 18min ago

Como siempre, si tienes cualquier duda o problema, nu dudes en escrbirnos un comentario.

 

Proteger carpetas en Apache con .htaccess

Uno de los métodos más habituales para proteger carpetas en un servidor web bajo Apache, es la utilización del archivo .htaccess.

Proteger un directorio con .htaccess en Apache

Lo primero que tenemos que tener en cuenta, es si nuestro servidor Proteger directorios con .htaccessweb tiene activada la opción de trabajar con el fichero .htaccess.

Para comprobar si tenemos activada esta opción, es mirar en el fichero de configuración “/etc/apache2/sites-available/000-default.conf”, si no tenemos creado ningun virtual host, si tenemos el siguiente parámetro.

AllowOverride All

Si en nuestro fichero de configuración existe este parametro, pero con el atributo de “None”, cambiaremos este por “All”.

Con este parametro le indicamos a Apache que reconozca todas las directivas que encuentre dentro del fichero .htaccess. Si solo queremos que tenga en cuenta las directivas de autenticación en vez de poner “All” tendremos que poner “AuthConfig”.

Si tenemos creados virtual host, esto los tendremos que comprobar en el  fichero que hayamos utilizado para crear la configuración de nuestro virtual host.

Ejemplo de configuración.

<Directory /var/www/pruebas.local/public_html/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Crear nuestro fichero de contraseñas

Lo primero que tenemos que tener para proteger nuestra carpeta es un fichero con las contraseñas a las que vamos ha permitir el acceso. Este fichero contendrá el nombre de usuario y la contraseña codificada en MD5.

Para crear el fichero utilizaremos el siguiente programa.

htpasswd -c /ruta/donde/queremos/guardar/las/contraseñas nombreUsuario

Con el parametro “-c” le indicamos a htpasswd que vamos ha crear un fichero nuevo de contraseñas. Si el fichero ya existiera, este seria borrado.

Luego indicaremos la ruta completa donde queremos guardar el fichero con las contraseñas, no tiene por que estar dentro de las carpetas del servidor web, pero si tiene que tener los permisos para acceder a el.

Por ultimo le indicaremos el nombre de usuario que deseamos utilizar para esa contraseña.

Una vez finalizado nos quedara un fichero con la siguiente linea.

usuario:$spr1$lE/2eTdy$q/FMRI9UrogzET/Ks/6mH/

Si queremos añadir más usuarios a nuestro fichero, simplemente no utilizaremos el parámetro “-c”, quedando de la siguiente manera.

htpasswd /ruta/donde/queremos/guardar/las/contraseñas nombreUsuario

Crear el fichero .htaccess

Para crear el fichero .htaccess, nos situaremos dentro del directorio que deseamos proteger.

cd /var/www/pruebas.local/public_html/protegido

Creamos el fichero .htaccess con nuestro editor favorito, en mi caso nano

nano .htaccess

Si el usuario con el estamos trabajando no tuviera los permisos suficientes para trabajar en el directorio que intentamos proteger, la creariamos utilizando “sudo”

sudo nano .htaccess

Si creamos el fichero, con cualquier usuario que no sea www-data, cambiaremos el propìetario del fichero, para no tener problemas.

sudo chown www-data:www-data .htaccess

Y añadimos las siguientes lineas al fichero .htaccess

AuthType Basic
AuthName "Area protegida, introduzca nombre de usuario y contraseña"
AuthUserFile /ruta/donde/queremos/guardar/las/contraseñas
Require valid-user

De esta forma, solo los usuario que están en el fichero de contraseñas que hemos creado, tendrán acceso al directorio.

Si solo queremos, que unicamente, que acceda un usuario de la lista que hemos creado. Cambiaremos el parametro de “Requiere” por “user” más el nombre de usuario que deseemos que tenga acceso. Quedando de la siguiente forma.

AuthType Basic
AuthName "Area protegida, introduzca nombre de usuario y contraseña"
AuthUserFile /ruta/donde/queremos/guardar/las/contraseñas
Require user UsuarioConAcceso

Y con esto ya tendríamos implementado nuestro control de accesos a nuestro directorio.

Si tiene alguna duda o sugerencia, déjanos un comentario.

Instalar servidor web Lighttpd en Debian

[singlepic id=26 w=320 h=240 float=right]

Lighttpd es un servidor web donde la característica principal de este, es su menor uso de cpu y memoria, lo que le hace perfecto para entornos donde, necesitamos una gran velocidad de proceso o donde las características del servidor no son muy buenas. En mi caso quería un software que corriera con relativamente fluido en un mini ordenador que tengo, la mejor opción que encontré fue esta.

Para instalar este servidor bajo una distribución Debian, podemos hacerlo mediante los típicos repositorios.

sudo apt-get install lighttpd

Con esto ya tenemos instalado nuestro servidor Lighttpd, para probar que la instalación ha sido correcta solo tenemos que abrir un navegador e introducir:

http://localhost

o

http://127.0.0.1

Pero solo con esto no haremos mucho, por lo que ahora pasaremos a instalar Mysql y Php5 para darle mas potencia al sistema.

Para instalar Mysql, tendremos que escribir el siguiente comando

sudo apt-get install mysql-server mysql-client

En la instalación de MySql nos va ha pedir la contraseña que queremos darle al usuario “root” de MySql, no confuncir con el “root” del sistema, no son el mismo usuario, por lo que deberemos de darle una contraseña distinta, para no tener problemas que sabiendo una nos puedan acceder a la otra cuenta.

Y ahora solo nos queda instalar Php5 con el siguiente comando

sudo apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

Para hacer funcionar el php en una versión básica no hace falta instalar todos estos módulos, pero si son recomendables para que despues no nos surja algún fallo provocado por la falta de alguno de ellos.

Una vez instalados php y mysql solo nos queda probrar que la instacion ha sido correcta. Creamos un fichero dentro de la carpeta de servidor web

vi /var/www/info.php

He insertamos la siguiente linea

 <?php 
    phpinfo(); 
?>

Grabamos el fichero y cerramos el editor. Abrimos el fichero que hemos creado en un navegador

http://localhost/info.php

Y si nos aparece una pagina como esta, la instalación a sido correcta.

[singlepic id=25 w=320 h=240 float=center]

Si no funcionara podemos seguir los siguientes pasos. Editamos el fichero de configuración de php.

sudo vi /etc/php5/cgi/php.ini

Y añadimos las siguiente linea

cgi.fix_pathinfo = 1

Grabamos el fichero y salimos del editor. Ahora solo nos queda modificar el fichero de configuración del Lighttp

sudo vi /etc/lighttpd/lighttpd.conf

Buscamos la opción “server.modules” y añadimos “mod_fastcgi”,  (comillas y coma del final incluido. Nos tendra que quedar de la siguiente forma mas o menos

server.modules = (       
	"mod_access",     
	"mod_alias",       
	"mod_compress",       
	"mod_fastcgi",       
	"mod_redirect",
#      "mod_rewrite"
)

Vamos al final del fichero y añadimos las siguientes lineas.

fastcgi.server = ( ".php" => ((
    "bin-path" => "/usr/bin/php5-cgi",
    "socket" => "/tmp/php.socket",
    "max-procs" => 1,
    "bin-environment" => (
            "PHP_FCGI_CHILDREN" => "4",
            "PHP_FCGI_MAX_REQUESTS" => "1000"
        ),
    ))
)

Grabamos el fichero y salimos. Solo nos queda reiniciar el servidor de Lighttp

service lighttpd restart

Si todo ha salido bien y el fichero de configuración no tiene ningún error nos mostrar algo parecido a esto

[ ok ] Stopping web server: lighttpd.
[ ok ] Starting web server: lighttpd.

Si al reiniciar el servidor nos muestra algún error, leer el mensaje y solucionar el problema que nos indique.

Y con esto ya tenemos nuestro servidor web Lighttp instalado.