Como montar una idea en la web desde cero

Bienvenid@s a SOSpedia punto net

Este es un primer post para organizar las categorías y menús de la página. En breve estaremos con vosotr@s

Así comenzaba www.sospedia.net pero ya estamos con vosotros.

Reutilizo el post para contaros cómo nació el proyecto en el que nos hemos embarcado de forma desinteresada unos cuantos compañeros.

Primer intento: El verano pasado (2014) nos reunimos “virtualmente” unos cuantos compañeros informáticos, a los que les transmití la idea de montar un Blog, donde compartir con la comunidad todo lo que sabemos, todo lo que vamos aprendiendo, y en definitiva nuestro día a día en nuestras labores de IT, desarrollo, sistemas operativos, redes, software, hardware, scripting, una especie de bitácora donde todo tiene cabida, y que además de servirnos de recordatorio a nosotros mismos, sirviese a más personas.

Al final no hicimos nada, mucho trabajo, compromisos, incluso uno de nosotros incorporó un nuevo miembro a su familia 😉

En un segundo intento, a primeros de noviembre (2014) nos reunimos para almorzar Lluis y yo, y decidimos tirar adelante, así que nos dispusimos a registrar un dominio, alojarlo en uno de los servidores que administro (www.jblanco.org), y montar un WordPress para tener una herramienta de trabajo. Al final, y tras el setup, tampoco hicimos nada 😉

En un tercer intento, tras recobrar contacto con unos ex-alumnos de Xàtiva, me enteré de que por aquellos lares pretendían hacer algo parecido, así que me dije, es ahora o nunca, y aquí estamos, hemos empezado. 🙂

Para completar el post, os contaré a modo de tutorial, cómo montamos la infraestructura sobre la que ahora mismo estáis leyendo.

1) Comprobación y compra del dominio

Lo primero que hay que hacer a la hora de montar un proyecto web de este tipo es registrar un nombre de dominio. Teníamos varios pensados y al final nos decantamos por sospedia.net

A la hora de comprobar la disponibilidad de un nombre de dominio no me gusta utilizar los buscadores que tienen los propios registradores, llevo en esto desde 1996 y me han ocurrido cosas “raras”, como estar buscando dominios para algún proyecto, y que cuando al día siguiente se los presentaba al cliente alguno de ellos hubiese desaparecido 🙁

Uso Debian como sistema operativo de escritorio, y cómo no, también es mi preferido para servidores, y utilizo el comando whois, que podéis encontrar en cualquier distro Linux, si no tenéis instalado el paquete lo podéis hacer usando el gestor de paquetes de vuestra distro. En caso de sistemas Debian based:

apt-get install whois
Comprobar dominio mediante whois

Comprobar dominio mediante whois

El comando whois es muy sencillo de utilizar, y lo que buscábamos, que el dominio estuviese libre o disponible, como lo queráis llamar, nos lo dice el “NO MATCH FOR” que podéis apreciar el la imagen anterior:

whois sospedia.net

Una vez hemos comprobado que el dominio está libre, procedemos a comprarlo. Para este paso, podemos estudiar las diferentes ofertas que hay en el mercado, pedir alguna recomendación, y lo sé, siempre os decantáis por el precio, pero nosotros nos decidimos por un agente registrador que nos ofrecía en el momento de la compra 4 servidores de nombre (DNS) diferentes. Esto es recomendable, ya que si una DNS cae, tienes tolerancia a fallos, aunque he de reconocer, y en mi Twitter lo podéis confirmar, que sí hubo una caída en diciembre, seguramente por un DDoS.

El proceso de compra es sencillo, tarjeta en mano o cuenta de paypal al canto. En el proveedor elegido, verificamos lo que ya sabíamos gracias al comando whois:

comprar-dominio.png

Verificamos lo que ya sabíamos gracias al comando whois (sospedia.net está disponible)

Seleccionamos la extensión que nos interesa y le damos al botón registrar. Además una opción interesante es utilizar la denominada “Protección Whois“, cómo no se el alcance del proyecto protejo mi información personal durante un año (tened en cuenta que los datos de un dominio, los que podéis obtener de la base de datos whois son públicos):

comprar-dominio1.png

Protección Whois

 2) Preparación del servidor

Lo más normal en cualquier proyecto es contratar el dominio y además un alojamiento, llamado también hosting, que es el espacio en disco duro donde se almacenan los archivos de la web, así como la base de datos y demás recursos.

En mi caso dispongo de un VPS que utilizo para mis clases, donde tengo alojados los subdominios:

  • www.jblanco.org, donde de vez, pero muy de vez en cuando publico algo, y se trata de un Joomla otro de los CMS que suelo utilizar
  • aula.jblanco.org, un Moodle, donde pongo a disposición de mis alumnos una extensión del aula física, colgando apuntes, prácticas y donde ellos me suben las prácticas y ejercicios.

Así que cómo no sabemos el alcance del proyecto que estamos empezando, decidimos alojar en este VPS el proyecto sospedia.net.

Lo primero es acceder al servidor vía ssh:

ssh root@jblanco.org
Acceso como root al servidor Linux vía ssh

Acceso como root al servidor Linux vía ssh

Después creamos un usuario “sospedia” en el sistema Linux:

useradd -s /bin/bash -d /var/vhosts/sospedia.net -m -g www-data sospedia
Comando useradd para añadir un nuevo usuario al sistema Linux

Comando useradd para añadir un nuevo usuario al sistema Linux

Paso a explicaros el comando useradd anterior:

  • Con la opción -s /bin/bash establezco que el interprete de comandos que utilizará, cuando conecte vía ssh por ejemplo, será Bash
  • Con la opción -d /var/vhosts/sospedia.net -m, por un lado -d especifica la carpeta de trabajo (home) del usuario en cuestión, y por otro -m fuerza a que esta carpeta se cree si todavía no existe.
  • Con -g www-data estoy diciendo que el usuario sospedia pertenezca al grupo www-data que en servidores “Debian-based” es el encargado de servir páginas web, el asociado al servidor web Apache.

Los que ya me conocéis sabéis que soy muy estricto, y aunque todo lo que dejemos (en un Debian) bajo la carpeta /var/www ya es servido por Apache2 (nuestro servidor web preferido), me gusta meterlo todo dentro de una subcarpeta ./vhosts/ para luego configurar los VirtualHosts desde los ficheros de configuración de Apache2, cada uno (cada proyecto) cómo no podría ser de otra forma en su carpeta separada.

Así pues para el caso que nos ocupa, el WordPress que servirá el proyecto sospedia.net estará ubicado en la carpeta /var/vhosts/sospedia.net del servidor.

Hemos creado el usuario, ahora tenemos que asignarle una contraseña, mediante el comando passwd:

passwd sospedia

A continuación configuramos el servidor web Apache2 para alojar el nuevo dominio:

En la carpeta /etc/apache2 tenemos los ficheros de configuración del servidor web.

Detalle de los sitios (sites-available) del servidor web Apache

Detalle de los sitios (sites-available) del servidor web Apache

Lo que vamos a hacer es definir el “Virtual Host” correspondiente a nuestra web. Para ello, desde la consola de comandos, escribimos lo siguiente:

cd /etc/apache2/sites-available

En esta carpeta se almacenan, en ficheros de texto, los diferentes sites (sitios web) que sirva el servidor web. Una vez dentro de esa carpeta escribiremos lo siguiente:

nano default

El fichero default suele existir en cualquier distro, editaremos este aunque podríamos crearnos uno nuevo. La ventaja de editar este es que podemos partir del vhost por defecto y “copy&pastearlo” para crear el de sospedia:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.sospedia.net
        DocumentRoot /var/www/vhosts/sospedia.net/www
        <Directory />
                Options -Indexes FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/vhosts/sospedia.net/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

A mi juicio, las tres opciones/parámetros más importantes para el correcto funcionamiento de un vhost son:

  • ServerName
  • DocumentRoot
  • Y el Directory correspondiente, con sus options y demás
Detalle del VirtualHost para sospedia.net

Detalle del VirtualHost para sospedia.net

Fijaros en el Directory o en el DocumentRoot/var/www/vhosts/sospedia.net/www/ y recordad que el usuario sospedia, creado en el sistema Linux, para el proyecto, tiene su carpeta de trabajo en /var/www/vhosts/sospedia.net, bien, pues dentro de ella tiene la subcarpeta ./www donde ubicaremos la web, en este caso el WordPress.

Existe otra carpeta:

cd /etc/apache2/sites-enabled

Donde realmente lo que tenemos son links a los ficheros de la carpeta anterior, que lo que viene a representar es: de los sitios disponibles (available) los que están habilitados (enabled) son estos.

Y existe un comando Apache:

a2ensite fichero

Que habilita el sitio o mejor dicho los VirtualHost que haya en el fichero. De la misma forma, también existe otro comando para deshabilitar:

a2dissite fichero

En este caso, y dado que en este servidor ya existían 2 VirtualHost funcionando, dentro del mismo fichero “default” no necesitamos utilizar el comando para habilitar el sitio.

Por si queréis más información sobre los sitios de apache, os dejo esta url.

Cómo siempre que tocamos las tripas de algún servicio, lo tenemos que “resetear”:

service apache2 restart
Restart del servicio apache2 tras modificaciones en su configuración

Restart del servicio apache2 tras modificaciones en su configuración

Cómo hemos especificado en el Directory, creamos la carpeta www, eso sí, para no romper permisos mediante el comando su, suplantamos al usuario sospedia:

su sospedia
mkdir /var/www/vhosts/sospedia.net/www
Creamos una carpeta www para alojar el WordPress

Creamos una carpeta www para alojar el WordPress

El siguiente paso a seguir es descargar la suite comprimida de WordPress para su posterior descompresión e instalación. En el momento de la instalación la versión era la 4.0, averiguamos la url de descarga y utilizando wget lo descargamos:

cd /var/www/vhosts/sospedia.net/www
wget https://es.wordpress.org/wordpress-4.0-es_ES.zip
Descarga mediante el comando wget de la última versión de WordPress

Descarga mediante el comando wget de la última versión de WordPress

Y lo descomprimimos mediante el comando unzip:

unzip wordpress-4.0-es_ES.zip
Unzip del WordPress descargado

Unzip del WordPress descargado

3) Modificación de las DNS del dominio

Antes de proceder a la instalación, se nos había pasado modificar las DNS del dominio para que apunten a la IP del servidor donde vamos a hacer el deploy, como es un proceso que puede tardar (según dicen hasta 48 horas) vamos a hacerlo antes de irnos a almorzar.

La configuración por defecto era la que se muestra en la captura siguiente. Nuestro proveedor o registrador del dominio, genera esta plantilla en la zona DNS del dominio sospedia.net y hace que los registros A que se aprecian en la figura apunten a una de sus IP, esto es lo que se denomina dejar un dominio en “parking“:

Detalle de la configuración por defecto del nuevo dominio sospedia.net

Detalle de la configuración por defecto del nuevo dominio sospedia.net

A nosotros lo que nos interesa en cambio es que nuestro nuevo dominio apunte a la IP del servidor donde hemos hecho el setup, y donde después haremos el deploy definitivo del CMS WordPress.

Por lo tanto borramos esas entradas o registros por defecto y añadimos los definitivos. Básicamente comentar que en la siguiente captura, se aprecia la IP del VPS donde hemos alojado el dominio, con el comodín @ hacemos que toda petición del tipo *.sospedia.net vaya a esa IP, y creamos otro registro A para el subdominio www, esto hará que cuando alguien escriba en un navegador www.sospedia.net, el navegador vaya a la dirección IP correspondiente, y gracias al VirtualHost creado antes en Apache, donde parámetro ServerName era justo esa url se servirá la página web:

Detalle de la configuración definitiva del nuevo dominio sospedia.net

Detalle de la configuración definitiva del nuevo dominio sospedia.net

4) Creación de una base de datos

Acto seguido creamos una base de datos MySQL para que WordPress pueda funcionar. Si usáis PhpMyAdmin, os recomiendo que la base de datos sólo escuche por localhost y por supuesto que en el firewall del servidor tengáis cerrado el puerto correspondiente a MySQL (3306). Mismo comentario suelo hacer si usáis algún servidor FTP, por ejemplo vsftpd, dejar acceso sólo a localhost y cerrar el puerto 21, de esta forma cuando en WordPress tengáis que realizar alguna instalación o alguna actualización, podréis hacerlo pero de forma local.

Al crear la base de datos para albergar el CMS WordPress os recomendamos que sólo sirva por localhost

Al crear la base de datos para albergar el CMS WordPress os recomendamos que sólo sirva por localhost

En este momento, aprovechamos para almorzar, dándole un poco de tiempo a las DNS 😉

5) Instalación de WordPress

Una vez se propaguen las DNS, procedemos a su instalación, ya podemos atacar directamente al subdominio www, y lanzamos la url en nuestro navegador preferido y WordPress nos redirecciona al script de instalación:

 Lanzamos la url de instalación en nuestro navegador preferido

Lanzamos la url de instalación en nuestro navegador preferido

Paso 1: WordPRess nos da la bienvenida informándonos de lo que debemos tener a mano, básicamente las credenciales de la base de datos que hemos creado antes, y un prefijo para sus tablas, para incrementar un poquito la seguridad, o bien para permitir varias instalaciones en la misma base de datos sin que haya colisiones:

En el paso 1 se nos informa de lo que debemos tener a mano

En el paso 1 se nos informa de lo que debemos tener a mano

Paso 2: Aquí rellenamos el formulario con las credenciales de la base de datos que hemos creado antes, y un prefijo para sus tablas:

En el paso 2 debemos proporcionar la información de conexión con la base de datos

En el paso 2 debemos proporcionar la información de conexión con la base de datos

Paso 3: Muchas veces ocurre que el grupo www-data en el caso de Debian, no tiene permisos de escritura en la carpeta de WordPress y por lo tanto no puede generar el archivo de configuración wp-config.php. Cómo nos informa lo podemos crear nosotros mismos copiando y pegando ese script, o bien arreglar los permisos y volver a intentarlo:

Tenemos problemas de permisos y WordPress no puede escribir el archivo de configuración

Tenemos problemas de permisos y WordPress no puede escribir el archivo de configuración

Arreglamos estos problemas mediante el comando chmod (recursivo)

Con el comando chmod permitimos la escritura al grupo (www-data)

Con el comando chmod permitimos la escritura al grupo (www-data)

chmod -R 775 www

Paso 4: Tras establecer bien los permisos, sí es capaz de escribir en el archivo de configuración:

Fichero de configuración creado, comenzamos instalación

Fichero de configuración creado, comenzamos instalación

Paso 5: Facilitamos la información del Blog, así como las credenciales para el DashBoard del primer usuario:

Información básica del sitio y del primer usuario (administrador)

Información básica del sitio y del primer usuario (administrador)

Paso 6: Fin de la instalación. Pues eso, lo lograste!

Fin de la instalación

Fin de la instalación

Y aquí tenemos los inicios de nuestro proyecto www.sospedia.net, con la plantilla por defecto de la versión 4.0 de WordPress y el maravilloso Hola Mundo 😉

Detalle del Blog con la plantilla por defecto de la versión 4.0

Detalle del Blog con la plantilla por defecto de la versión 4.0

Y esto, aunque un poquito largo, es todo amig@s. Por si algo no ha quedado claro os invito a ver este vídeo, sobre todo a partir del minuto 16:

Cómo siempre espero que os guste, y sobre todo que os sirva. Nos vemos en el siguiente artículo, aquí, en Sospedia.net

7 comments

Leave a Reply to Jose Blanco Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.