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

Una setmana més amb moltes novetats, destacant la versió alfa de Chakra 0.7, que inclou la primera beta de KDE 4.6 (es publicarà al gener) i la primera alfa de l’Ubuntu 11.04, que ja inclou Unity com a interfície per defecte. I a més…

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

La navegació web és pot fer a través de molts navegadors, però tots tenen el desaventatge que és el navegador qui interpreta el codi i el javascript, amb el que si el teu navegador s’equivoca, que passa? Doncs que veiem malmament la pàgina web.

Navegant el web amb el telnet

Navegant el web amb el telnet

Per evitar aquest molest problema podem usar com a navegador el programa telnet, que a més a més te l’avantage que es troba inclòs a totes les distribucions gnu/linux. Amb el telnet tenim rapidesa, i a més a més veiem com és la pàgina web de debó, sense les variables interpretacions que fan els diferents navegadors que es troben al mercat. Això fa que nosaltres vegem la pàgina diferent de com l’autor, amb el seu bell codi, pretenia que és veiés.

Ara anem a veure com ens ho fem per navegar amb aquest navegador “minimalista”

Primer de tot necessitem obrir una terminal, i hi escriurem el nom de la pàgina que volem veure. Per a proposits didaces escollirem una pàgina web molt senzilla,  guillemgilabert.com. Si volem veure la pàgina web, especificarem el port en que el servidor la serveix. Normalment sol ser el port 80. Així esciurem en la terminal

telnet guillemgilabert.com 80

Ara ens hem d’esperar a que és produeixi la triple encaixada de mans (informació en castellà), i s’estableixi la conexió. Llavors esciurem les següents ordres, seguit de dos retorns de carro. Això voldrà dir apretar dos cops la tecla intro. Cal notar que s’especifica el host ja que el servidor on es troba hostatjada aquesta web serveix més d’un domini alhora.

GET / HTTP/1.1
Host: guillemgilabert.com

Tambè podem demanar un fitxer concret

GET /index.php HTTP/1.1
Host: guillemgilabert.com

Com podeu veure el resultat és molt bonic i clar. Val la pena usar telnet com a navegador!

Tambè és possible veure només les capçaleres

HEAD /index.php HTTP/1.1
Host: guillemgilabert.com

Navegant amb el netcat!

Navegant amb el netcat!

El mateix procediment és aplicable usant el netcat en lloc d’usar telnet

nc guillemgilabert.com 80

Ja per acabar, i per la gent que sigui bromista i li agradi fer conya, es pot usar un petit script tal per enganyar les pàgines web que visitem sobre el navegador o el sistema operatiu que fem serivr. Així, executeu la comanda

nano engany

Hi afegiu les següents ordres, canviant si ens ve de gust la informació User-Agent per la parida que ens vingui més de gust. Per exemple podriem canviar

echo "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7"

Per

echo "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) ViscaAlliberats/5.0"

#! /bin/bash
#
#bash engany alliberats.org 80 alliberats.org /| telnet
#
echo "open $1 $2"
sleep 3
echo "GET $4 HTTP/1.0"
echo "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7"
echo "Host: $3"
echo
echo
sleep 3

Ho guardeu amb clt+o i sortiu amb ctl+x

Ara escrivim

bash engany alliberats.org 80 alliberats.org /| telnet

I amb tot aquest procés, a l’apache li constarà que en lloc de navegar usant el firefox 3.0.7 estarem navegant usant el navegador “fictici” ViscaAlliberats 5.0. Així quan algun administrador web visiti les estadístiques del lloc web que administra es quedarà flipant amb la tonteria que haureu escrit. Ja veieu que la útilitat és sorpenent!

Està clar doncs, si ets d’aquells que t’agrada veure les coses tal com són, segur que a partir d’ara només utilitzaràs el telnet per navegar. I no ets l’únic que pensa així! Sembla ser que fins i tot hi ha una campanya a internet anomenada “Best Viewed with telnet” per aconseguir que la gent usi el telnet com el seu navegador web per defecte. Personalment ara mateix m’hi adhereixo. Només us deixo amb una pregunta i és serà capaç el telnet d’interpretar la javascipt?

Font

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.