17 des 2010

Servidor LAMP + Ruby on Rails

No Comments Informàtica

Advertiment: Després de les pri­me­res hores barallant-​​me amb Ruby on Rails m’he ado­nat que exis­tei­xen certs bugs en algu­nes ver­si­ons actu­als de Ruby, Rails i RubyGems, de manera que edito aquest post per eli­mi­nar les refe­rèn­cies a RoR en les coman­des d’instal·lació (igno­reu tot el punt 4 també). Deixem-​​ho en què és un howto per a instal·lar un ser­vi­dor LAMP. Quan hagi aca­bat de treure’n l’entrellat, de tot ple­gat, ja faré un altre post sobre Ruby on Rails.


Abans que res, LAMP és l’abreviació que es fa ser­vir per a referir-​​nos a un ser­vi­dor web amb Linux + Apache + MySQL + PHP. Sense entrar en con­fi­gu­ra­ci­ons més avan­ça­des (en tot cas ho dei­xaré per a futurs posts), instal·lar-lo si ja tenim una màquina amb GNU/​Linux fun­ci­o­nant és ben sen­zill. A més a més, en aquest post expli­caré com instal·lar phpMyAd­min per a fer més àgil la creació/​edició de les bases de dades MySQL i Ruby on Rails, de manera que tin­drem un entorn de desen­vo­lu­pa­ment i allot­ja­ment web com­plet. (En el meu cas per a crear i pro­var local­ment apli­ca­ci­ons web abans de posar-​​les al ser­vi­dor definitiu).

1 Instal·lar Apache + MySQL + PHP

Si ja tenim GNU/​Linux en fun­ci­o­na­ment, des d’un ter­mi­nal llan­cem l’ordre:

1
sudo apt-get ins­tall apache2 mysql-ser­ver mysql-cli­ent php5

El més nor­mal és que durant la instal·lació ens pre­gunti la con­tra­se­nya de root (admi­nis­tra­dor) que volem apli­car a la base de dades (és reco­ma­na­ble que no fem ser­vir la mateixa que tenim al sis­tema!) però si pel que fos no ens la dema­nés, la podem assig­nar poste­ri­or­ment fent:
1
sudo mysq­lad­min -u root -h local­host password pa$$w0rd

2 Instal·lem el mòdul de MySQL per PHP

1
sudo apt-get ins­tall php5-mysql

3 Instal·lem i provem phpMyAdmin

1
sudo apt-get ins­tall phpmyad­min

Per a pro­var si fun­ci­ona, només cal que obrim la pàgina http://localhost/phpmyadmin i ini­ciem ses­sió com a root, amb la con­tra­se­nya que hem esta­blert al pas 1.

4 Instal·lem RoR i el seu mòdul de MySQL

Ruby on Rails és un llen­guatge de pro­gra­ma­ció com­bi­nat amb un fra­mework de desen­vo­lu­pa­ment web «opti­mi­zed for pro­gram­mer hapi­ness and sus­tai­na­ble pro­duc­ti­vity», que així d’entrada –pel poc que n’he vist en un parell de tuto­ri­als– em sem­bla força atrac­tiu. De fet, tot aquest mun­tatge ve de la neces­si­tat de crear una apli­ca­ció web que vull fer amb RoR per aprendre’n. Val la pena fer un cop d’ull a TryRuby i Rails for Zombies si us interessa.

1
sudo apt-get ins­tall ruby rails ruby­gems libmysql-ruby liba­pache-ruby1.8

5 Evitem l'arrencada automàtica d'Apache i MySQL

Si aquesta instal·lació l’hem fet en el nos­tre ordi­na­dor per­so­nal (i no en un ser­vi­dor dedi­cat) ens pot interes­sar que només s’executin els ser­veis Apache i MySQL quan els neces­si­tem, a fi d’estalviar recur­sos del sis­tema. Per a aconseguir-​​ho només cal que con­fi­gu­rem el nos­tre nivell d’execució per defecte (sol ser el 2 en Debian/​Ubuntu) per­què no posi en marxa aquests ser­veis. Això ho farem eli­mi­nant els enlla­ços d’arrencada de la car­peta /etc/rc2.d (si el nos­tre nivell d’execució per defecte és el 2). Per com­pro­var el nivell d’execució actual (i per tant el con­fi­gu­rat per defecte si no l’hem can­viat) exe­cu­tem:

1
run­le­vel

i ens que­dem amb el segon valor. De fet, però, tot ple­gat pot resumir-​​se a les coman­des:
1
2
3
cd /​etc/​rc«run­le­vel | cut -d ” ” -f 2«.d
sudo rm *apache2
sudo rm *mysql

i lles­tos! A par­tir d’ara, sem­pre que enge­guem l’ordinador tin­drem els ser­veis de ser­vi­dor web i bases de dades atu­rats i per engegar-​​los només hau­rem de can­viar al nivell d’execució 3 fent:
1
sudo init 3

És clar que també podem engegar-​​los o aturar-​​los manu­al­ment sem­pre que vul­guem exe­cu­tant:
1
2
sudo ser­vice apache2 [stop|start]
sudo ser­vice mysql [stop|start]

Doncs bé, tot a punt per comen­çar a prac­ti­car amb Ruby on Rails un cop superat el tuto­rial Rails for Zombies. Si tot va bé miraré de fer un altre howto d’aquests expli­cant com crear una apli­ca­ció web sen­zi­lla amb aquest fra­mework.

{lang: «ca»}

17 nov 2010

Repositori local per a Ubuntu 10.04

No Comments Informàtica

En un entorn local on tin­guem una colla d’ordinadors amb Ubuntu com­par­tint ADSL és una molt bona idea dis­po­sar d’un equip que actuï com a repo­si­tori local, de manera que no s’eternitzin les actu­a­lit­za­ci­ons o les instal·lacions de nou pro­gra­mari amb tots els ordi­na­dors de la xarxa des­car­re­gant alhora les matei­xes dades. El sen­tit comú indica que és molt millor que des­car­re­gui les dades un de sol i les com­par­teixi amb la resta. D’això tracta aquesta entrada: de com con­fi­gu­rar un repo­si­tori local per a Ubuntu 10.04 (encara que ser­veix per a qual­se­vol altra ver­sió i dis­tri­bu­ció basada en Debian). És molt sen­zill de fer, però escric el pro­cés per­què m’he tro­bat algun mal­de­cap que val la pena aclarir.

D’entrada neces­si­tem un ordi­na­dor amb GNU/​Linux (no cal que sigui Ubuntu per a fer un mir­ror d’aquest sis­tema, però sem­bla el més lògic). Jo faré ser­vir un vell por­tà­til HP Compaq nx6310 amb un Core 2 Du0 T5500 @1,66Ghz i 512MB de memò­ria amb Lucid Lynx instal·lat. El repo­si­tori ens ocu­parà uns 36GB de disc per cada ver­sió del SO que neces­si­tem si només volem els seus paquets bina­ris (els neces­sa­ris per a les actu­a­lit­za­ci­ons i les noves instal·lacions) i gai­rebé el doble si volem també el codi font (source) de tot el sis­tema. Podem con­sul­tar la quan­ti­tat d’espai dis­po­ni­ble en cada par­ti­ció des del ter­mi­nal amb la comanda:

1
df -h

En el meu cas, tinc una par­ti­ció de 40GB del disc mun­tada sobre la car­peta /​ubuntu on hi haurà les dades del mir­ror sense codis font. Comencem la cre­a­ció del repositori:

Part servidor

Aquestes són les con­fi­gu­ra­ci­ons que hem de fer a la màquina que actu­arà com a repo­si­tori local. Després veu­rem com hem de con­fi­gu­rar la resta d’ordinadors client.

1 Instal·lem l'aplicació apt-mirror

1
sudo apt-get ins­tall apt-mir­ror

Aquesta és l’aplicació que farem ser­vir per a crear i man­te­nir el nos­tre repo­si­tori. El següent que hem de fer és la configuració.

2 Creem les carpetes i els canviem el propietari

L’apt-mirror s’executa amb per­mi­sos de l’usuari homò­nim creat auto­mà­ti­ca­ment durant el pas ante­rior, per tant, per­què el repo­si­tori s’ompli de dades cor­rec­ta­ment cal que la car­peta on el vul­guem situar sigui pro­pi­e­tat d’aquest usu­ari. Si volem situar el mir­ror a la car­peta per defecte /​var/​spool/​apt-​​mirror no cal que ho fem, però si pre­fe­rim esco­llir una ubi­ca­ció per­so­na­lit­zada sí.

1
2
3
4
sudo mkdir /​ubuntu/​var
sudo mkdir /​ubuntu/​skel
sudo mkdir /​ubuntu/​mir­ror
sudo chown -R apt-mir­ror:apt-mir­ror /​ubuntu

Substituïu /​ubuntu per la car­peta que vul­gueu. En cas de no fer-​​ho des­prés ens tro­ba­rem amb l’error touch: no s’han pogut can­viar les dates de «/​ubuntu/​var/​apt-​​mirror-​​lock»: No such file or directory

3 Configurem apt-mirror

El fit­xer del con­fi­gu­ra­ció de l’apt-mirror el tro­ba­rem, un cop instal·lat, a la ruta /etc/apt/mirror.list i el podem edi­tar en el nos­tre edi­tor pre­fe­rit (en el meu cas: joe). Si no teniu un “edi­tor pre­fe­rit” podeu uti­lit­zar gedit, que serà el més sen­zill:

1
gksudo gedit /​etc/​apt/​mir­ror.list

i tro­ba­rem un fit­xer si fa o no fa així:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
############# con­fig ##################
#
# set base_​path    /​var/​spool/​apt-mir­ror
#
# set mirror_​path  $base_​path/​mir­ror
# set skel_​path    $base_​path/​skel
# set var_​path     $base_​path/​var
# set cle­ans­cript $var_​path/​clean.sh
# set defaul­tarch  <run­ning host arc­hi­tec­ture>
# set postmirror_​script $var_​path/​post­mir­ror.sh
# set run_​postmirror 0
set nth­re­ads     20
set _​tilde 0
#
############# end con­fig ##############
deb http://archive.ubuntu.com/ubuntu lucid main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​security main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​updates main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​proposed main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​backports main res­tric­ted uni­verse multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid main res­tric­ted uni­verse multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid-​​security main res­tric­ted uni­verse multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid-​​updates main res­tric­ted uni­verse multiverse
#deb-src http://archive.ubuntu.com/ubuntu lucid-​​proposed main res­tric­ted uni­verse multiverse
#deb-src http://archive.ubuntu.com/ubuntu lucid-​​backports main res­tric­ted uni­verse multiverse
clean http://archive.ubuntu.com/ubuntu<br />

Les úniques modi­fi­ca­ci­ons que farem en aquest docu­ment seran a la línia 3 de manera que quedi:
1
2
3
4
############# con­fig ##################
#
set base_​path    /​ubuntu
#

Fixem-​​nos que ha des­a­pa­re­gut el sos­tin­gut # del prin­cipi de la línia (les línies que comen­cen per un # sem­pre són igno­ra­des en els fit­xers de con­fi­gu­ra­ció) i hem can­viat la car­peta base per defecte per la nos­tra. No cal tocar la resta de vari­a­bles (línies 5–11). Per des­comp­tat si vol­gués­sim fer un mir­ror d’una ver­sió dife­rent can­vi­a­ríem la paraula lucid per l’adequada en totes les línies de la 17 a la 27. Per últim, posa­rem un sos­tin­gut # davant les línies 23–25 per evi­tar que es des­car­re­guin els codis font.

4 Començar la descàrrega

Un cop ho tenim tot con­fi­gu­rat cal indi­car que volem comen­çar la des­càr­rega de paquets. Com que són –com a mínim– 36GB hem de pen­sar en no menys de 8 hores de des­càr­rega! Iniciar el pro­cés és molt sen­zill però ens podem tro­bar algun con­tra­temps. La comanda és la següent:

1
sudo su - apt-mir­ror -c apt-mir­ror

Això des­car­re­garà els índexs dels paquets  i des­prés els pro­ces­sarà. En aquest moment ens pot apa­rèi­xer un error que indi­qui apt-​​mirror: can’t open index in proceed_​index_​gz at /​usr/​bin/​apt-​​mirror line 449 que solu­ci­o­na­rem cor­re­gint un petit error en l’script que fa la des­car­rega. Hem d’editar el fit­xer /​usr/​bin/​apt-​​mirror i situar-​​nos a la línia 449
1
gksudo gedit /​usr/​bin/​apt-mir­ror

(amb CTRL+I podem sal­tar a la línia desit­jada) per a fer el següent canvi:
1
open STREAM, “< $path/$index>” or die([...]);

1
open STREAM, “< $path$index>” or die([...]);

És a dir, eli­mi­nem la barra /​ que separa $path/$index.

En repren­dre la des­càr­rega és pro­ba­ble que ens tro­bem amb un nou incon­ve­ni­ent: apt-​​mirror is alre­ady run­ning, exi­ting at /​usr/​bin/​apt-​​mirror line 187. És una pràc­tica habi­tual que molts pro­gra­mes creïn un fit­xer buit de blo­queig (lock) per a evi­tar que els exe­cu­tem dues vega­des simul­tà­ni­a­ment i, en haver avor­tat l’execució prè­vi­a­ment apt-​​mirror es pensa que ja està en exe­cu­ció quan en rea­li­tat no és així. Aleshores hem de bor­rar manu­al­ment el fit­xer de blo­queig i repren­dre la des­càr­rega. Aquest cop hau­ria d’anar bé!

1
2
sudo rm /​ubuntu/​var/​apt-mir­ror.lock
sudo su - apt-mir­ror -c apt-mir­ror

5 Instal·lar el servidor web

Després d’unes quan­tes hores de des­càr­rega pro­ce­di­rem a instal·lar el ser­vi­dor web, ja que la trans­fe­rèn­cia de dades amb els nos­tres cli­ents la farem mit­jan­çant http. Això és tan fàcil com exe­cu­tar:

1
sudo apt-get ins­tall apache2

No cal fer cap con­fi­gu­ra­ció, l’establerta per defecte és per­fecta per als nos­tres interessos.

6 Establir els vincles del servidor web a la carpeta del mirror

La única car­peta acces­si­ble via http per defecte del nos­tre sis­tema és /​var/​www però com que hem instal·lat el mir­ror en una ubi­ca­ció dife­rent, farem ser­vir uns enlla­ços sim­bò­lics.

1
2
3
sudo ln -s /​ubuntu/​mir­ror/​arc­hive.ubuntu.com /​var/​www/​arc­hive-ubuntu
sudo ln -s /​ubuntu/​mir­ror/​arc­hive.cano­ni­cal.com /​var/​www/​arc­hive-cano­ni­cal
sudo ln -s /​ubuntu/​mir­ror/​secu­rity.ubuntu.com /​var/​www/​secu­rity-ubuntu

Ja hem acabat!

Part client

En tots els ordi­na­dors que vul­guem que emprin el repo­si­tori local hau­rem de subs­ti­tuir el fit­xer de les fonts de pro­gra­mari /etc/apt/sources.list per un de nou.

1 Fem una copia de seguretat de les fonts actuals

1
sudo mv /​etc/​apt/​sour­ces.list /​etc/​apt/​sour­ces.list.ori­gi­nal

2 Creem en nou fitxer de fonts

Amb el següent con­tin­gut (subs­ti­tu­ïnt la IP 192.168.0.2 per la del nos­tre repo­si­tori local, és clar.)

1
2
3
4
5
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid-​​updates main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid-​​backports main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/security-ubuntu/ubuntu lucid-​​security main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/archive-canonical/ubuntu lucid partner

3 Rellegim les fonts

1
sudo apt-get update

Actualització del repositori local

Evidentment per tal que els ordi­na­dors es man­tin­guin ben actu­a­lit­zats hau­rem d’actualitzar el repo­si­tori local peri­ò­di­ca­ment (a diari o, a tot esti­rar, set­ma­nal­ment seria el més ade­quat). Això podem fer-​​ho de forma manual exe­cu­tant:

1
sudo su - apt-mir­ror -c apt-mir­ror

o con­fi­gu­rar que es faci peri­ò­di­ca­ment de forma auto­mà­tica grà­cies a cron o ana­cron afe­gint la línia
1
@daily 10 mir­ror nice su - apt-mir­ror -c apt-mir­ror

al fit­xer /​etc/​anacrontab

{lang: «ca»}

03 feb 2010

Llibertat i programari lliure: una aproximació personal

3 Comments Programari lliure

Sóc usu­ari de pro­gra­mari lliure des de fa molts anys. Si no ho recordo mala­ment, el pri­mer GNU/​Linux que vaig instal·lar fou el RedHat 6.0 (que segons he lle­git a la wiki­pe­dia, data de mit­jan 1999) fa 11 anys. També he pro­vat Mandrake (abans que es con­ver­tís en Mandriva), Fedora, Debian, Gentoo, Knoppix, Ubuntu i segu­ra­ment alguna altra dis­tri­bu­ció que m’ha fet grà­cia d’instal·lar. També m’he bara­llat un parell o tres de vega­des en aquests anys amb FreeBSD (sense massa èxit, tot sigui dit) i sem­pre he sigut (i sóc) defen­sor del pro­gra­mari lliure.

Però durant tots aquests anys també he anat fent ser­vir, per uns o altres motius, pro­gra­mari pri­va­tiu. A vega­des amb lli­cèn­cia i a vega­des sense, a vega­des per gust, a vega­des per­què no hi havia més remei. Actualment, per exem­ple, tinc un Sony Vaio W amb lli­cèn­cia de Windows 7 Starter que faig ser­vir prin­ci­pal­ment per la feina on la majo­ria d’aplicacions que hi tinc instal·lades són lliu­res (Firefox, Thunderbird, OpenOffice​.org, 7zip…) i no hi instal·lo GNU/​Linux per dos motius: 1) per poder jut­jar el Windows 7 amb una mica de cri­teri i 2) per no per­dre la garan­tia de la màquina. I tinc també un iMac i7 amb Snow Leopard “legal” però molt pro­gra­mari pri­va­tiu sense lli­cèn­cia. En el cas del mac no hi poso GNU/​Linux també per dos motius: 1) Snow Leopard em sem­bla un S.O. molt pràc­tic i 2) per no per­dre la garan­tia de la màquina.

De manera que em trobo amb dos ordi­na­dors amb un S.O pri­va­tiu quan fa cosa d’uns mesos tenia un únic por­tà­til amb GNU/​linux (pri­mer Debian Sid, des­prés Jaunty i Karmic) instal·lat des de feia més de 2 anys. D’entrada, crida l’atenció que no puc esco­llir el S.O. dels meus ordi­na­dors si no vull perdre’n la garan­tia. Això em sem­bla molt mala­ment i és una cosa con­tra la que, com a con­su­mi­dors, hau­ríem de llui­tar; però malau­ra­da­ment és un mal molt gene­ra­lit­zat. De fet, només conec Ahtec com a marca d’ordinadors que poden comprar-​​se sense S.O. i el meu ante­rior por­tà­til era Ahtec, sobre­tot, per aquest motiu.

Només per això, Stallman diria que he renun­ciat a la meva lli­ber­tat com a usu­ari d’ordinadors. I crec que, en part, tin­dria raó. Tanmateix, tinc la sort de no ésser un usu­ari a qui han enco­lo­mat un Windows 7 i un Snow Leopard, sinó que sóc per­fec­ta­ment cons­ci­ent dels avan­tat­ges i incon­ve­ni­ents del pro­gra­mari lliure i dels ris­cos del pro­gra­mari pri­va­tiu i n’era en el moment d’adquirir els ordinadors.

És a dir, he esco­llit lliu­re­ment que bona part del pro­gra­mari que uti­litzo sigui pri­va­tiu (almenys durant un temps). Stallman diria més aviat que he renun­ciat, amb ple conei­xe­ment i per volun­tat prò­pia, a la meva lli­ber­tat. Des d’aquest punt de vista (i pot molt ben ser l’encertat) el meu cas és molt pit­jor que el d’un usu­ari que renun­ciés a aquesta lli­ber­tat sense ser-​​ne conscient.

Per altra banda, el meu conei­xe­ment sobre el pro­gra­mari lliure ha pro­vo­cat que hi hagi almenys 3 per­so­nes del meu entorn pro­per que esti­guin usant GNU/​Linux en els seus ordi­na­dors. Potser més de 3 si tenim en compte alguns dels alum­nes que he tin­gut en cur­sos de GNU/​Linux.

Tot ple­gat és força con­tra­dic­tori. Una altra con­tra­dic­ció de les mol­tes que car­rego… O pot­ser és que no con­si­dero que en el pla per­so­nal aquesta renun­cia sigui tan gran ni tan greu com la va plan­te­jar Stallman l’altre dia al Lacetània? Aquí em toca­ria par­lar, entre d’altres coses, de la meva posi­ció res­pecte la pri­va­ci­tat i la seguretat.

Això serà en un altre post…

{lang: «ca»}