viernes, 19 de agosto de 2011

Instalar Drupal 7 en CentOS 6 - LAPP (Linux Apache PostgreSQL PHP)

A la hora de montar una web, hoy en día nos apoyamos en los Sistemas de gestión de contenidos (en inglés Content Management System, abreviado CMS), que es un programa que permite crear una estructura de soporte (framework) para la creación y administración de contenidos, principalmente en páginas web.

Entre los distintos CMS libres, uno de los mas completos es Drupal, con licencia GNU/GPL, escrito en PHP, desarrollado y mantenido por una activa comunidad de usuarios.

Drupal es multiplataforma, posee una traducción casi completa al castellano. Soporta:
Servidor web: Apache y Microsoft IIS
Servidor de base de datos: MySQL o equivalente (MariaDB), PostgreSQL, SQLite, Microsoft SQL Server y Oracle son soportados mediante un módulo adicional
Lenguaje de programación: PHP

En este artículo instalaremos Drupal 7 en CentOS 6 desde el repositorio EPEL, el cual debemos configurarlo si ya no lo hicimos anteriormente.


rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
La base de datos que utilizaremos será PostgreSQL. Instalaremos también Apache y PHP y los modulos necesarios.
yum install --enablerepo=epel drupal7 httpd postgresql-server mod_auth_pgsql php php-pgsql mod_perl mod_wsgi mod_ssl
Configurar Apache
Editamos /etc/httpd/conf.d/drupal7.conf
#
# Drupal is an open-source content-management platform.
#

Alias /drupal7 /usr/share/drupal7

<directory drupal7="" share="" usr="">
        Order Deny,Allow
        #Comment the following line and uncomment the next for public use 
        Deny from all
        #Allow from all
        #Uncomment the following line for setup
        #Allow from 127.0.0.1
        AllowOverride All
        #Uncomment the next line if using with SSL/TLS
        #php_flag session.cookie_secure on
</directory>
Debe quedar así:
#
# Drupal is an open-source content-management platform.
#

Alias /drupal7 /usr/share/drupal7

<directory drupal7="" share="" usr="">
        Order Deny,Allow
        #Comment the following line and uncomment the next for public use 
        #Deny from all
        Allow from all
        #Uncomment the following line for setup
        #Allow from 127.0.0.1
        AllowOverride All
        #Uncomment the next line if using with SSL/TLS
        #php_flag session.cookie_secure on
</directory>
Configuramos SELinux para nuestro directorio virtual
chcon -t httpd_sys_content_t /usr/share/drupal7
Para que Drupal se conecte desde Apache a la base de datos y pueda enviar correo desde Apache usando Sendmail
setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_sendmail on
Dependiendo del método que utilicemos para configurar nuestro firewall, debemos permitir el acceso al puerto 80 a nuestro servidor.
iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
Configurar PostgreSQL
Procedemos a crear una base de datos para nuestro sitio.

Si desea crear un usuario especifico para la base de datos (username es el nombre del usuario que queremos crear. Nos pedirá que ingresemos una contraseña para el usuario)
createuser --pwprompt --encrypted --no-createrole --no-createdb username
En mi caso utilizaré el usuario postgres creado automáticamente en la instalación del PostgreSQL y le asignaremos una contraseña si ya no lo hicimos anteriormente
su - postgres
psql -c "ALTER user postgres WITH password 'contraseña'"
Para crear la base de datos (databasename es el nombre que le daremos a nuestra base de datos y username es el nombre del usuario que creamos anteriormente)
createdb --encoding=UTF8 --owner=username databasename
En este mi username es postgres y databasename es informatica (createdb --encoding=UTF8 --owner=postgres informatica)

Editamos el fichero pg_hba.conf y cambiamos el metodo de autentificación de ident a md5.
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5
Configurar Drupal
Como queremos que esté en castellano, descargamos la traducción de Drupal core en el directorio /usr/share/drupal7/profiles/standard/translations/. A fecha de este artículo la última versión es drupal-7.7.es.po
cd /usr/share/drupal7/profiles/standard/translations/
wget http://ftp.drupal.org/files/translations/7.x/drupal/drupal-7.7.es.po
Drupal viene con un archivo de configuración de ejemplo default.settings.php, copiamos este y lo renombremos a settings.php
cp /etc/drupal7/default/default.settings.php /etc/drupal7/default/settings.php
Cambiamos los permisos solo para la instalación
chmod 666 /etc/drupal7/default/settings.php
Nota: No se olvide de cambiar los permisos de nuevo después de ejecutar el script de instalación.

Recomiendan para que no cause problemas durante la instalación poner SELinux en modo permisivo
setenforce 0
Procedemos a ejecutar el script de instalación de Drupal. Desde un navegador introducimos la URL http://midominio/drupal7, donde midominio es el nombre de host o IP del servidor. Por lo general no se instala un entorno de escritorio en los servidores, en caso de si, http://localhost/drupal7.

Seleccionamos la opción Standard
Seleccionamos nuestro idioma
Si todo va bien, elegimos la base de datos que creamos anteriormente
Instalación del perfil
Traducción de la interfaz
Configuración del sitio
En Información del sitio introducimos el nombre de nuestro host y un correo para el sitio. en Cuenta de mantenimiento del sitio introducimos un usuario que será el administrador del sitio, correo y contraseña. En configuración del Servidor elegimos pais y zona horaria.
Instalación completa
Aplicar SELinux devuelta
setenforce 1
Restaurar los permisos
chmod 644 /etc/drupal7/default/settings.php
Ya tenemos instalado y en funcionamiento nuestro Drupal, ahora resta instalar los modulos que necesitemos y modificar el sitio a nuestro gusto.

HOLA