Tu Web en Red, y una pequeña duda

#1
Yo parto de que la pagina ya me la hize con Nvu, con todos los html

Recientemente, me hice un resumen para no olvidar lo que he hecho, un PDF con lo que hice para que mi pagina saliera gratis https://mega.nz/#!tI0VWSba!dutuYOZff8d9yg7naDtoX6SxTUB-NKK3HL-wW2YaXZ4

Mi pagina es repositoryofmechanisms.mooo.com

Y voy a poner exactamente lo que hice aqui:

El problema de alojar una pagina web para que sea mostrada, es que tiene que estar disponible las 24 horas.

Por tanto, el Hardware debe consumir la menos potencia posible, tiene que ser pequeño, y en caso de que el router no tenga una IP publica fija, como la mayoria de routers domesticos la tienen dinamica en España, deba de asociarse un dominio para cualquier IP publica que tenga el router, para que se pueda entrar y visitar.

Por ello, elaboro todo lo que los medios sensacionalistas de internet no han sabido explicar, hacer una pagina web, implica diseñar tu pagina, implica instalar un servidor, implica obtener un dominio y subdominio ( si se desea de forma gratuita), e implica configurar tu router para tal cosa, esto ultimo cuestionable, ya que los servicios de dominios gratuitos tambien optan la actualizacion automatica mediante Scripts (crontab).

Lo primero, desde mi experiencia, me decidí comprar un Odroid XU-4, aunque podria haber elegido el HC1, ya que el XU4 es mas potente pero sacrifica memoria RAM, y esto, es algo que hace falta, el problema de las cosas pequeñas de estos hardware es que pesar de que solo consumen 20w, no tienen mucha memoria RAM, por tanto se opto por instalar una distribucion de linux que no consumiera muchos recursos, llamada ubuntu minimal, el problema de la version minimal, es que no hay entorno grafico, y portanto no dispones de escritorio, solo tienes una consola, y eso supondria tener conocimientos de bash, ademas del posterior manejo de archivos, solo los informaticos podrian tener servidores, entonces, opté por la version mate.

Estos dispositivos utilizan de disco duro una microSD, a ser posible de alta velocidad, por tanto habrá que hacer un booting, o bootear, esto, no es mas que, (previamente descargado y descomprimido el S.O a instalar) en nuestro caso, elegimos la version mate, ubuntu 18.04.1-4.14 mate odorid20181203, la version de kernel es la 4.14, pero hay otra que es la 4.4, no tengo todavia conocimientos suficientes para saber en que se diferencian las dos, pero lo importante es que funcionan tanto la una como la otra.

Para bootear la microSD se necesita descargar Win32DiskImager-droidv1.3, no se preocupen por el numero 32, tambien funciona en ordenadores de 64bits, ademas no se instala, en este caso estoy utilizando un windows 7, donde una vez descomprimido el archivo ubuntu 18.04.1-4.14 mate odorid20181203, tenemos 5GB de imagen .iso que tenemos que poner como ruta de destino la memoria micro SD en el programa win32Diskmanager, clickamos con el raton en [write].

Una vez termina, se inserta en la micro SD en nuestro Odroid.

Una vez esta todo instalado , se abre una terminal y se pone:

sudo apt-get update

(te pedirá contraseña) generalmente odroid, (luego aconsejo cambiarla)

Y todo quedara actualizado, para no poner mas sudo, puedes poner, sudo su, pero solo es valido en la terminal donde se ejecuta.

Bueno vamos a empezar a instalar el Servidor LEMP, Linux, Nginx, Maria DB PHP 7.1.

Nginx es menos pesado que Apache, recordemos, no tenemos mucha memoria RAM.


Se abre una terminal y se pone

$ sudo add-apt-repository ppa:eek:ndrej/php

cuando termina.. esta otra

$ sudo apt-get update && sudo apt-get install php7.1-fpm

cuanto termina esta otra para cambiar la zona horaria

$ sudo pluma /etc/php/7.1/fpm/php.ini

(pluma es un editor de texto, como nano, o vi. En este caso lo que se hace es modificar manualmente el archivo para cambiar la zona horaria donde pone date.timezone, por la ubicación donde se está, se guarda, y se cierra.

Empezamos con MariaDB:

$ sudo apt-get update && sudo apt-get install mariadb-server mariadb-client php-mysql

Cuando termina, la siguiente

$ sudo pluma /etc/mysql/conf.d/mysql.cnf

Se elimina todo el contenido que hay dentro, y se pega el siguente:

# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf

[client]
# Default is Latin1, if you need UTF-8 set this
# (also in server section)
default-character-set = utf8mb4

[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this
# (also in client section)
#
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
Se guarda y se cierra.
(finalmente se reinicia el servicio con la siguiente instruccion):
$ sudo service mysql restart

Empezamos instalando Nginx

$ sudo add-apt-repository ppa:nginx/stable
y luego, cuando termina
$ sudo apt-get update && sudo apt-get install nginx
Y cuando termina.., esto:
$ sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
y luego
$ sudo pluma /etc/nginx/sites-available/default
Se abre el editor y le pongo todo esto:
server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;

index index.html index.php;

server_name _;

location / {
try_files $uri $uri/ =404;
}

# This option is important for using PHP.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
}

Se guarda, y se cierra.

Se reinicia el servicio poniendo esto:

$ sudo service nginx reload

Una vez hecho esto, podemos importan con un usb una pagina que tengamos en html, a la que debemos llamar index.html, (exactamente así), y la deberemos meter la carpeta html, que esta ubicada en var/www/html/(index.html).

Si no nos deja pegar nuestro archivo html, antes de abrir la carpeta html con doble click, lo que tenemos que hacer es con el boton derecho, clickar donde diga, Open with as administrator, o Editar como administrador, y te la abre como superusuario, asi te permitira pegar o sustituir el index.html.

Por lo tanto , cerramos,la carpeta y abrimos una terminal, donde ponemos

ifconfig

ahí veremos nuestro IP local que nueStro router nos ha asignado, 192.168.1.XX
Seguidamente, abrimos nuestro navegador web, en la direccion, no en el buscador, donde suelen ir las http:…, ponemos nuestra IP local,

Cualquier ordenador de nuestra red podrá ver nuestra paguina, pero la IP local que le asgina tu router no es fija, asi que tendremos que dejarla fija desde el router, porque en configuracion de red en nuestro odroid, a pesar de dejarla fija , no pasa.

Asi que accedemos a nuestro router, y asociamos la MAC de nuestra computadora con la IP que nosotros queramos, y que no este utilizando nadie en ese momento, por ejemplo la 192.168.1.45

Luego , tenemos que irnos a PortForwarding, (apretura de puertos) tenemos que alñadir un perfil y editarlo con la IP local de nuestra maquina, 192.168.1.45, y decirle que es un Web server, automaticamente eschua el puerto 80, External port Start (80), External port End (80) ,Internal port Start (80), y Internal port End (80) y en Remote IP nada.
En Wan connection le ponemos : PVC 8/36

A partir de ahi, podras acceder con el navegador poniendo tu Ip publica del router, el 80.45.125.102 por ejemplo, pero no olvides que cambia, precisamente, lo que vamos hacer, es tratar de poner un dominio (un nombre.com) a tu web para que, aunque cambie tu IP publica del router (dado que tu IP no es fija y no se puede acceder cada 15 min conunua distinta), asociar el dominio con tu router.

Para ello, nos vamos a crear una cuenta en freednsafraid., cuando ya la tengamos, nos vamos al panel izquierdo superior, y le damos a Subdomain es decir, la secuencia quedaria asi: 1.1Me registro, 1.2 Panel izquierdo --> Subdomains --> Add Subdomain

1.3 Add a new subdomain ) creamos nuestro subdominio, por ejemplo, pacopicapiedra, y el dominio , nos viene impuesto, yo cogí mooo.com.

Elegimos el tipo A

Quedando pacopicapiedra.mooo.com, nos vamos a Dynamic DNS o (DDNS), pinchamos en URL.

Nos dira la direccion IP nuestra, pero si nos fijamos, arriva , en la direccion web, despues de ? Copiamos ese código, llamado hashkey.

Nos vamos a nuestro router, y accedemos a la DDNS (Dynamic DNS), creamos un perfil y ponemos freednsafraid, nuestro nombre pacopicapiedra.mooo.com y el hashkey, ya lo tenemos.

Otra opcion es descargarse un Script, pero no me funcionó.

El Script seria:

Creo el script de la siguiente manera: sudo nano /etc/cron.d/freedns_update.sh, lo abro y pego esto.

#!/bin/sh # freedns_update.sh: Update the public IP on freedns.afraid.org only if it has changed. ## Place this script in the cron's job directory /etc/cron.d and assign the proper permissions ## and owner ## sudo chmod 500 /etc/cron.d/freedns_update.sh ## sudo chown root:root /etc/cron.d/freedns_update.sh ## Add to /etc/crontab to execute on reboot and every 5 minutes ## Edit /etc/crontab and append these two lines: ## @ReBoOt root /etc/cron.d/freedns_update.sh >/dev/null ## */5 * * * * root /etc/cron.d/freedns_update.sh >/dev/null #Use your own values DOMAIN=pacopicapiedra.mooo.com HASHKEY=todo lo que va despues del signo? de la direccion URL del enlace del subdominio= UPDATE_URL="http://freedns.afraid.org/dynamic/update.php?${HASHKEY}" current_ip=$(wget -q --output-document - http://checkip.dyndns.org | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}') registered_ip=$(ping -qn -c 1 $DOMAIN | head -n 1 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}') if [ "${current_ip}" != "${registered_ip}" ]; then wget -q --read-timeout=0.0 --waitretry=5 --tries=400 --output-document /dev/null $UPDATE_URL if [ $? -eq 0 ]; then echo "$(date +"%b %_d %T") $(hostname) $0: IP address updated on freedns.afraid.org: new IP '${current_ip}', old IP '${registered_ip}'" >> /var/log/messages else echo "$(date +"%b %_d %T") $(hostname) $0: ERROR IP address could not be updated on freedns.afraid.org: current IP '${current_ip}', registered IP '${registered_ip}'" >> /var/log/messages fi fi

EN la web de freedns Me voy al panel izquierdo -> Dynamic DNS, me voy abajo, y en el subdominio esta Direct URL, le pincho , obtengo la url, y a partir del signo ? de la direccion, obtengo el hask key que la pongo despues de HASHKEY=xxxxxxxxxx

Salvo y cierro.

* Dale permisos al script.

sudo chmod 500 /etc/cron.d/freedns_update.sh
sudo chown root:root /etc/cron.d/freedns_update.sh
para darle permisos a la carpeta.

* Programa una tarea para que el script se ejecute automaticamente.

Abro crontab para programar una tarea:

sudo nano /etc/crontab

En el final del archivo añades 2 nuevas lineas:

@ReBoOt root /etc/cron.d/freedns_update.sh >/dev/null */5 * * * * root /etc/cron.d/freedns_update.sh >/dev/null

Quedando asi:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
@ReBoOt root /etc/cron.d/freedns_update.sh >/dev/null */5 * * * * root
/etc/cron.d/freedns_update.sh >/dev/null

Salvo

Reinicias cron para que se ejecute el script por primera vez.

Restablezco el servicio con

sudo /etc/init.d/cron restart

Me sale esto por la terminal

odroid@odroid:~$ sudo /etc/init.d/cron restart
[sudo] password for odroid:
[ ok ] Restarting cron (via systemctl): cron.service.
odroid@odroid:~$

Pero insisto, yo no utilize el Script

Entonces todas las paginas html , incluida index.html, van a ir a la carpeta html ubicada en var/www/html.

*-*-*-LA DUDA*-*-*- No me deja indexar archivos locales alojados en el hardware que sean videos o musica ¿porque?, la ruta es conocida, y cuando ejecuto la pagina desde el navegador, no reconoce.

he provado en los links que he asociado a palabras dentro de mi pagina html los siguientes enlaces de contenido, root/media/odroid/Maxtor/, luego esta /media/odroid/Maxtor/, luego he provado a poner un link de la carpeta Maxtor dentro de la carpeta www, y luego a ponerla dentro de la carpeta html, con derechos de administrador siempre ya que estas carpetas no permite modificar el contenido sin usar derechos de administrador y el enlace ha sido a modo local, porque cuando pongo links de los htmls entre paginas , la referencia es relativa, y no hay que especificar exactamente donde se haya.

Y tampoco nada.


He creado una derivacion a Maxtor, es una carpeta Link to, y la he puesto dentro de las paginas html, indexando relativamente la direccion, con el proposito de sufragar dudas acerca de los permisos que establece el servidor.

todo lo que esta dentro de la carpeta que lleva www, es mi dominio, de modo que dentro de la carpeta, esta otra que se llama html, de modo que cuando accedes a mi contenido la unica direccion que se muestra en el navegador web es repositoryofmechanisms.mooo.com/index.html

pensando que si dejo una carpeta enlace, a Maxtor , llamada Maxtor, pinchando en uno de los links con direccio relativa Maxtor/, acceda al contenido de esta carpeta enlace, con la siguiente direccion del buscador

repositoryofmechanisms.mooo.com/Maxtor/

Le llamo carpeta enlace, porque dicha carpeta ha sido creada a partir de la carpeta orginal Maxtor que se haya en /media/odroid/Maxtor, donde con el boton derecho del raton permite crear una carpeta enlace, con esta otra, ubicada dentro de la carpeta html.

Los derechos de administrador se limitan a solo lectura, con lo cual no hay ninguna restriccion para acceder a este contenido por el tunel que permite esta carpeta enlace a mi disco duro externo.

Por ello la carpeta enlace tiene un link con la pagina html que la asocia, y por la que se debe entrar, dicho link tiene asociada una direccion relativa, aunque he provado varios links dentro de la pagina html con diferentes direcciones cada uno de ellos que no eran relativos , pero estos tampoco van, que son lo que he puesto al principio.

ya que el servidor solo es capaz de detectar paginas html que tengan enlaces relativos, pero no carpetas con enlaces relativos, voy a provar a poner a esta carpeta enlace llamada Maxtor su ruta.

/var/www/html/Maxtor

y tampoco me va, corriguiendo naturalmente el enlace en el link del html.

Ahora si que me queda claro que las carpetas no me las reconoce , ni fuera ni dentro las carpetas www
 
Última edición:
Arriba