Hacer un servidor (paso por paso)

Iniciado por FreeCellnet, 29 Abril 2019, 18:21 PM

0 Miembros y 1 Visitante están viendo este tema.

FreeCellnet

Hola, recientemente he visto mucho material publicado por internet, pero solo a efectos de hacer un servidor a modo local, ya que solo se centran en hacerlo, pero luego, para que ellos puedan ver mi pagina web tienen que entrar de algun modo, y no se pueden saltar el firewall de mi router para acceder a la pagina, ademas de tener ip dinamica,,, y las ip locales entre mi ordenador y el router no son fijas y se asignan segun le de, es decir las 192.xx.xx.x..

Asi que he decidido hacer paso por paso mi pagina web he ire poniendo todas mis dudas aqui.

Bueno lo primero que he pensado es que mi servidor tiene que estar en un sitio como un hardware, porque es mio , no de google ni de ninguna nube, no utilizo amazon.

Asi que pensé que como es un hardware va chupar luz electrica, asi que tengo que buscar una cosa que consuma poco, asi que me compre un Odroid xu4 arquitectura arm exynox....

El problema de las cosas pequeñas es que no tienen mucha memora RAM, asi que probé a instalar una distribucion de linux ( que es el sistema operativo que creo que le va bien a este hardware) y le instale el ubuntu minimal, para que no consuma muchos recursos, pero el problema era que todo se hacia por modo consola , y me tuve que instlar el etcher para flasear la imagen del SO, y hacer las particiones todo modo consola y luego no sabia bash ni shell, y dije , formateo la memoria SD y vuelvo a empezar, si, el Odroid tiene una memoria SD no disco duro, y recomienda que sea de alta velocidad porque hace de disco duro.


No voy a poner el Apache, porque ira muy lento al ser pesado, asi que elegi Nginx, es decir un LEMP.


Entonces lo que hice fue irme a la pagina de hardkernel, descargarme el zip de la ubuntu 18.04.1-4.14 mate odorid20181203, hay otra version de kernel la 4.4 creo, pero no se muy bien en que se diferencia con la esta, pero lo que si averigué es que la version mate es la de escritorio, la minimal de consola.

Entonces lo que hice fue descomprimir lo descargado y tenia como 5GB de imagen, y tuve que descargarme Win32DiskImager-droidv1.3.zip , lo descomprimi y tuve que moder la carpeta a archivos de programa, por lo visto no se instala.

Este programa sirve para flasear la sd que tengo para meter la imagen del SO,

Abro el Win32DiskImager-droidv1.3 busco la imagen la cargo y luego la salida a mi usb que es donde tengo la sd, y le doy a write.

Desmonto la memoria y la pongo en el ordroid, y listo, la contraneña creo que es odroid, en el caso de la version ubuntu minimal es root, nunca me hace falta usar sudo esto sudo aquello.

Entonces abro una terminal y le digo sudo  apt-get update

Todo esta actualizado.

Ahora empiezo a instalar del sevidor lemp, mi consola no tiene root, por lo tando tiempre sudo delante.

$ sudo add-apt-repository ppa:ondrej/php

cuando termina.. esta otra

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

cuanto termina esta otra para cambier la zona horara

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

(el vi es un infierno para mi , no se puede escribir, y encima tengo el teclado en modo americano( asi que en vez de utilizar vi , utilizo pluma que me viene en el SO, asi que escribo

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

busco lo que esta comentado por defecto "date.timezone" y lo cambio de acuerdo a mi ubicación, inicialmente puede estar comentada por defecto, lo pongo , lo salvo con el editor pluma.

UNa vez acabo con php, empiezo con maria db, este no soportar la arquitectura ARM, asi que lo tengo que descargar de los repositorios ubuntu.


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


Ahora modifico el idioma

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

pero utilizo pluma

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

Elimino todo el contenido que aparece dentro , y pego el siguiente...

# 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


Salvo el editor


Y luego reinicio el servicio pusiendo

$ sudo service mysql restart


Luego empiezo con nginx

$ sudo add-apt-repository ppa:nginx/stable

y luego, cuando termina...

$ sudo apt-get update && sudo apt-get install nginx

A partir de aqui me dije, para que voy a instlar yo PHP , si lo que tengo son html?, pero luego pense, bueno, igual me toca instalar algun contador de visitar php com un script o algo...

Asi que para que mi sevidor entienda el PHP le tengo que poner..

$ sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

$ 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;
 }
}

Le doy a save al editor

Reinicio poniendo

$ sudo service nginx reload


Compruebo en el bucador raro que viene por defector en el ubuntu mate desde mi ordroid la direccion local 127.0.0.1 y me sale la pagina por defecto que tengo en la carpeta..


var/www/html/ index. algoraro

Todo va bien, pero como hago para que ahora, mi router me asigne un ip fija 192.xx.xx.xx?

Esta web la puedo ver yo , y en el mejor de los casos, otro ordenador de mi red local , pero de fuera no.

Entonces.. resolviendo primero el tema de la ip local fija, abro la consola y le pongo..

$ ifconfig -a



$ sudo pluma /etc/network/interfaces

En ese archivo asigno una dirección IP fija a las interfaces de red en mi caso eth0

me sale...

# Configuración de dirección IP fija para el interfaz eth0
auto eth0
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

que significa...

   address es la dirección IP que quieres ponerle a tu máquina.

   netmask es la máscara de subred de esa dirección IP.

   network es la red a la que pertenece esa dirección IP.

   broadcast es la direción IP de difusión de esa red.

   gateway es la dirección IP de la puerta de enlace predeterminada.

Generalmente es la dirección IP del equipo de la red o router por el que podemos salir al exterior o conectarnos a Internet. Por mi meteria la 192.168.1.1 pero ya hablare con mi padre, porque igual la tiene en su ordenador y me pega bronca.

Reinicio

$ sudo /etc/init.d/networking restart

me da problemas y no hace na, pruevo con el siguiente comando

$ sudo ifconfig eth0 down

y luego...

$ sudo ifconfig eth0 up

Compruebo que tengo conexion ..

$ ping 192.168.1.1 (para comprobar conectividad con yo)

$ ping google.com (para comprobar conexión a Internet)

supongo que ya tengo la ip local estatica, es decir fija.

Pero de aguas para afuera que?

$ sudo pluma /etc/resolv.conf

se pueden añadir tantos servidores DNS como desee utilizando repetidamente el comando nameserver direccion_ip, asi que utilizo la dirección IP 8.8.8.8 que es la dirección IP de un servidor DNS de Google.

es decir...

# Configuración de servidores DNS
nameserver 8.8.8.8

$ sudo /etc/init.d/networking restart

Con esto.. alguien puede ver lo que yo tengo en mi pagina web si alguien busca por internet usando el navegador google?

Aqui hay algo que me escama, me hace falta algo, estoy vacio por dentro...

Me hace falta un nombre, segun he visto se llama host virtual, y tengo que modificar lo que habia puesto anteriormente, es decir, pongo

$ sudo pluma /etc/nginx/sites-available/default

Se abre el editor y le pongo el nombre que quiera ( en este caso yomismo.net)

server {
 listen 80 default_server;
 listen [::]:80 default_server;

 root /var/www/html;

 index index.html index.php;

 server_name yomismo.net;

 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;
 }
}


En otros sitios he visto que añaden algo mas expuesto en rojo..

server {
 listen 80 default_server;
 listen [::]:80 default_server;

 root /var/www/html;

 index index.html index.php;

 server_name yomismo.net;

 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;
 }

location ~ /\.ht {
               deny all;

       }
}


Creo que lo correcto seria crear uno totalmente nuevo y borrar el default, es decir, el de por defecto, por ejemplo.

sudo pluma /etc/nginx/sites-available/yomismo.net

server {
       listen 80;
       root /var/www/html;
       index index.php index.html;
       server_name yomismo.net;

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

       location ~ \.php$ {
               include snippets/fastcgi-php.conf;
               fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
       }

       location ~ /\.ht {
               deny all;

       }
}


Luego ...

sudo ln -s /etc/nginx/sites-available/yomismo.net /etc/nginx/sites-enabled/

Deshabilitamos... utilizando

sudo unlink /etc/nginx/sites-enabled/default

Realizan test de configuracion

sudo nginx -t

Para realizar los cambios necesarios habra que recargar con el siguiente comando

sudo systemctl reload nginx

Añadimos un fichero llamado «info.php», con una configuración que nos permitirá validar la instalación del servidor web

sudo pluma /var/www/html/info.php ( ahora ya no lo veo raro)

Con esta configuración....

<?php

phpinfo();

?>

Una vez hecho esto ya podemos consultar la información vía web, con la URL

http://yomismo.net/info.php


Dicen que ...

lo mejor es quitar el archivo que creó, ya que de hecho puede dar a los usuarios no autorizados algunas sugerencias sobre su configuración que pueden ayudarles a intentar entrar. Siempre puede regenerar este archivo si lo necesita más tarde.

Por ahora, elimine el archivo escribiendo:

sudo rm /var/www/html/info.php


No he instalado ningun script de seguridad, pero segun cuentan, creo que lo que tengo que hacer es poner es:

sudo mysql_secure_installation

(pero no era Maria DB?) en fin sigue..

Se le pedirá que introduzca la contraseña que estableció para la cuenta root de MySQL.

A continuación, se le preguntará si desea configurar el plugin de validación para contraseñas VALIDATE PASSWORD PLUGIN.

Advertencia: La activación de esta función es algo así como una cuestión de criterio. Si se habilita, las contraseñas que no coinciden con los criterios especificados serán rechazadas por MySQL con un error. Esto causará problemas si se utiliza una contraseña débil en conjunción con el software que configura automáticamente las credenciales de usuario de MySQL, como los paquetes de Ubuntu para phpMyAdmin. Es seguro dejar la validación desactivado, pero siempre se debe utilizar contraseñas únicas y fuertes para las credenciales de base de datos.

Ingrese y para sí, o cualquier otra cosa para continuar sin habilitar.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Si ha habilitado la validación, le pedirá que seleccione un nivel de validación de contraseña. Tenga en cuenta que si introduzca 2, para el nivel más alto, recibirá errores al intentar establecer cualquier contraseña que no contiene números, letras mayúsculas, minúsculas y caracteres especiales, o que se basa en las palabras del diccionario comunes.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Si ha habilitado la validación de contraseña, se muestra una fuerza de contraseña para la contraseña de root existente, y le preguntará si desea cambiar la contraseña. Si no está satisfecho con su contraseña actual, introduzca n para el "no" en la consola:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Para el resto de las preguntas, hay que ingresar Y y después pulse Enter en cada pregunta. Esto eliminará algunos usuarios de ejemplo y la base de datos de prueba, desactivará las conexiones root remotas, y cargará estas nuevas reglas para que MySQL respete inmediatamente los cambios que hemos realizado

Esto ultimo lo tengo que mirar..

[Creo sinceramente que voy a tener que poner la version minimal para que corra mas deprisa, pero, no se como mover las carpetas html de mi usb externo a la carpeta var/www/html en modo consola, y luego me va tocar poner un contador php, bufff, la version minimla es todo consola.

Creo que voy a tener que desinstalar todas las aplicaciones que estan demas en la version mate


Vale creo que la ICAN es la que se encarga de asignar los dominios, por eso no me sirve mi dominio, es decir, si otro en honduras se crea un mismo dominio, seria un cachondeo, lo que se encarga este organismo es de asignar dominios para que no se repitan y hallan conflictos.

Entonces los del servidor DNS solo es anivel local imagino ( no entenderia porque es de google el 8.8.8.8 si es local????). O sea tengo que pagar si o si a google un dominio por 12 € al año? yomismo.net?

Se gun tengo entendido, los servidores de google o telefonica en mi caso, tienen que reconocer mi dominio, y esparcirlo por toda la internet, para que el buscador google lo asimile.

Porque lo que tengo entendido es que el DNS de google debe reconocer, cosa que tampoco entiendo, porque si lo pongo por la direccion https o http:www...... no paso por los buscadores de google, y por tanto no nesito a google para nada.

Por otro lado me ayudaria que un servidor se guardara mi pagina web, porque yo tengo 0.03MB/s de subida, y mi pagina ocupa 6MB, eso significa, que alguien, al conectarse directamente a mi servidor, se pasaria 60 segundos descargando para solo tener 1.8MB de mi pagina descargados.

Mi ISP es penoso, esta la fibra pero no la conectan, vamos por cable telefonico, solo tengo 8Mbps de bajada y 0.3Mbps de subida. Asco de Timofonica que pago 70€

:xD

Machacador

Cita de: FreeCellnet en 29 Abril 2019, 18:21 PM

MI PREGUNTA

Con esto.. alguien puede ver lo que yo tengo en mi pagina web si alguien busca por internet usando el navegador google?


Cual es la dirección de la pagina para intentar verla???...

:rolleyes: :o :rolleyes:

Saludos.
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

FreeCellnet

#2
Creo que no me va, haber si esta noche lo arreglo >:D


No hay manera... me voy a dormir, haber si se me ocurre algo...


Mi pagina es de mecanismos tengo una repositorio enorme de obras y una cantidad de links para descargar musica y videos sin copright, me he hecho como 4 cuentas gratis de MEGA, pero la transferencia masxima de datos que se pueden descargar esta capada , y cada 6 horas tiene que renovarse.

Bueno, puedo ver mi pagina desde cualquier ordenador que este conectado a mi router en la direccion 192.168.1.44, ya meti dentro de root/var/www/html las paginas y la pagina de inicio a la que he llamado index.html...

Mi pagina está diseñada con NVU, es un editor simple y gratuito que aprendí a usarlo en 2004 con la distribucion Lliurex de Linux, fue un movimiento muy bonito que se extendio por los centro docentes de la Comunidad Valenciana para evitar el pago de Licencias caras de Windows en los ordenadores que servian para enseñar y educar mas eficientemente a los jovenes que estudiabamos la E.S.O, y para poder acceder a la cultura y evitar problemas con la S.G.A.E y con la ley de propiedad Intelectual, una organizacion de criminales con ánimo de lucro que pone precio a los contenidos culturales, nacío LLiurex una versión gratuita del Sistema Operativo Linux, con un entorno grafico de escritorio para la enseñanza, para que la SGAE no multase con multimillonarias multas a los centros docentes por usar copias pirata de Windows.


Al final he logrado que vaya localmente, a traves de 192.168.1.44 del puerto 80 de cualquier ordenata de mi router, puedo entrar a mi pagina, pero cuando lo configuro con dominio xxxx.com, me salta un usuario y contrasena en la pagina web, de Net Scaler gateway /vpn/index.html, y no he logrado todavia poner por direcciones que no sean numeros, logicamente configurando el servidor para ello.


Alguien tiene idea de lo que se supone que debo hacer para que me vean desde fuera de mi router?