El teu blog de Linux en català

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…)

A la feina avui m’he trobat amb una petició que mai havia hagut de resoldre abans. És una petició senzilla, però no tenia del tot clar com fer-la. El nostre client ens ha demanat que, a l’hora d’enviar un butlletí als seus subscriptors, poder fer el recompte de quants d’ells havien obert el correu.

El mètode següent només funciona quan el lector de correu pot llegir HTML (gairebé tots actualment) i en cas que es carreguen les imatges. En aquest cas, només és necessari afegir al cos del missatge, al principi o al final, el següent codi: (més…)

Amb l’actualització de servidors a la feina ha eixit a la llum una cosa de la qual no ens havíem adonat fins ara: a molts fitxers de les nostres webs es fa servir la funció split(), que ara es considera obsoleta i toca canviar-la. Concretament, la fèiem servir de la forma:

$title="Això és un titol";
$title1 = split("-", $title);

Existeixen diferents funcions que la reemplacen: preg_split(), str_split() o bé explode() són les més adients per a aquest cas. Nosaltres ho hem solucionat amb preg_split(), que segueix una sintaxi molt semblant, però cal afegir les barres invertides al patró de la següent manera:

$title="Això és un titol";
$title1 = preg_split("/-/", $title);

Amb explode la cosa seria igual que amb l’split, i més ràpid que el preg_split, però no pot amb expressions regulars:

$title="Això és un titol";
$title1 = explode("-", $title);

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