Instalar y configurar un WordPress en nuestra instancia AWS

Para este tutorial utilizaremos una máquina gratuita de Amazon Web Services con CentOS. En nuestros tutoriales podéis ver

cómo montar una máquina gratuita con Amazon Web Services

cómo montar un servidor web

cómo alojar varios dominios en vuestro servidor Apache.

Una vez configruado el servidor, vamos por pasos a instalar nuestro WP.

 

Instalación de WordPress en nuestro servidor AWS

1) Descargamos el paquete de instalación de Worpdress en nuestro CentOS:

wget https://wordpress.org/latest.tar.gz

2) Descomprimimos el paquete de instalación:

tar -xzf latest.tar.gz

Se descomprime en un directorio llamado wordpress.

Configuración de Worpdress

3) Creamos un usuario y una base de datos para la instalación de Worpdress (si no tenéis, podéis ver cómo instalar y configurar vuestro servidor MySQL aquí). Para ello:

  • Nos logamos en nuestro servidor MySQL como root:
mysql -u root -p
  • Creamos usuario y password
CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
  • Creamos la base de datos
CREATE DATABASE `wordpress-db`;
  • Le damos al usuario todos los privilegios
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
FLUSH PRIVILEGES;
  • Salimos de mysql
exit

4) Creamos el archivo wp-config.php. Para ello:

  • Vamos al directorio de wordpress
cd wordpress
  • Creamos wp-config a partir del ejemplo
cp wp-config-sample.php wp-config.php
  • Lo editamos
nano wp-config.php
  • Definimos la base de datos, el usuario y la password con los datos anteriores
define('DB_NAME', 'wordpress-db');
define('DB_USER', 'wordpress-user');
define('DB_PASSWORD', 'your_strong_password');

5) A continuación movemos nuestra instalación de wp al lugar en que la queremos, en nuestro caso la raíz de nuestro vhost:

sudo mv * /var/www/example.com/public_html/

Si ahora (y es recomendable hacerlo) vamos a la dirección de nuestro site, encontraremos la continuación del proceso de instalación de WP, su famosa instalación en 5 minutos.

Posibles problemas con ssh

Si no hemos instalado un servidor ftp podemos trabajar con nuestra conexión ssh, pero para ello necesitamos actualizar la configuración, ya que si no no podremos hacer que WP se actualice.

Para ello tenemos dos solcuiones:

1) A nivel de configuración: la más recomendable es cambiar la configuración del Apache. En este tutotial informan muy bien de cómo cambiar la configuración del Apache para permitir que el WP cargue.

2) A nivel de pluguin: Para facilitar esta tarea, hay un útil plugin para WP: SSH SFTP Updater Support. Utilizad el Filezilla para subir este plugin a la carptea de plugins y activadlo. Ahora, al intentar hace un update o instalar un plugin, se ops presentarña la página de ftp pero con un añadido: ssh2.

Alli poned la ip o dns externas del servidor, el usuari ec2-user, sin password y la clave privada incluido:

—–BEGIN RSA PRIVATE KEY—–

—–END RSA PRIVATE KEY—–

Posibles problemas con permalinks

Podéis seguir esta guía para solucionar los problemas con pemalinks. Si surgen, esta vez se trata muy probablemente de un problema de reescritura.

 

Crear un servidor web en una instancia de AWS

Vamos a crear, para este ejemplo, un servidor Web en una instancia de Amazon Web Services con CentOS. Si todavía no tenéis ninguna instancia, podéis seguir nuestro tutorial sobre Como crear una instancia gratuita en Amazon Web Services (AWS).

Para que nuestra instancia trabaje como servidor web, tenemos que instalar el software necesario, además de asegurarnos que tenemos abiertos los puertos para HTTP y HTTPS (ver en nuestro post citado cómo abrir puertos utilizando los Grupos de Seguridad).

(Este pequeño tutorial se basa en los pasos indicados en la página de Amazon, con algunos cambios actualizados.)

Instalación y configuración del software necesario para el servidor web

El software que necesitamos es el Apache Web Server, el MySQL y el PHP. Abrimos la consola (ver post citado) y mediante la siguiente instrucción lo instalamos

sudo yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"

Tras cada instalación nos aseguramos de que no hay errores y de que vemos el mensaje de la consola Complete! o similiar.

Instalamos el paquete php-mysql:

sudo yum install -y php-mysql

E iniciamos el servidor Apache

sudo service httpd start

Si vemos un [OK] verde es que todo está correcto

Utilizamos el comando chkconfig para inicializar el servidor Apache con cada reinicio de máquina:

sudo chkconfig httpd on

Para probar que definitivamente estamos en la www, ponemos nuestro dns público o nuestra ip pública en un navegador, y si vemos la página de test es que todo está correcto.

Poder empezar a poner contenido en nuestra web en /var/www/html. Esta localización por defecto es del usuario root; tenemos que modificar los permisos y las propiedades. Para ello creareemos un grupo www y le daremos permisos y propiedades para el directorio /var/www, de manera que cualquier miembros de este grupo pueda trabajar allí. Añadimos el grupo:

sudo groupadd www

Añadimos nuestro usuario en el grupo:

sudo usermod -a -G www ec2-user

Salimos y volvemos a entrar para que el grupo se actualice:

exit
ssh…

Una vez hemos vuelto a entrar confirmamos el grupo:

groups

que nos dará:

ec2-user wheel www

Cambiamos la propiedad de /var/www y su contenido al grupo www:

sudo chown -R root:www /var/www

Cambiamos los permisos de /var/www y sus subdirectorios:

sudo chmod 2775 /var/www

Nos aseguramos de que cualquier nuevo directorio tendrá los mismos permisos:

find /var/www -type d -exec sudo chmod 2775 {} +
find /var/www -type f -exec sudo chmod 0664 {} +

Probamos que todo está correcto creando un fichero .php:

echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

Y ahora volvemos a cargar en un navegador nuestra ip o dns / phpinfo.php.

¡Si vemos la página de php es que todo está correcto!

La eliminamos por razones de seguridad:

rm /var/www/html/phpinfo.php

 

Pasos para securizar nuestra instalación de mysql en el servidor

Inicializamos el servidor mysql:

sudo service mysqld start

Inicializamos la instalación segura de mysql:

sudo mysql_secure_installation

Y seguimos los pasos:

Introducimos una contraseña para el usurio root de mysql (simplemente ENTER, puesto que no hemos puesto ninguna).

Cambiamos la password: Y e introducimos la password

Quitamos el usuario anónimo: Y

Quitamos acceso externo de root: Y

Borramos la base de datos test: Y

Volvemos a generar las tablas de privilegios: Y

¡Y ya está!

 

 

Como crear una instancia gratuita en Amazon Web Services (AWS)

¿Qué es una instancia de Amazon Web Service?

Una instancia es una máquina virtual con parámetros y capacidades definidas y variables que tenemos en la nube de Amazon. Es decir, tú compras un ordenador en la nube con x memoria RAM, x espacio de disco, x procesador, etc., que puedes ampliar en periodos de pico, disminuir o parar. Se paga al mes y por uso: tantos recursos usamos, tantos pagamos.

Para empezar lo mejor es la prueba gratis de un año con una instancia con mínimos recursos, que puede contratarse en la página de capa de uso gratuito de AWS. Para comparar los precios de un contrato, es bueno empezar por utilizar la calculadora de precios aproximados mensuales.

Nuestra primera instancia

Para empezar partiremos de nuestra primera instancia gratuita. Una vez dados de alta a partir del link anterior, vamos a nuestra consola principal, donde tenemos todas las posibilidades de la nube de Amazon, que son muchas y muy diversas, y vamos a nuestras EC2 o instancias elásticas virtuales.

Consola Principal de AWS

Una vez allí, empezamos a crear una instancia:

Creación de una instancia

Se abrirá un asistente de configuración. Importante: aseguráos de que señaláis que sólo queréis las opciones gratuitas:

Seleccionar las opciones gratuitas

Seleccionamos, de entre las opciones gratuitas, la que más nos convenga, CentOS, Ubuntu, Windows 2008 Server, etc. Nosotros escogemos la primera, Amazon Linux AMI con 64 bits, basada en CentOS:

Tipos de instancias

Al ser gratuita optamos a lo mínimo:

Opciones

Podemos lanzar ya la instancia, pero vamos a configurar más detalles o por lo menos a conocerlos:

Detalles de configuración

Examinamos los detalles de la instancia y cambiamos lo que conseideremos o con lo que queramos jugar (podemos borrar instancias y crear nuevas más tarde, de manera que podemos probar). Importante: algunas de las opciones superan la capa gratuita, fijáos en el mensaje Additional charges apply.

No seleccionar las opciones de pago

Es importante configurar los Grupos de Seguridad, que son los diversos grupos de Firewall para nuestras instancias:

Grupos de Seguridad

 En él tenemos el puerto principal para comunicarnos con nuestra instancia: el puerto 22 para el SSH:

Puerto 22

Si usaremos nuestra instancia como Servidor Web necesitaremos abrir el puerto 80; también podemos abrir el 443 para el HTTPS, etc.

Abrir puertos en Grupos de Seguridad

Una vez terminado, lanzamos nuestra instancia. Fijaos que antes de lanzarla nos van a preguntar por el par de claves para conectarnos mediante SSH.

Lanzar la nueva instancia

Podéis escoger un par creado anteriormente, si ya lo tenéis, o crear uno:

El par de claves pública-privada

Si creamos uno es importante seguir bien los pasos y guardar bien la clave privada que nos vamos a bajar como un fichero .pemEs importante guardarlo bien.

El fichero .pem

Una vez lanzada la instancia, pasarán unos momentos de inicialización y cuando veamos que han pasado los dos checks positivamente, ya tendremos nuestra instancia:

Instancia completada

Si seleccionamos la instancia, veremos en la parte inferior del panel todos los datos. Fijaos en la DNS pública, que es la que nos servirá para conectarnos mediante SSH.

DNS pública

Conectarnos a nuestra instancia desde Windows: Cygwin

Si trabajamos desde Linux no tenemos problema, ya que normalmente el cliente SSH está instalado. Si trabajamos desde Windows tenemos que instalarnos un cliente Linux para conectarnos con nuestro Linux mediante SSH. Hay bastantes, normalmente se utiliza Cygwin o PuTTY. Para nuestro ejemplo utilizaremos Cygwin.

Instalamos Cygwin, y, para establecer la conexión ssh con Cygwin vamos a

C:\cygwin\home\<usuario>\.ssh

Copiamos el fichero .pem descargado al crear nuestro par de claves y lo copiamos en ese directorio.

Abrimos cygwin y escribimos el siguiente comando:

ssh -i ./path/key_pair.pem ec2-user@public_dns_name

donde:

  • el path es .ssh/xxxxxx.pem
  • el usuario, en nuestro caso es ‘ec2-user’ (si la instancia es Ubuntu el usuario es ‘ubuntu’, etc.; consultad el usuario de vuestra instancia).
  • y la public_dns_name es la DNS pública que hemos señalado en el panel de datos de vuestra instancia.

Decimos que sí queremos continuar cuando nos avisa de que no tenemos esa dirección en nuestros hosts.

Y en la primera conexión

¡Y ya estamos!

Ya estamos en nuestra instancia

Primera actuación en nuestra instancia: ponerla al día

Lo primero que podemos hacer es asegurarnos de que tenemos todo el software al día mediante la instrucción

Sudo yum update –y (la y instala sin confirmación, lo que en este caso nos sirve)

Lo más probable es que veamos una importante cantidad de updates, lo cual es tranquilizador.

 

Cordova Error: please install android target 17 (the Android 4.2 sdk)

Este error surge cuando preparamos nuestro proyecto Cordova desde consola y no tenemos las APIs de Android que requiere nuestro proyecto. En el caso de nuestro micro-tutorial es el 4.2 (API 17, es decir android target 17), pero podría ser cualquiera.

Para solucionarlo debemos poner android en la misma consola y nos saldrá el Android SDK Manager (que encontraréis también en la instalación). Desde allí podremos instalar lo que nos haga falta.

Android SDK Tools

Android SDK Tools

Recordad que el Android SDK y el proyecto Cordova de Apache no son lo mismo, de manera que configurar una cosa no significa que la otra reaccione.

 

No me encuentra un comando que he incluido en el path

Este micro-tutorial está pensado para evitar algunos quebraderos de cabeza. A veces configuro el path de Windows con la ruta para un comando específico (léase node, o java) y resulta que no funciona. Miro y remiro el path, y ahí está la ruta, pero no funciona.

La última vez me pasó con la instalación de node.js. La instalación me la puso al final del path. El problema viene cuando hay alguna instalación antigua en el path, o equivalente. El sistema lee el path desde el principio al final, y se para si encuentra lo que busca. De manera que una mala instalación o una instalación antigua puede invalidar la última instalación, ya que normalmente el programa las pone al final.

¿Solución? Poner la ruta en cuestión al principio. Creedme, muchas veces éste es el problema.

Configuración del path

Configuración del path – Poned siempre la ruta al principio

Moraleja: al configurar un path, es una buena idea poner siempre la ruta al principio.

 

Abrir puertos en el Firewall de Windows 2008 Server R2

Para abrir los puertos de Windows 2008 Server R2 el primer paso (que no el único) es abrir los puertos en el Firewall. En el caso de que utilicéis el Firewall que Windows tiene instalado por defecto, estos son los pasos a seguir. No es difícil, pero algunos de sus detalles pueden resultar confusos.

1)    Abrid el Firewall de Windows con Seguridad Avanzada

Firewall de Windows con Seguridad Avanzada

Firewall de Windows con Seguridad Avanzada

 

2)    En la pantalla del Firewall, seleccionamos Reglas de Entrada. Por defecto los puertos están abiertos de salida y cerrados de entrada. En las reglas de entrada hay algunas reglas por defecto. Nosotros vamos a Añadir Nueva Regla.

Reglas de Entrada

Reglas de Entrada

 

3)    Podemos añadir diferentes tipos de reglas. Nosotros señalamos Puertos.

Puertos

Puertos

 

4)    Señalamos que se trata de una conexión TCP y señalamos el puerto específico que deseamos (o rango de puertos como señala el ejemplo).

TCP - Puerto o Rango de Puertos a abrir

TCP – Puerto o Rango de Puertos a abrir

 

5)    ¿Qué puede controlar la regla?

  • Permitir completamente la conexión
  • Permitir la conexión si es segura según parámetros específicos
  • Bloquear la conexión

Nosotros vamos a abrir el puerto, por lo tanto vamos a Permitir la conexión.

Permitir la conexión

Permitir la conexión

 

6)    Escogemos el entorno en el que esta regla se aplica. Si abrimos el puerto para una aplicación web, como Node, debemos marcar los tres.

Escogemos los tres entornos

Escogemos los tres entornos

 

7)    Ponemos un nombre y una descripción. Es una buena práctica poner una descripción para luego reconocer mejor nuestra regla entre todas.

Nombre y descripción

Nombre y descripción

 

8)    Nos aseguramos de que está en la lista y de que está activada (círculo verde).

Regla activa

Regla activa

 

Tenéis más información, cómo no, en Microsoft.

 

Comprobar puertos abiertos desde Windows: Zenmap

Todos los que trabajamos en mayor o menor medida con servidores, o con estaciones haciendo las veces de servidores, nos hemos encontrado con el problema de cómo comprobar que el puerto 21, o el 8080, o cualquier otro, está abierto.

Los usuarios de MAC lo tienen sencillo con su Utilidad de Red o Network Utility, que viene por defecto instalado en el iOS. Para los usuarios de Windows es más complicado, pues no viene por defecto instalada ninguna de las herramientas para comprobar puertos abiertos.

La buena noticia es que no es nada difícil, una vez se conocen las herramientas adecuadas. Hay varias, desde telnet o netstat hasta la herramienta de Microsoft PortQry (en los blogs de technet de Windows hay un tutorial muy útil sobre el uso de PortQry).

Yo, aquí, voy a presentar con un ejemplo una de las herramientas de comprobación de puertos más potentes y que menos problemas da: Zenmap.
Continue reading

Abrir puertos en Windows Server 2008 R2: ejemplo con el servidor de node.js

Para abrir puertos en Windows Server 2008, no sólo es necesario habilitar reglas en el Firewall de Windows, en el Firewall de Parallels Plesk 11, caso de que lo tengáis activado, o el Firewall de vuestro servidor dedicado.

Tenéis también que habilitar el IP Security Policies on Local Computer, para permitir la conexión desde ips remotas hacia un determinado puerto local, así como añadir una acción de filtrado para permitir las comunicaciones en ese puerto.

En este tutorial vamos a ver, en poco más de 20 pasos, como abrir el puerto 8099 para permitir conexiones externas para un servidor de node.js.
Continue reading

Cómo crear un layout básico para un proyecto PhoneGap con jQuery Mobile

En este pequeño tutorial se os muestra un ejemplo básico de layout con jQuery Mobile. Es sencillo, pero no debemos olvidar los dos apartados que debemos tener siempre en cuenta: una buena configuración y una buena comprensión de la arquitectura. En este tutorial abordamos ambas cosas.

jQuery Mobile: configuración

Id a http://jquerymobile.com/download/ y bajaos el código en .zip (a no ser que queráis utilizar Content Distribution Network (CDN), aunque no es recomendable si no estamos seguros de tener siempre internet).
Continue reading

Cómo configurar Cordova 3 para trabajar en entorno Android

PhoneGap / Cordova: ¿qué es?

PhoneGap es un framework que te permite crear aplicaciones únicas para múltiples plataformas móviles. Está basado en HTML5, de manera que la aplicación que creamos funciona como una página web corriendo en un servidor local. Esto hace que podamos utilizar la misma aplicación en un iOS, un Android, una Blackberry, etc.

Para crear estas aplicaciones no es necesario más que saber diseñar webs. Incluso en esta parte no es necesario ser tampoco un experto: los múltiples frameworks se encargan de las funcionalidades, como la creación de las páginas (HTML5 Boiler, por ejemplo), la gestión del Look and Feel y de la navegación (jQuery Mobile, entre otros), etc. Por ello, la parte más difícil de Phonegap es, quizás, el primer contacto, es decir, la instalación. En este tutorial os acompañamos en este primer paso hacia le mundo del HTML5 en móviles.

Para el problema de la nomenclatura PhoneGap / Cordova podéis ver esta entrada del blog oficial. Continue reading