Volver
Servidor WEB
con
Orange PI y NGINX
En el anterior artículo había realizado y probado un servidor DELL R200.
El modelo DELL R200 tiene el procesador Xeon X3360 de 4 núcleos. El servidor está configurado con dos discos 250G en modo RAID, controlados por una tarjeta.
El resultado era bueno, pero el consumo 77W era alto debido a su potencia. Solo el coste de electricidad por año llegaba a 90€.
Para mantener un servicio comercial de varias páginas web es ideal, pero para un uso particular resulta un tanto costoso.
Hace años que había realizado un estudio de
Orange PI PC ,es un clónico de la Raspberry Pi, pero algo mas barato y mas potente (en su día).
En este artículo realizo un servidor WEB con esta placa. Todos los pasos se pueden realizar en una Raspberry Pi, pero esto no lo he probado.
He de confesar que todos los pasos los realicé antes en un ordenador normal (PC) con Debian 9, y luego los he reproducido en la Orange PI PC con Debian 8, funcionando a la perfección.
Lo primero es ir a la página
http://www.orangepi.org/downloadresources/ y bajar la versión de Debian que corresponda a vuestra placa, en mi caso (Orange Pi Pc)Debian XFCE Desktop .
Esta imagen está comprimida, y tenemos dos opciones para instalarla en una SD en linux.
La fácil es utilizar el programa gnome-disks desde root.
La segunda opción es descomprimir la imagen.gz que no creará un archivo con extensión .img.
Ahora instalamos la imagen.img a la SD con la orden:
dd if=OrangePI_Jessie_Xdfce.img of=/dev/sdx bs=1M oflag=directdonde /dev/sdx es el lugar donde se encuentra la SD. Para saber donde se encuentra la SD se teclea
fdisk -l y nos mostrará los diferentes discos y su localización.
Todo esto lo debemos hacer siendo root, tener paciencia, tarda tiempo en escribir la SD dependiendo de la clase que sea (4) (10).
En esta página del foro se puede encontrar algo en español:
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=33En ingles:
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342Una vez instalada la imagen en la SD nos creará dos particiones:
BOOT donde se instalan las imágenes uImage del kernel y los script.bin (configuraciones)
Linux donde se encuentra el propio sistema operativo.
Antes debíamos de seleccionar el script.bin apropiado a nuestra placa, ahora ya viene instalado el script apropiado y no hay que hacer nada.
Todo preparado para el primer arranque, hdmi conectado a la Tv, SD con el sistema operativo instalado, teclado y ratón conectado al USB ,y red conectada. Conectamos la alimentación y esperamos como salen los primeros caracteres de arranque de linux.
Nos encontramos ante la petición de usuario y contraseña. Existen dos usuarios ya creados.
orangepi contraseña:
orangepiroot contraseña:
orangepiEntramos con el usuario orangepi y nos encontramos con un escritorio Xfce.
Lo primero es cambiar la configuración del teclado, entramos en
Settings->Keyboard , cambiamos la localización del teclado.
Si queremos cambiar la configuración del teclado en los terminales gráficos, tecleamos como root, la orden:
dpkg-reconfigure locales
Aquí me he encontrado que no funciona el cambio de locales, yo lo he solucionado como indica la página:
https://enavas.blogspot.com/2015/01/configurar-locales-y-eliminar-el-aviso.htmlYo he editado el fichero /etc/default/locale y lo he puesto de la siguiente forma:
LANG=es_ES.UTF-8
LANGUAGE=es_ES.ISO-8859-15@euro
LC_ALL=es_ES.UTF-8
LC_CTYPE=es_ES.UTF-8
LC_MESSAGES=es_ES.UTF-8
LC_TIME=es_ES.UTF-8
LC_PAPER=es_ES.UTF-8
LC_MEASUREMENT=es_ES.UTF-8
LC_MONETARY=es_ES.UTF-8
LC_NUMERIC=es_ES.UTF-8De todas formas puedes manejar el teclado si sabes como está el teclado americano.
Lo primero y mas conveniente es cambiar las contraseñas de root y orangepi con la orden
passwd usuario.
El usuario
seta es desde donde voy a trabajar, este usuario entrara automáticamente en forma gráfica, se podrá manejar a distancia con ssh, VNC y ftp. Vamos que una vez configurado todo, no hace falta tener ni teclado, ratón y monitor en la placa Orange PI.
Creamos el usuario con la orden
adduser seta , y colocamos la contraseña con
passwd seta.
Para que inicie automáticamente un usuario, debemos configurar el gestor de arranque lightdm .
Entramos en consola como root y editamos el fichero de configuración con la orden:
pluma /etc/lightdm/lightdm.confy editamos las líneas siguientes:
autologin-user=seta
autologin-user-timeout=20Donde seta es el usuario que se inicia automáticamente, y 20 son los segundos que tarda en iniciarse automáticamente.
Debemos configurar la red para que sea la IP estática, en nuestro caso le vamos a dar la IP
192.168.1.70 .
Veremos que cuando entramos en la consola como root o orangepi , nos salda la opción de poder utilizar toda la SD para el sistema. Cuando se instala la imagen en la SD se crea una partición de solo 2 o 3 Gb, si tenemos una SD de 16Gb desaprovecharíamos 13Gb, con la orden
sudo fs_resize ,se redimensiona la partición para utilizar toda la SD.
Como pienso que instalar un servidor de páginas dinámicas en esta placa es un tanto pretencioso, no digo que no funcione, no he añadido los paquetes PHP, ni MySQL. El servidor solo servirá páginas estáticas para ser mas rápido.
Con el instalador de aplicaciones
Synaptic, o con la orden
apt install paquete, instalamos los paquetes:
ssh - acceso remoto a un servidor por medio de un canal seguro.
vsftpd -Servidor ftp
x11vnc -Servidor VNC
nginx -Servidor WEB, es algo mas ligero que apache.
Además a mi me gusta instalar:
dillo, xfe.
Otra cosa que me gusta hacer es instalar un servidor de escritorios remotos. Con el instalador de aplicaciones
Synaptic instalamos x11vnc. Ahora desde consola indicamos la contraseña del servidor de escritorio remoto,
x11vnc -storepasswd .
Para lanzar el escritorio remoto desde consola ,
x11vnc -forever -usepw -display :0 -ultrafilexferAhora vamos a configurar el servidor ftp.
Editamos el fichero
/etc/vsftpd.conf y colocamos esto:
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_std_format=YES
xferlog_file=/var/log/xfer.log
dual_log_enable=YES
pam_service_name=vsftpd
ssl_enable=NO
Con esto enjaulamos a todos lo usuarios en su propio directorio.
Editamos el fichero
/etc/vsftpd.chroot_list y colocamos esto:
setaIndicamos que el único usuario que no estará enjaulado será
seta.
Para que las configuraciones se actualicen deberemos reiniciar la placa o actualizarlas una por una, mejor reiniciamos la placa.
Ahora mismo ya no nos hace falta ni ratón, teclado y monitor.
Podremos manejar la placa Orange PI de forma remota, lo podéis comprobar desde otro PC.
La forma de entrar desde otro ordenador a la placa Orange PI mediante
ssh es:
ssh seta@192.168.1.70También existe la posibilidad de ejecutar un programa gráfico con ssh, ejemplo:
ssh -X -p 22 seta@192.168.1.70 plumaEs una forma bastante más rápida que utilizar VNC.
Para transferir ficheros utilizamos
ftp, cualquier programa como gftp o Filezilla sirve.
Recordar que solo hemos autorizado la usuario
seta a moverse por todos los directorios de la placa Orange PI.
También podemos entrar mediante
VNC a manejar el escritorio del usuario
seta.
Ya nos toca empezar ha configurar todos los parámetros del servidor WEB, que es el objetivo de este artículo.
Desde cualquier ordenador de nuestra red interna, teclearemos en nuestro navegador la dirección
192.168.1.70 .
Si todo fue bien nos aparecerá la página por defecto del servidor NGINX, el fichero es :
/var/www/html/index.nginx-debian.html .
Este fichero será el de por defecto, si no encuentra el fichero
index.html.
Normalmente esto serviría si solo tenemos un usuario, pero como yo suelo crear varías páginas que gestionan diferentes usuarios, debo hacer diferentes cambios.
Lo primero es crear un directorio
www en el directorio de cada usuario, donde se alojará la página web de cada usuario.
mkdir /home/seta/www
chown -R seta:seta /home/seta/www
chmod u+rwx /home/seta/www
chmod ugo+rx /home/seta/wwwHemos creado el directorio ww y dado todos los permisos para el buen funcionamiento.
Le damos as seta los permisos para editar todos los fichero web
chown -R seta:seta /var/www/html
chmod ugo+rx /var/www/htmlComo root creamos otro directorio:
mkdir /var/www/html/seta
chown -R seta:seta /var/www/html/seta
chmod ugo+rx /var/www/html/setaAhora hacemos un montaje, no enlace, donde los los ficheros que se encuentran en /home/seta/www , el servidor pensará que están en /var/www/html/seta.
echo "/home/seta/www /var/www/html/seta none bind 0 0" >> /etc/fstabDesde el navegador tecleamos la dirección
192.168.1.70/seta , y nos aparecerá la página almacenada en el directorio
/home/seta/www.Esto es muy útil, podemos crear usuarios enjaulándolos en su directorio www y que puedan tener su página. Ejemplo:
http://seta43.duckdns.org/usuarioEn mi caso he creado un
script de comandos
bash donde se crean usuarios con su pagina web desde 4 estilos diferentes en menos de 7 segundos. Los usuarios creados mediante este método están enjaulados en su propio directorio. Además tienen su directorio www, donde alojan su página que pueden actualizar mediante ftp.
Recordar que cuando subáis ficheros a vuestra página, estar seguro que ponéis los permisos adecuados para que se puedan leer, a mi me paso, hasta que me di cuenta.
Si queréis ver mi página funcionando está en:
http://seta43.duckdns.orgExiste una utilidad en Apache tools para testear el servidor.
Con la orden:
ab -c 5 -t 60 http://192.168.1.70/ chequeamos la velocidad del servidor WEB.
Petición desde HP A6_5400 hacia ORANGE PI | Petición desde HP A6_5400 hacia DELL R200 |
Server Software: nginx/1.6.2 Server Hostname: 192.168.1.70 Server Port: 80 Document Path: / Document Length: 813 bytes Concurrency Level: 5 Time taken for tests: 21.551 seconds Complete requests: 50000 Failed requests: 0 Total transferred: 52250000 bytes HTML transferred: 40650000 bytes Requests per second: 2320.07 [#/sec] (mean) Time per request: 2.155 [ms] (mean) Time per request: 0.431 [ms] (mean, across all concurrent requests) Transfer rate: 2367.65 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 4 Processing: 0 2 0.7 2 25 Waiting: 0 2 0.7 2 25 Total: 1 2 0.6 2 26 | Server Software: Apache/2.4.25 Server Hostname: 192.168.1.60 Server Port: 80 Document Path: / Document Length: 1112 bytes Concurrency Level: 5 Time taken for tests: 4.606 seconds Complete requests: 50000 Failed requests: 0 Total transferred: 69200000 bytes HTML transferred: 55600000 bytes Requests per second: 10855.19 [#/sec] (mean) Time per request: 0.461 [ms] (mean) Time per request: 0.092 [ms] (mean, across all concurrent requests) Transfer rate: 14671.47 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 4 Processing: 0 0 0.1 0 4 Waiting: 0 0 0.1 0 4 Total: 0 0 0.1 0 4 |
El consumo del DELL R200 es de 77W con un coste anual de 90€
El consumo de la placa Orange PI es de 1,7W con un coste anual de 2,5€.
Como podéis observar el coste anual es mínimo, es una solución muy valida para tener unas pocas páginas sin demasiado tráfico.
Me ha sorprendido lo bien que responde a las peticiones desde internet, funciona bastante bien.
Como es tan pequeña la placa Orange PI la tengo metida debajo de la mesa, no mete ruido, consume poco, y se calienta poco (yo tengo la caja abierta para que no se acumule el calor).
Recordar que para que se pueda ver vuestro servidor desde internet, se tiene que configurar el router para que redireccione los puertos a la placa Orange PI, de la misma forma pasa con el ftp.
Si ahora intentas acceder a la página web desde internet, fuera de nuestra red, veremos que ya funciona nuestro servidor WEB.
Para poder verse a uno mismo como si estuviésemos en el exterior, debemos emplear un truco.
Existe una página web que permite hacer esto:
http://anonymouse.org/anonwww.htmlAunque inserta un pequeño anuncio funciona perfectamente.
Otra forma utilizar nuestro móvil con conexión a internet, pero claro gastaremos datos.
Para los que no tengan dominio y quieran experimentar, yo utilizo un subdominio tipo NO-IP.
En mi caso es
http://seta43.duckdns.org/ En la página
http://www.duckdns.org/ podéis conseguir el vuestro, funciona bastante bien, además te explican como instalarlo en vuestro servidor para que se actualice la dirección IP dinámica que ha dado el operador.
Saludos
Juan Galaz
Bibliografía:
servi.htmlwpa.htmlwpb.htmlorange.htmlhttps://orangepiweb.es/http://www.orangepi.org/orangepibbsen/forum.php?gid=38