Instal·lar wordpress a Amazon EC2

Què millor manera de començar un bloc sobre enginyeria de software que explicar com me l’he fet.

En aquest artícle explicaré com instal·lar wordpress a una instancia EC2 a Amazon Web Services (AWS).

Coses i coneixements que haurem de tenir abans de començar:

  1. Abans de res, coneixements mitjans sobre informàtica. Per penjar el teu bloc wordpress no és necessari programar absolutament res, però si s’ha d’estar familiaritzat amb conceptes com Servidor, FTP, DNS, … .
  2. Un domini adquirit i control sobre els seus DNS.
  3. Un client SSH, si treballeu amb ubuntu (el més recomanable) ja el teniu per defecte. Per Windows existeix el PuTTy.
  4. Un compte a AWS, i per tant coneixements de cloud computing.

Nota personal sobre AWS

A no ser que sigueu una celebrity, o un guru molt seguit, el vostre bloc no suposarà una gran càrrega per un servidor. Per tant, no necessitem recursos molt potents, però a mesura que comenceu a saber més, voldreu tocar coses que un proveïdor de hosting normal no us permet, o us obliga a contractar uns serveis molt cars. Per això Amazon pot ser una bona solució ja que et permet administrar un servidor com si fos teu, però amb l’avantatja que no has de fer la inversió de milers d’euros que val un màquina. Una altra avantatja és que amb Amazon pagués per el que consumeixes, només et cobren per els recursos que estiguin en marxa. I per últim, EC2 és molt elàstic, el que fa que puguis començar amb un recurs molt petit, i anant escalant a mesura que ho vas necessitant.

Però atenció, no és la solució més econòmica i segura. El fet de tenir poder total, implica tenir capacitat total d’espatllar-ho tot; també implica que haureu de muntar els vostres sistems de seguretat, copies, alta disponibilitat, etc. Així que si no esteu molt convençuts de que li traureu profit, jo recomano que faceu servir el saas de wordpress, que és gratuït; o que seguiu amb el vostre proveïdor de hosting normal.

Crear la instància a EC2

El primer punt és crear la instància a EC2. I per això necessitarem escollir quina AMI (Imatge de muntatge) voleu. Jo recomano triar la AMI Amazon Linux AMI que us permetrà escollir el tipus d’instància micro, que si sou nous a AWS us deixarà provar un mes. Si més endavant comenceu a tenir èxit ja escalareu la instància.

Una vegada que la instància ja estigui corrent, us serà molt útil associar-li una IP pública. AWS té el servei Elastic IP. Aquest servei permet reservar i associar una IP pública a una instància.

Accedir a la instància

Accedir a la vostra instància amb ubuntu és molt sencill és suficient amb fer:

$ ssh -i keypair.pem ec2-user@[ip pública]

On keypair.pem és la ruta de la Key Pair que hem assignat a la instància. Recordeu que un arxiu .pem ha de tenir els permisos 400 per poder ser utilitzada per el client SSH.

Amb Windows farem servir PuTTy i PuTTYGen.

Primer convertirem el .pem que ens genera AWS com a key pair en un format reconeixible per PuTTy (.ppk). Per fer això executem el programa PuTTYGen, i en Converssions > Import Key seleccionem l’arxiu .pem. Una vegada que el programa ha aconseguit exportar correctament el format, desem la Private Key.

Després, executem el PuTTy. En Session posem com a host la IP de la instància. Abans d’executar, despleguem les opcions de Connection > SSH i a l’apartat Auth com a private key posem l’arxiu que acabem de crear.

Quan executem PuTTy ens demanarà amb quin usuari volem accedir, si hem fet servir la AMI de Amazon escriurem com usuari “ec2-user” i entrem.

Instal·lar el software a la instància

A no ser que hagueu triat una AMI ja preparada per aplicacions web, us trobareu la instància sense els serveis necessaris per aplicacions web. Per tant, haurem d’instal·lar el software necessari a la instància.

Servidor HTTP

El més essencial per una aplicaicó web és un servidor HTTP. El més conegut és Apache. L’instal·larem amb el gestor de paquets que porta la instància, en cas de la AMI de Amazon és el yum. Executem:

$ sudo yum install httpd

Servidor mysql

També necessitarem un servidor de base de dades. Per aquest cas triarem MySQL. Instal·lem el servidor i el client.

$ sudo yum install mysql mysql-server

PHP

WordPress necessita PHP per funcionar. L’instal·lem, i com hem instal·lat mysql també afegirem el mòdul corresponent per php.

$ sudo yum install php php-mysql

Opcionalment us recomano que també instal·leu el mòdul GD, que és un motor gràfic. És el mòdul que utilitza WordPress per retoc d’imatges.

$sudo yum install php-gd

Crear Virtual Host per el bloc

A diferència d’un servei de hosting bàsic, amb AWS tindreu control total de les instàncies que doneu d’alta. Així doncs, a part del bloc, podríeu fer servir la mateixa instància per altres aplicacions o webs; com per exemple, blocs d’amics i companys, i així podeu compartir les despeses.
Per això podem fer servir VirtualHost d’Apache, amb el que podrem crear espais virtuals separats per a cada aplicació web.

Abans de crear el VirtualHost hem de crear l’estructura de directoris on allotjar el nostre bloc. Quan instal·lem Apache, ens crea un directori /var/www on posa el site per defecte.
Dins de “/var/www” hi afegirem un directori nou anomenat “domains”, on aniran tots els nostres sites. Dins de domains crearem el directori per el bloc. En el meu cas ho vaig fer així:

$ sudo mkdir -p /var/www/domains/www.carlosgalancladera.net/public_html

Un cop creat, hem de configurar, l’usuari, grup i permisos adecuats per a que Apache pugui accedir-hi i modificar els continguts. Per fer això haurem de saber quin usuari ha creat Apache. Això es pot consultar a l’arxiu /etc/httpd/conf/httpd.conf, a les variables User i Group. Si heu fet servir Amazon Linux AMI, l’usuari i grup serà “apache”. Modifiquem els paràmetres dels directoris:

$ sudo chown -R apache:apache /var/www/domains/www.carlosgalancladera.net/
$ sudo chmod -R 775 /var/www/domains/www.carlosgalancladera.net/

Ara podem crear el Virtual Host a la configuració d’Apache. Per el nostre bloc en crearem un, afegint el codi següent al final de l’arxiu /etc/httpd/conf/httpd.conf.


   ServerAdmin cgcladera@gmail.com
   DocumentRoot /var/www/domains/www.carlosgalancladera.net/public_html
   ServerName www.carlosgalancladera.net

Imortant!, abans de tancar verifiqueu que la variable NameVirtualHost té el valor *:80 i no està comentada.

Ara reiniciem el servei

$ sudo service httpd restart

Si hem escrit alguna cosa malament a l’arxiu httpd.conf, el servei no es podrà inciar. Si falla, torneu a l’arxiu httpd.conf i reviseu que heu posat bé els paràmetres.

D’aquesta manera li hem dit a Apache que per totes les peticions que entrin per el port 80 i per el nom del servei http://www.carlosgalancladera.net, executi els programes que estan localitzats a /var/www/domains/www.carlosgalancladera.net/public_html.

Modificar els DNS

Ara ja tenim el servidor perparat per atendre les peticions per el port 80 al domini http://www.carlosgalancladera.net, per tant hem de configurar el DNS per a que apunti a la IP que hem assignat. Per fer això haureu d’accedir al panell de control del vostre proveïdor del vostre domini i fer els canvis. Els canvis poden tardar uns minuts, o fins i tot unes hores, en fer-se efectius.

Provar el servidor web

Una vegada efectius els canvis, és hora de provar que el que hem fet funciona. Per fer això pujarem el nostre primer arxiu HTML al site; però abans haureu de tenir una manera d’accedir als directoris de la instància.

La manera que jo recomano, és fer servir un client FTP que permeti fer conexións amb protocol SFTP (és a dir, SSH). El client FTP que més m’agrada és el FileZilla.

Per poder accedir als directoris primer haurem de configurar el SSH del FileZilla. És molt semblant a com ho varem fer amb el PuTTy. Obrim el menú Edició > Opcions… . A Conexió cerquem l’apartat SFTP. Apareixerà un llistat de “Claus Privades” que probablement la tingueu buida; abaix torabarem un botó per afegir-ne una, el pitgem i afegim l’arxiu .ppk que havíem creat amb el PuTTYGen. (Nota: També podríem triar el .pem, ja que el FileZilla té la capacitat de convertir .pem a .ppk). Pot semblar una mica estrany afegir la clau privada a les opcions generals del FileZilla, a jo també hem va semblar estrany. Això, és perquè el FileZilla sempre que intenta fer una connexió SFTP, va al repositori de claus privades i va provant una a una fins que troba una clau que serveix.

Quan ja tenim configurat el SFTP haurem d’afegir un nou “Lloc”. Per això obrim Arxiu > Gestor de llocs… . Apretem l’opció “Nou lloc”. A “Servidor” posem la IP pública de la instància, com a “Protocol” seleccionem SFTP. Com a “Mode d’accés” seleccionem “Normal” i posem com usuari el nom d’usuari de la instància (recordeu que si heu fet servir Amazon Linux AMI serà “ec2-user”). No posem contrasenya ja que la clau privada ja és un mètode d’autentificació. Ja podeu connectar-vos a la instància.

Per provar podeu crear un arxiu html o php i pujar-ho a /var/www/domains/www.carlosgalancladera.net/. Per comprovar que heu configurat bé el Virtual Host podeu obrir el site a un navegador amb el nom del vostre domini auna finestra, i una altra finestra amb la IP pública. Veureu que amb la IP surt una pàgina d’Apache, mentre que amb el vostre nom, apareix el index que heu pujat.

Configurar MySQL

El nostre bloc necessitarà una Base de dades on desar les dades. Jo he triat com a GBD MySQL, però qualsevol base de dades relacional SQL podria servir. Amb la instal·lació de la instància hem instal·lat el servidor de mysql, però encara no hem creat cap usuari ni base de dades.
Començarem per crear un usuari, ja que no és recomanable treballar amb l’usuari root. Per fer-ho obrirem el mysql:

$ mysql

Una vegada obert, ja podem executar comandes SQL. Començarem creant l’usuari:

mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'contrasenya';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'contrasenya';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%'
    ->     WITH GRANT OPTION;

Fixem-nos que en realitat haureu creat dos usuaris, un per quan accedeiu des de la mateixa màquina (com farà Wordress) i un altre per quan accedeiu des de fora, per exemple si utilitzeu una eina com MySQL Workbench. Jo recomano que creeu els usuaris amb el mateix nom i el mateix password. Guardeu bé el nom i password, ja que wordpress us ho demanarà quan l’instal·leu.

Quan ja tenim l’usuari necessitem crear una base de dades per wordpress. Sense sortir de mysql executem el següent:

mysql> CREATE DATABASE wordpress;

Ja hem creat la base de dades que farà servir el nostre bloc. Deseu el nom que li heu donat.

Instal·lar wordpress

Ja hem comprovat que el nostre Apache funciona i tenim configurada la base de dades. Pero encara no hem instal·lat el bloc. WordPress es un gestor de continguts molt conegut i utilitzat, a més, és open source, per el que el podem descarregar e instal·lar gratuïtament.
Un cop baixem de la pàgina l’arixu comprimit de wordpress, trieu un directori al vostre ordinador i descomprimiu-ho.
Tornem al FileZilla. Abans d’instal·lar wordpress esborreu l’arxiu index.html de prova que hem pujat abans. Per defecte, quan descomprimiu l’arxiu de worpress ho fa a una carpeta wordpress, el que haurem de fer és pujar el contingut d’aquesta carpeta al directori /var/www/domains/www.carlosgalancladera.net/public_html. Són molts arxius, així que trigarà una estona.

Quan ja ha acabat de pujar-ho tot. Ja podem començar a instal·lar el wordpress. Per fer-ho, obriu el navegador i accediur al vostre domini. El primer cop que s’executa el wordpress apareix un wizard d’instal·lació. La primera pàgina et diu quines dades necessitaràs, quan ja els tinguis continua amb el procés.
El següent pas, és crear l’arxiu de configuració, per això ens surt un formulari que ens demana:

  • Nom de la base de dades. En el meu cas “wordpress”
  • Usuari i contrasenya de la base de dades. En el meu cas “user”, “contrasenya”
  • Host de la base de dades. Com la base de dades està allotjada en la mateixa instància, deixarem el valor per defecte “localhost”

Quan tinguem aquest formulari continuem. Si tot ha anat bé, ja ens haurà instal·lat wordpress, ara només queda triar l’usuari i contrasenya de l’administrador del gestor de continguts. Quan arribeu a aquest punt si us surt una pàgina de wordpress avisant que no ha pogut escriure l’arxiu config.php, és perquè el directori del vostre domini (en el meu cas és /var/www/domains/www.carlosgalancladera.net), no té els permisos i usuaris correctes. Reviseu que tot el contingut del directori del vostre site tingui com usuari l’usuari d’Apache i els permisos 775.

Ja tenim wordpress instal·lat a AWS EC2. A partir d’aquí, funciona igual que el servei saas de wordpress. Disfruteu, i postejeu molt!

Anuncis

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

S'està connectant a %s