Abans de començar, aclarim que aquesta guia no és per la instal·lació d'un servidor web accessible a traves d'Internet. Els aspectes sobre seguretat, rendimient i conectivitat no els tractem aquí. Amb aquesta guia es tracta de posar en marxa en un servidor web Apache 2 en un PC amb sistema operatiu Ubuntu 1x o Debian. Amb la que tindrem un pràctic entorn de treball on provar Drupal, Wordpress, Joomla o altres aplicacions web que utilitzin entre altres llenguatges Php i SQL. per als sistemes operatius Mac OS X, Windows i Solaris tenim el instal·lador XAMPP, que realitza d'una sola vegada la instal·lació d'un servidor web y base de dades. Per a instal·lar un entorn com el dels servidors online... T'ho expliquem a continuació:

Per a començar amb Ubuntu o qualsevol altre distribució Gnu-Linux... Abans de tot, comprovarem que tots els nostres paquets de codi estiguin actualitzats. La instal·lació la podem realitzar amb el terminal de comandes o con el gestor d'actualitzacions. Des del terminal ho farem de la següent manera:

# sudo apt-get update
# sudo apt-get upgrade

Després instal·larem el grup de paquets de codi "Essentials". Un bonic paquet que utilitzant molts altres programaris en el nostre servidor. També instal·larem Curl per poder executar el arxiu cron.php de Drupal o d'altres tasques d'execució programada cada cert temps.

# sudo apt-get install build-essential
# sudo apt-get install curl

Recomanem instal·lar Synaptic, que ja no el trobem en les darreres versions de Ubuntu. Amb el Synaptic podem controlar les dependències entre paquets de codi i escollir les versions que més ens interessen de Php, MySQL o altres llenguatges de programació i aplicacions que vulguem. No recomanem instal·lar el Drupal directament amb el Synaptic, ja que l'instal·la amb un altre servidor web en una localització diferent a la habitual /var/www i amb una configuració que ens pot resultar poc pràctica per portar el manteniment i actualitzacions de tot el programari instal·lat. Per instal·lar el Synaptic:

# sudo apt-get install synaptic

Per abrir-lo des del terminal

# sudo synaptic

D'aquesta manera amb el Synaptic ­realitzarem les cerques dels paquets de codi necessaris i bàsics:

apache2 , apache2-threaded-dev, php5 , php5-dev, php-pear, php5-gd, mysql-server , phpmyadmin y postfix.

També pots escollir una versió de Php superior como la php7. Les més valentes poden seguir directament amb el terminal de comandes. Però utilitzant Synaptic tindrem informació de las dependències entre paquets de codi i descobrir-ne de nous:

libgssapi-krb5-2, libk5crypto3, libkrb5-3, libkrb5support0, apache2, apache2-mpm-prefork, apache2-threaded-dev, apache2-utils, apache2.2-bin, apache2.2-common, autoconf, automake, autotools-dev, comerr-dev, dbconfig-common, krb5-multidev, libapache2-mod-php5, libapr1, libapr1-dev, libaprutil1, libaprutil1-dbd-sqlite3, libaprutil1-dev, libaprutil1-ldap, libdbd-mysql-perl, libdbi-perl, libexpat1-dev, libgssrpc4, libhtml-template-perl, libkadm5clnt-mit8, libkadm5srv-mit8, libkdb5-5, libkrb5-dev, libldap2-dev, libltdl-dev, libmcrypt4, libmysql-java, libmysqlclient-dev, libnet-daemon-perl, libpcre3-dev, libpcrecpp0, libplrpc-perl, libpq-dev, libpq5, libsqlite3-dev, libssl-dev, libssl-doc, libtool, mysql-client-5.1, mysql-client-core-5.1, mysql-server, mysql-server-5.1, mysql-server-core-5.1, php-pear, php5, php5-cgi, php5-cli, php5-common , php5-curl , php5-dbg, php5-dev , php5-gd, php5-mcrypt, php5-mysql, phpmyadmin, postfix, shtool, uuid-dev y zlib1g-dev.

En lloc de mysql, pots instal·lar MariaDB, el seu equivalent en software libre. Una bona pràctica si volem tenir una rèplica d'un servidor online, és instal·lar les mateixes versions i paquets que en el nostre servidor en producció. D'aquesta manera ens assegurarem que el mateix que funciona en local, després funcionarà en el servidor de producció. Estudia bé el que més et convingui.

Després de la instal·lació de tots els paquets de codi, el sistema ens preguntarà quina contrasenya d'usuari root vols per a l'acces a la base de dades. També et preguntarà detalls sobre la configuració del servidor de correu Postfix y amb quin servidor web volem relacionar-lo. En el nostre cas serà amb el Apache2.

URLs netes

Per a que el Drupal pugui treballar amb URLs netes hem d'habilitar el mòdul de PHP anomenat mod_rewrite.

# sudo a2enmod rewrite

Habilitar la barra de progres de tasques

Es la barra que apareix indicant el progrés de tasques amb l'actualizació de la base de dades amb update.php o si utilitzem els mòduls de Drupal FileField i Upload. Molts proveïdors d'allotjament no inclouen aquest detall que no es imprescindible.

# sudo pecl install uploadprogress
# sudo sed -i '/; extension_dir directive above/ a\ extension=uploadprogress.so' /etc/php5/apache2/php.ini

Configurar la zona horaria.

# sudo dpkg-reconfigure tzdata

Habilitar l'ús dels arxius .htaccess

Drupal utilitza arxius de permis d'acces .htaccess. Per dir-li al servidor que els utilitzi hem d'habilitar la propietat AllowOverride.

# sudo sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/sites-available/default

Configuració del nom de servidor (server name)

# sudo gedit /etc/apache2/httpd.conf

Obrim l'aplicació Gedit com a usuari root per escriure en el arxiu:

ServerName localhost

Desa l'arxiu i re-inicia el Apache i la base de dades:

# service apache2 restart
# service mysql restart

Per a gnu-linux Ubuntu

# echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
# sudo ln -s /etc/apache2/conf-available/fqdn.conf /etc/apache2/conf-enabled/fqdn.conf

En el Ubuntu 14 tenim l'arxiu de configuració del Apache a etc/apache2/apache2.conf hauria de tindre el següent:

<Directory /var/www/html>

Options Indexes FollowSymLinks
AllowOverride All
Require all granted

</Directory>

Fins aquí podem dir que ja tenim el servidor web Apache2 llest per a fer-lo servior com a banc de proves para al Drupal i altres programaris web. La carpeta on estarà localitzat el servidor serà /var/www amb accés només per al usuari root. Per comprovar que tot a anat bé, inicia el navegador web i escriu localhost. Aleshores hauria d'aparèixer “It works!”. Si escrius l'adreça localhost/phpmyadmin accedeixes al gestor de la base de datdes MySQL o MariaDB. També podems accedir des d'altres maquines de la xarxa local. Per a fer-ho, escriu en el navegador web l'adreça IP de l'ordinador on esta instal·lat el servidor web; per exemple 192.168.1.101

Per descubrir quina és, utilitza el terminal de comandes:

# ifconfig

Entre altres dades, en la finestra del terminal apareixerà quelcom similar a inet addr:192.168.1.101

Cambiar entre versiones de PHP

Per exemplo si has instal·lat php7.1, pots deshabilitar-lo

sudo a2dismod php7.1

i activar la versió 5.6

sudo a2enmod php5.6

després re-inicia el servidor apache

sudo service apache2 restart

Configuració per augmentar el rendiment del servidor web

Hi ha un parell de mòduls del Apache que podem deshabilitar.

# sudo a2dismod cgi
# sudo a2dismod autoindex

Per a que el Drupal o altres CMS puguin corre amb més agilitat, podem incrementar alguns limits que venen per defecte en el arxiu /etc/php5/php.ini. Segons la instal·lació del Apache2, la ubicació del arxiu php.ini varia. Per augmentar el límit de la memòria assignada, canviarem el valor de la variable memory_limit fins a 128Mb i permet pujar arxius de fins a 128Mb amb la variable post_max_size:

# sudo sed -i 's/memory_limit = .*/memory_limit = 128M/' /etc/php5/apache2/php.ini
# sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 128M/' /etc/php5/apache2/php.ini
# sudo sed -i 's/post_max_size = .*/post_max_size = 128M/' /etc/php5/apache2/php.ini

Instal·lar un acelerador de codi.

# sudo pecl install apc
# sudo sed -i '/; extension_dir directive above/ a\ extension=apc.so' /etc/php5/apache2/php.ini

Habilitar mod_deflate per comprimir els fulls d'estil CSS i codi Javascript. També el mòdul mod_expires per a posar en la memòria cau arxius y continguts estàtics.

# sudo a2enmod expires
# sudo a2enmod deflate
# sudo sed -i 's/DEFLATE text\/html text\/plain text\/xml/DEFLATE text\/html text\/plain text\/xml text\/css text\/javascript application\/x-javascript/' /etc/apache2/mods-available/deflate.conf

També augmentarem la memòria cau assignada a les consultes a la base de dades MySQL en el arxiu /etc/mysql/my.cnf (ubicació variable segons instal·lació).

# sudo sed -i 's/query_cache_limit = 1M/query_cache_limit = 16M\ query_cache_type = 1/' /etc/mysql/my.cnf

Per aplicar els canvis re-iniciarem els diferents serveis.

# service apache2 restart
# service mysql restart