Configuració Apache-PHP-PostgreSQL

  • warning: tempnam(): open_basedir restriction in effect. File() is not within the allowed path(s): (/srv/www/gilug.org/www/site.tree/) in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 802.
  • warning: fopen(): Filename cannot be empty in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 803.
  • El fitxer no s'ha pogut crear.

Aquest article pretén mostrar la facilitat amb la qual es pot posar en funcionament aplicacions web que funcionin amb apache i, el cada vegada més famós, PHP.





Introducció




En els últims anys s'ha constatat la necessitat de crear sistemes informàtics que siguin facilment utilitzables i, alhora, distribuits, és a dir: que utilitzin la xarxa com a element de suport.


En aquest ambit, els servidors web, o millor dit, les aplicacions web, juguen un paper molt improtant ja que permeten la creació d'aplicacions que es comuniquin amb bases de dades corporatives i que puguin ésser usades amb un simple navegador d'internet.


Una de les característiques d'aquest article, és la utilització explusiva de programari de lliure distribució (lògic al ser un grup d'usuaris de linux) que s'integren perfectament amb els sistemes operatius UNIX i que cada vegada són més populars.


Per instal·lar els elements del sistema es partirà del codi font del programa i s'instal·larà dins de l'espai d'un usuari no privilegiat del sistema. Aquesta metodologia és la més genèrica i lamés segura ja que en tot moment sabem les opcions amb les quals es compilen els components del sistema.



PostgreSQL



PostgreSQL és una base de dades de lliure distribució (llicència BSD) amb la qual es poden realitzar la pràctica totalitat d'operacions que ofereixen les principals bases de dades comercials.




Les seves característiques són:

  • Implementació de l'estàndard SQL
  • Llenguatge propi pgplsql amb el qual es poden crear funcions i triggers.
  • Suport de la comunitat d'usuaris i programadors.
  • Dissenyada per grans càrregues. El disseny MVCC permet que molts usuaris utilitzin la base de dades alhora amb les mínimes interferències.



En el moment d'escriure aquest article, s'està desenvolupant la fase final de PostgreSQL-7.4. Les seves principals característiques són la millora de l'eficiència de les subconsultes (IN i NOT IN), les funcions agregades. Una característica molt apreciada als entorns web serà la incorporació de transaccions de només lectura.




No obstant, les principals millores seran a la versió 7.5 amb el port als sistemes operatius windows. D'aquesta manera es podrà augmentar significativament la base d'usuaris. També destacarà el PITR (Point In Time Recobery), fer fotos en un determinat moment de la base de dades per tal que posteriorment es pugui recuperar el mateix estat i fer còpies de seguretat incrementals. La versió 7.5 també ha d'ésser l'inici de la replicació, permetre distribuir la càrrega d'una base de dades entre diferents ordinadors.



Pel que fa al tema de la replicació, cal destacar que la companyia PostgreSQL ha alliberar amb llicència lliure el codi font de l'aplicació rServer.




Tot seguit es procedeix a descriure els passos necessàris per posar en funcionament la base de dades PostgreSQL. Primer de tot cal obtenir el codi font de la versió estable (actualment 7.3.3) de l'FTP principal: ftp://ftp.postgresql.org.



Descomprimim i compilem les fonts:



  tar xvfz postgresql-7.3.3.tar.gz

  cd /home/user/postgresql-7.3.3

  ./configure --prefix=/home/user/pgsql

  make

  make install




El procés d'instal·lació haurà creat un directori pgsql per ubicar els binaris i llibreries de la base de dades. Dins d'aquest directori cal especificar-ne dos de nous: un per ubicar els elements (taules, index's ...) i l'altre pels logs.



  cd /home/user/pgsql

  mkdir data

  mkdir logs

  touch logs/server.log




Per comoditat, és aconsellable actualitzar la variable d'entorn PATH per tal que l'interpret de comandes pugui trobar els nous binaris creats. En el fitxer ~/bash_rc cal afegir:




  PATH=$PATH:/home/user/pgsql/bin/




La següent variable d'entorn especifica el directori on s'ubicaran els elements (taules, index's...) de la base de dades:




  PG_DATA=/home/user/pgsql/data
  export PG_DATA




Cal inicialitzar la base de dades només una vegada:




  initdb




Una vegada inicialitzada, cal procedir a iniciar/arrancar el motor de la base de dades:



  postmaster -i >> /home/user/pgsql/logs/server.log 2>&1



El paràmetre -i indica que accepti conneccions a través de sockets, condició indispensable per tal que funcioni amb el llenguatge PHP.




PHP - Apache




Apache és el servidor web per excel·lència. Les estadístiques
de NetCraft mostren que pràcticament dos terceres parts dels servidors web mundials funcionen amb Apache.


Apache es pot considerar com un dels primers puntals del programari lliure (juntament amb LINUX i Perl) que sempre ha tingut una molt bona reputació a tots els àmbits.




La generació de contingut dinàmic és possible gràcies a la utilització de PHP. Aquest llenguatge de programació s'integra a la perfecció amb Apache i permet la comunicació amb bases de dades i amb moltes funcionalitats de forma facil, ràpida i segura. En aquests moments, PHP es pot considerar l'estàndard de facto per crear aplicacions web de tamany petit i mitja. El salt a entorn corporatius es va realitzant més a poc a poc, per exemple, Yahoo va decidir usar PHP a les seves ampliacions del portal.




Per instal·lar els components cal seguir un ordre una mica especial. Primer de tot cal executar el pas de configuració d'apache per tal que PHP sàpiga les característiques del servidor web amb el qual s'haurà d'integrar i funcionar. Una vegada s'ha compilat i instal·lat PHP ja es pot realitzar la instal·lació completa d'Apache.


Configuració d'Apache:




  tar xvfz apache_1.3.28.tar.gz
  cd /home/user/apache_1.3.28
  ./configure --prefix=/home/user/apache




Instal·lació de PHP:




  tar xvfz php-4.3.3.tar.gz

  cd /home/user/php-4.3.3

  ./configure --prefix=/home/user/php

      --with-apache=../apache1.3.28

      --enable-track-vars

      --without-mysql

      --with-pgsql=/home/user/pgsql

      --with-config-file=/home/user/php

  make

  make install





Es pot veure que a la configuració de PHP s'especifica la ubicació d'Apache i de la base de dades PostgreSQL. En el cas de desitjar utilitzar MySQL, s'hauria de treure la opció que en fa referència.


Noti's que s'ha especificat la ubicació del fitxer de configuració de PHP. Inicialment, aquest fitxer es troba al directori del codi font de PHP amb el nomd e php.ini-recommended. Cal copiar-lo al directori ~/php/ i redenominar-lo a php.ini.




El seguent pas és la instal·lació d'Apache, el servidor web:




  cd /home/user/apache_1.3.28

  ./configure --prefix=/home/user/apache --activate-module=src/modules/php4/libphp4.a

  make

  make install





Al finalitzar la compilació, apareixerà un directori anomentat apache que contindrà tots els elements relacionats amb el servidor web.

Cal tenir en compte que qui ha instal·lat el servidor web és un usuari no privilegiat i no pot fer que el servidor escolti al port 80 (el port per defecte). Per aquest motiu apache servirà les peticions a través del port 8080.




Al igual que s'ha fet anteriorment, es aconsellat actualitzar la variable PATH per tal que apunti als nous binaris d'Apache:




  PATH=$PATH:/home/user/apache/bin/




El fitxer de configuració d'Apache és ~/apache/conf/httpd.conf. en aquest cal posar-li la segünet directiva per tal que els fitxers amb extenció .php siguin interpretats pel motor PHP:




  AddType application/x-httpd-php .php




Per defecte, Apache serveix els documents que es troben al directori ~/apache/htdocs/.


La comanda per iniciar el servidor web apache és la següent:



  apachectl start




Per provar el correcte funcionament del sistema, es pot crear un fitxer info.php amb el següent contingut:
  <?php phpinfo() ?>




Al fer la petició a localhost:8080/info.php hauria de sortir una pàgina informàtiva amb les característiques de PHP.


En un seguent article, comentaré les diferents opcions de configuració dels tres elements per tal que el funcionament del sistema web s'adapti millor a les necessitats de qualsevol aplicació web.

"Seguretat"

Bé, a vegades per "seguretat" va bé amagar una mica d'informacio,
per exemple la versió dels mòduls que tenim instal·lats (per si tenen algun bug...) o si més no per no donar tantes pistes per on atacar...

La informació es pot treure molt fàcilment connectant-se desde telnet.

Per canviar-ho podem anar al fitxer httpd.conf i modificar o afegir la línea:

ServerTokens opcio
on opcio es:
ServerTokens Prod => Server sends: Server: Apache
ServerTokens Min => Server sends: Server: Apache/1.3.0
ServerTokens OS => Server sends: Server: Apache/1.3.0 (Unix)
ServerTokens Full => Server sends: Server: Apache/1.3.0 (Unix) PHP/3.0 MyMod/1.2

**per defecte sense posar res ve el ServerTokens Full**

podeu trobar més informació aqui

Seguretat

Molt interessant aquestes opcions que comentes.

Per saber les característiques del servidor només cal fer:

wget -S www.kernel.org

Mira la sortida ...