El teu blog de Linux en català

Ara que estic treballant amb una migració de dades, m’he trobat amb el mateix tipus de problema que sempre em trobe a l’hora de treballar amb bases de dades i PHP: la codificació dels caràcters. Moltes BD antigues (i no tan antigues) treballen amb latin1, mentre que a mi m’interessa treballar en utf8.

Doncs bé, es poden fer conversions molt senzilles de dades amb l’ordre següent:

UPDATE table SET column=CONVERT(CONVERT(column USING binary) USING utf8) WHERE id=123;

Això servix per a columnes de taules específiques. De fet, això converteix directament les dades al format utf8. Com que converteix el resultat a ‘binary’, la conversió és més senzilla.

Una ordre molt útil per tindre sempre a mà. Vist a percona.com.

 

Fa un temps vam crear un tutorial per configurar un servidor Apache, MySQL, PHP i phpmyadmin a l’Ubuntu. El pas de l’Ubuntu a Fedora em va portar inicialment alguns maldecaps a l’hora de muntar el meu servidor local. SELinux actua de moltes maneres que provoquen errors 403 Forbidden Access que em va costar molt resoldre. A continuació explique els passos que s’han de seguir, senzills i ràpids, per muntar un servidor Apache+PHP+MySQL i amb phpMyAdmin a Fedora (15). (més…)

Quan vam fer la migració des de les diferents webs (SomGNU, Epkis, Alliberats, etc.) per unificar la base de dades en una de sola (ara GNULinux.cat), vam trobar-nos amb la necessitat de cercar i reemplaçar les cadenes referents a URLs que apuntaven als llocs concrets per fer que foren totes «http://gnulinux.cat/».

Una possibilitat per fer això haguera estat importar la base de dades a un fitxer sql i allà fer el cerca i reemplaça amb qualsevol editor de text. Però alguns cops això és una feina pesada. Així que vaig estar cercant si era possible fer un «cerca i reemplaça» directament amb alguna ordre de MySQL. Vaig trobar exactament allò que cercava.

Per tant, si voleu fer una cerca i reemplaçament, només cal que executeu l’ordre següent:

UPDATE [nom_taula] SET [nom_camp] = REPLACE([nom_camp],'[cadena_original]','[reemplaçament]');

Cal dir que al lloc de «nom_taula» i «nom_camp» es pot posar un «*» per tal de cercar a totes les taules i camps.

Des que a l’abril del 2009 Oracle va adquirir Sun, encara no s’havia pronunciat sobre els nombrosos projectes de programari lliure o de codi obert que va heretar. Estem parlant de projectes tan importants com OpenOffice.org, mysql, VirtualBox i OpenSolaris, entre altres.

Logo d'Oracle

En el darrer any i mig, l’únic que hem sabut sobre aquests projectes, apart de rumors, és que alguns d’ells anaven avançant en el seu desenvolupament, i altres semblaven més aturats. Però no hi havia cap notícia oficial. En els dos projectes que romanien més aturats, la comunitat va reaccionar, i van aparèixer alguns forks de mysql, i la comunitat d’OpenSolaris també va crear el seu propi fork, Illumos, i va invitar a Oracle a participar-hi.

Però aquesta situació ha canviat de manera dràstica aquesta setmana. D’una banda, a Oracle Magazine s’ha publicat una entrevista a Edward Screven, Cap Corporatiu Arquitecte d’Oracle, on parla àmpliament (encara que esquivant alguns temes) sobre la relació d’Oracle amb el programari lliure i de codi obert.

Edward Screven va resumir la relació d’Oracle amb el programari lliure i de codi obert amb la frase següent:

«Oracle no té realment una estratègia específica per al Codi Obert. El que tenim és una estratègia global d’empresa: entregar solucions completes, obertes i integrades, als nostres clients.»

A més, va destacar les contribucions que Oracle té en el nucli de Linux, com ara el sistema de fitxers Btrfs, i altres relacionats amb els servidors. En concret, va dir el següent sobre Linux:

«Linux continua sent una plataforma de desenvolupament de referència per a Oracle. Segueix sent una plataforma estratègica per a nosaltres en l’arquitectura x86. Tenim avui més enginyers de Linux que mai, i en seguirem contractant més. Linux és absolutament una part central de la nostra estratègia oberta completa i integrada.»

Respecte dels programes implicats, va dir el següent:

  • OpenOffice.org. Des d’Oracle, aquest producte està considerat com una unitat interna separada d’Oracle, amb un equip de desenvolupament i de vendes propi.
  • mysql. Oracle té tres objectius clars: millorar el producte en rendiment i qualitat millorar el suport que s’ofereix per a mysql, i integrar-lo més amb la resta de productes d’Oracle.

Del que no va parlar, és d’OpenSolaris. «Curiosament», fa un parell de dies Oracle ha enviat un missatge a la llista de correus d’OpenSolaris indicant que s’abandona aquest projecte, i que es reemplaçarà per Solaris 11 Express, amb llicència RTU (Right-to-use) per a desenvolupadors. O sigui, que la comunitat OpenSolaris ha vist confirmades les seves pors, que la van encaminar a crear el fork d’OpenSolaris Illumos.

Logo d'Illumos

Quan vam saber que Sun Microsystems, l’empresa que hi ha darrere de l’OpenOffice.org i MySQL, anava a ser comprada per Oracle, molts de nosaltres ens vam mostrar una mica preocupats respecte a quin seria el futur d’aquests dos grans projectes que representen pilars bàsics per a la difusió del programari lliure.

Sembla, però, que segons les declaracions que va fer el president d’Oracle, Charles Phillips, es continuarà donant suport a molts dels projectes lliures que Sun portava: Linux, Apache, GlassFish i MySQL entre ells. Per altra part, Edvard Screven, un altre gran mandatari a dins d’Oracle, va afirmar que el desenvolupament, màrqueting i suport per a MySQL continuarà. MySQL passarà a formar una divisió independent a dins d’Oracle amb un suport subjacent major. També formarà part de l’Oracle stack per tal de ser integrat a l’Enterprise Manager.

http://www.oracleimg.com/admin/images/ocom/hp/oralogo_small.gif

Quant a l’OpenOffice, es vol que passe a ser una unitat de negoci global independent amb desenvolupament, suport i màrqueting assegurat. L’edició comunitària continuarà sense canvis. Fins i tot, Screven va comentar la possibilitat de la creació d’una Oracle Cloud Office, una suite basada en la web combinada amb l’escriptori per a usuaris Web i amb mòbil. L’èxit de l’OpenOffice.org depèn del client comercial, va declarar.

Després de tot, sembla que Oracle té intenció de continuar donant suport a aquests projectes. En un o dos anys podrem comprovar si realment tot això és cert.

Existeixen moltes formes de configurar un servidor Apache, MySQL i PHP al nostre ordinador. Fins ara, jo havia fet servir Xampp, una eina molt útil i fàcil d’instal·lar i fer servir. Ara bé, també és cert que no hi ha molta documentació (tot i que realment el Xampp no és més que un lampp, conegut per molts i per tant no ha d’haver-ne molta documentació perquè no és necessari).

Hui explicaré una altra manera, i ho faig més a mode d’enrecordar-me jo per a un futur de com fer-ho que per altra cosa (per això mateix ho explique només per a Ubuntu…). Si algú ho veu interessant o vol apuntar alguna cosa, no dubteu a fer-ho.

Paquets que cal instal·lar

Bàsicament executant la següent ordre serà suficient:
sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server phpmyadmin
Durant la instal·lació, a la configuració del mysql us demanarà que introduïu una contrasenya. No ho deixeu buit, perquè si no, el phpmyadmin no us deixarà entrar després (per defecte no permet entrar sense contrasenya). Una vegada instal·lat, cada vegada que inicieu el sistema tot allò necessari del servidor s’arrencarà per defecte.

Activació del phpmyadmin

A l’hora de configurar llocs web a local, caldrà modificar dos fitxers: /etc/apache2/sites-available/default [1] i /etc/hosts [2]. Per configurar el phpmyadmin, haurem d’editar el fitxer [1] i afegir les següents línies:
<VirtualHost *:80>
DocumentRoot /usr/share/phpmyadmin
ServerName phpmyadmin.local
</VirtualHost>

Seguidament haurem d’editar el fitxer [2] i al costat de localhost, just al costat d’on us posa el nom de la màquina (en el meu cas “karmic”), haureu d’afegir la referència  a local del phpmyadmin. En aquest cas, phpmyadmin.local. Així quedarà:
127.0.0.1    localhost
127.0.1.1    karmic phpmyadmin.local

Finalment caldrà fer un reload o reiniciar l’apache amb l’ordre:
sudo /etc/init.d/apache reload (o restart)
Activació de llocs web a local

Jo, per exemple, he creat la carpeta “webs” a dins de la meua carpeta d’usuari. Allà he ficat una altra carpeta amb nom “somgnu”, que serà el lloc web que tindré a local. Per tant, la ruta serà /home/pau/webs/somgnu. Amb això, editem el fitxer [1] i afegim la línia següent:
<VirtualHost *:80>
DocumentRoot /home/pau/webs/somgnu
ServerName somgnu.local
</VirtualHost>

Ara haurem de fer el mateix que hem fet amb el phpmyadmin. Editem el fitxer [2] i al costat de phpmyadmin.local afegim somgnu.local, cosa que vol dir que des del navegador, si introduïm http://somgnu.local accedirem a la pàgina web en local. A l’igual que abans, caldrà reiniciar o fer un reload a l’apache per a que tot funcione.

Aquesta guia pot fer-se més i més gran, per ara així m’està bé. Si coneixeu guies més esteses o alguna cosa millor en català (no serà difícil trobar-ne), apunteu-ho als comentaris i en faré referència ací.

Altra forma d’habilitar VirtualHosts i mod_rewrite

Si volem poder fer servir mod_rewrite (fitxers .htaccess), caldrà activar aquesta opció amb l’ordre següent:
sudo a2enmod rewrite

Per altra part, he estat tenint problemes a l’hora d’activar els virtualhost. Llavors, l’alternativa ha estat crear un fitxer diferent per cada virtualhost que volem crear. Simplement, si tenim un domini.local que volem activar, crearem el fitxer:
sudo gedit /etc/apache2/sites-available/domini.local.conf

I dins hi posarem les dades:
<VirtualHost *:80>
DocumentRoot /ruta_a_les_dades/
ServerName domini.local
</VirtualHost>

I finalment activar aquest lloc amb a2ensite:
sudo a2ensite domini.local.conf

Possibles errors

Un dels errors més comuns que es presenta és el de:
Forbidden
You don't have permission to access / on this server.

El primer que heu de fer és mirar el registre a /var/log/apache/error.log. Potser que veieu un missatge com el següent:
(13)Permission denied: /home/pau/webs/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

El que heu de tindre en compte seria que la carpeta «webs» tinga permisos oberts:
chmod 777 /home/pau/webs

A diferència d’altres setmanes, aquesta setmana sí que hem tingut algunes notícies interessants que no hem publicat:

Per acabar, un apunt sobre l’anunci que el president del Govern de l’Estat Espanyol va fer al darrer debat de l’Estat de la nació. Zapatero va prometre donar ordinadors a tots els xiquets de cinc anys a tot l’Estat. Moltes veus van alçar-se en contra d’aquesta mesura ja que aquests ordinadors vindrien amb Windows exclusivament.

Finalment s’han fet canvis en la proposta i SÍ INCLOURAN PROGRAMARI LLIURE. Fins i tot Richard Stallman va criticar durament la decissió inicial de Zapatero per vendre el futur d’Espanya a Microsoft. Leire Pajín anuncià despús-ahir que aquests ordinadors inclourien “codi obert” (tal qual) i cada autonomia podrà triar quin sistema operatiu s’instal·larà als portàtils.

Hola! Aquí un petit tutorial per instal·lar un sevidor web a casa vostra.

Primer de tot instal·larem el servidor LAMP (Linux Apache Mysql Php)

Per fer-ho hi han dues maneres, una per comandes que ve detallada a continuació, i l’altra la forma gràfica. Us aconsello la forma gràfica ja que no hi pot haver cap error. Per fer-ho heu d’obrir al menú del Sistema->Administració->Gestor de paquets Synaptic, un cop allí aneu al menu: Edita->Marca els paquets per tasques i sel·leccioneu l’opció “LAMP server”. I ja està!

En el cas que haguessiu volgut instal·lar el servidor des de la terminal de comandes, nonés cal afegir aquesta línia:

sudo apt-get install apache2 php5 php5-gd php5-mysql mysql-server mysql-client mysql-common libapache2-mod-php5 libapache2-mod-auth-mysql phpmyadmin mysql-admin

Ara feu un fitxer html que hi digui per exemple “hola” amb el nom: index.html o index.php i el col·loqueu a la carpeta /var/www, podeu crear el fitxer de prova amb la següent comanda:

echo -e "<html><head></head><body>hola <? echo "et funciona l'apache i el php"; ?></body></html>" | sudo tee /var/www/index.php

Per comprobar que està instal·lat:

http://localhost

En el cas que us dongui un error, podeu crear un document html com a índex en lloc d’un document php i així podeu veure si us funciona l’apache.

nota: a mi m’ha donat un problema i és que no em reconeixa els fitxers php com a tals, i ho he arreglat amb la següent comanda

echo -e "n# Include php modulenLoadModule php5_module /usr/lib/apache2/modules/libphp5.so" | sudo tee -a /etc/apache2/apache2.conf

Tambè hem dona un problema amb el phpmyadmin que si l’heu instal·lat ho arreglo amb:

echo -e "# Include phpmyadminnInclude /etc/phpmyadmin/apache.conf" | sudo tee -a /etc/apache2/apache2.conf

Font

Ara només falta reiniciar i provar si us carrega bé el php.