Categorías
GNU/Linux

Cómo crear una red social propia con HumHub

Hace un tiempo escuché a un político bocazas al que habían censurado en una red social decir algo como: “¡Pues si me echan de su red social me construiré yo una propia!”. A dicho personaje el dinero le sobra, por lo que construirse una red social propia para él no tendría más problema que tirar de talonario. ¿Y nosotros, simples y no muy adinerados mortales? ¿Podríamos construirnos una red social con nuestros escasos medios? Investigué un poco y la respuesta es sí, podemos hacerlo gracias a una serie de tecnologías y servicios gratuitos a nuestra disposición, como son HumHub, No-IP y por supuesto GNU/Linux. El material y los programas necesarios, así como el proceso de creación de dicha red social sería el siguiente.

ATENCIÓN – DISCLAIMER : Este procedimiento implica que vas a tener conectado un equipo a internet con el riesgo que eso conlleva. Es responsabilidad de cada persona que mantenga su servidor actualizado y protegido contra accesos no deseados o utilizaciones del servidor ajenas a la voluntad de sus propietarios. Si no sabes cómo mantener seguro tu servidor, no sigas estas instrucciones, no solo te pones tú en peligro, también pones en peligro a quienes serán atacados usando tu servidor.

Componentes de nuestra red social

  1. Hardware.
    • Servidor. Nuestra red social necesita un servidor en el que alojarse, que puede ser propio o alquilado. La versión de alquiler es más robusta y nos simplifica problemas, pero hay que pagarlo todos los meses. Un servidor físico propio solo tenemos que pagarlo una vez, pero tenerlo encendido continuamente y conectado a internet nos supondrá un coste. Tendremos que ponderar qué nos resultará mejor a la larga. En el caso de optar por un servidor propio cualquier ordenador antiguo nos puede valer, pero si podemos gastar algo de dinero en un miniordenador a la larga la factura eléctrica será menor y el dinero gastado inicialmente se amortizará con el uso. En mi caso he optado por un Slimbook Zero, pero cualquier aparato en el que podamos instalar una distribución GNU/Linux nos valdría.
    • Equipo de red. Si hemos optado por alquilar un servidor no necesitaremos más, pero si vamos a conectar nuestro servidor a internet tendremos que tener una conexión de fibra a internet y un router.
  2. Software.
    • Como sistema operativo puedes usar la distribución GNU/Linux que más te guste. Esta guía la voy a realizar en Debian 10, pero sería muy similar en cualquier otra distribución. Recomiendo que sea una distribución orientada a servidores más que a escritorio.
    • Entorno LAMP (Linux – Apache – MySQL – PHP)
    • Framework HumHub.

Instalación

Una vez tengamos preparados e instalados todos los componentes básicos, procedemos a la instalación de la red social propiamente dicha, siguiendo la guía que el propio HumHub tiene publicada. Esta guía es muy completa y está muy bien explicada, podemos seguirla prácticamente en el mismo orden y de la misma manera, pero incluyo aquí algunas consideraciones que si no tenemos en cuenta nos pueden dar lugar a error.

1 – En primer lugar comprobamos que nuestro sistema cumple todos los requerimientos de HumHub.

2 – En segundo lugar tenemos que configurar el servidor de datos, creando una base de datos específica para nuestra red siguiendo lo indicado en la citada guía en su aparado Base de datos.

3 – Instalamos todos los módulos de PHP que vamos a necesitar y configuramos el php.ini con las necesidades del framework, tal y como aparece en el apartado PHP de la guía de HumHub.

4 – A continuación, si no tenemos alquilado un servidor en internet que normalmente llevará incluido su propio dominio para acceder a él, tendremos que obtener una url que nos permita acceder a nuestra red, a nuestro servidor local desde internet. Para conseguirlo podemos usar el servicio No-IP, el cual nos permite configurar un dominio DDNS que podemos dirigir a nuestro router y desde allí a nuestro servidor. El servicio gratuito incluye hasta tres host:

En su página web podemos descargarnos un programa cliente que nos actualiza nuestra dirección IP cada cierto tiempo.

5 – Tenemos que configurar en nuestro router dos cosas: a) que nuestro servidor tenga una IP fija local (del estilo 192.168.0.10) haciendo que el router le adjudique siempre la misma IP a su tarjeta de red; y b) redirigir los puertos 80 y 443 a esa IP desde el exterior. Esto se realiza de forma diferente en cada router, por lo que tendremos que ver en su documentación cómo hacerlo.

6 – Una vez hayamos configurado router y servicio No-IP comprobaremos que podemos acceder a nuestra dirección tecleando en el navegador nuestro dominio y verificando que la página que se nos muestra es la página inicial de nuestro servidor Apache.

7 – Ahora ya podemos configurar nuestro servidor Apache siguiendo las instrucciones de la guía de HumHub para configurar el servidor. En este paso hay que tener en cuenta que para poder ejecutar la petición de un certificado con certbot necesitamos previamente parar el servidor Apache con la instruccion “sudo systemctl stop apache2”, algo que no viene en la guía y que nos puede atascar en este paso si no lo tenemos en cuenta. Una vez que la instalación de un cerificado standalone termina correctamente, entonces ya podemos volver a arrancar el servidor con el comando “sudo systemctl start apache2”. Si queremos saber más cosas de certbot y para qué sirve, podemos consultar la página web de Certbot y la de Let’s Encrypt.

8 – Instalar HumHub. Este es ya el último paso, y aparece especificado en la guía de HumHub en la página de instalación del framework. Su puesta en marcha es muy similar a otros framework como Drupal o WordPress, está basado en Yii y cuenta con varios módulos que pueden cubrir nuestras necesidades en nuestra nueva y propia red social.

En caso de querer aumentar sus funcionalidades habría que aprender PHP, estudiar cómo está construido el framework Yii y construir nosotros nuestros propios módulos. Por aprender y construir cosas que no quede, y si además luego las publicamos como software libre para que todos puedan beneficiarse de ellas, mejor.

Finalmente y si todo ha ido bien ya tendremos construida nuestra red social propia, pero lo que hace interesante a una red social es el número de personas que la usan y las interacciones posibles entre ellas, y en mi caso como no conseguí animar a nadie a usarla, todo esto solo me sirvió para aprender y consolidar mis conocimientos de cómo funciona internet. En caso de que queramos seguir investigando, la mayoría del procedimiento sirve también para tener por ejemplo nuestro propio blog en el sercidor de casa si instalamos WordPress, o nuestra propia nube si en vez de instalar HumHub instalamos OwnCloud, por ejemplo. Ya sabéis lo que se dice de La Nube y que lo podemos decir también de todos los servicios de internet:

Categorías
GNU/Linux

Migrar una web con Drupal 8 a un virtual host local de apache

Migrar una instalación ya funcionando de Drupal 8 desde la web a un servidor local en nuestro equipo es ligeramente más complicado que con otras versiones de Drupal, la forma de hacerlo que a mí me ha funcionado es la siguiente:

Partimos de un equipo en el que tenemos instalado linux Mint 18.1, pero estas instrucciones podrían valer también para cualquier distribución linux, cambiando convenientemente las rutas de los ficheros.

Instalamos el servidor web:

sudo apt-get install apache2

Para comprobar que funciona, accedemos con un navegador a la dirección http://localhost  y deberíamos ver la página raíz del servidor apache

Instalamos PHP, que en esta versión de Linux Mint (18.1) es el PHP 7.0, y algunos módulos de php que nos serán necesarios:

sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-cli php7.0-cgi php7.0-gd php7.0-curl php7.0-gd php7.0-intl php7.0-imap php7.0-mcrypt php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php-pear php-imagick php-apcu

Comprobamos que PHP funciona creando como root el fichero /var/www/html/info.php con una única línea que ponga

<?php phpinfo(); ?>

Reiniciamos el servidor web

sudo service apache2 restart

Accedemos a la dirección http://localhost/info.php y deberíamos de ver la página de información de PHP

Habilitamos el  módulo rewrite

sudo a2enmod rewrite

Instalamos MySQL

sudo apt-get install mysql-client mysql-server

Aseguramos la instalación de MySQL con el script

sudo mysql_secure_installation

Instalamos y configuramos SSL, para ello creamos una carpeta

sudo mkdir /etc/apache2/ssl

Nos situamos en ella y y ejecutamos el comando de creación de un certificado autofirmado (en este comando y en las instrucciones siguientes habrá que cambiar “misitio” por el nombre de nuestra web)

cd /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/misitiossl.key -out /etc/apache2/ssl/misitiossl.crt

Se nos hará una serie de preguntas, acerca de nuestra identidad etc. Cuando termine el comando, cambiamos los permisos de los ficheros creados en el directorio

sudo chmod 600 *

Ahora configuramos el host virtual en Apache, para ello creamos el directorio al que copiaremos los ficheros de nuestra web, y luego creamos el fichero de configuración del host virtual

sudo mkdir -p /var/www/misitio
sudo vim /etc/apache2/sites-available/misitio.conf

En este fichero tenemos que tener el siguiente contenido:

<VirtualHost *:80>
 ServerName www.misitio.local
 DocumentRoot /var/www/misitio

RedirectMatch 301 (.*) https://www.misitio.local$1
</VirtualHost>

<VirtualHost _default_:443>

ServerName www.misitio.local
 ServerAlias misitio.local
 ServerAdmin webmaster@localhost

DocumentRoot /var/www/misitio

ErrorLog ${APACHE_LOG_DIR}/misitio-error.log
 CustomLog ${APACHE_LOG_DIR}/misitio-access.log combined

SSLEngine on
 
 SSLCertificateFile /etc/apache2/ssl/misitiossl.crt
 SSLCertificateKeyFile /etc/apache2/ssl/misitiossl.key

<Directory "/var/www/misitio">
 Options FollowSymLinks
 AllowOverride All
 Require all granted
 </Directory>

<FilesMatch "\.(cgi|shtml|phtml|php)$">
 SSLOptions +StdEnvVars
 </FilesMatch>

<Directory /usr/lib/cgi-bin>
 SSLOptions +StdEnvVars
 </Directory>

BrowserMatch "MSIE [2-6]" \
 nokeepalive ssl-unclean-shutdown \
 downgrade-1.0 force-response-1.0
 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>

Modificamos el fichero /etc/hosts añadiendo una línea en la que apuntamos a nuestro host virtual. Para ello incluimos en este fichero una línea al principio que ponga:

127.0.0.1      www.misitio.local

Copiamos los ficheros de la web que queremos migrar a la carpeta /var/www/misitio, creamos en nuestro MySQL local una base de datos ideńtica a la que tenemos en la base de datos de la web, y creamos el usuario con el que se accede a ella desde el sitio web. Para ello podemos usar adminer, phpmyadmin, etc. Si en vez de migrar una web estamos creando una web desde cero, pues entonces usamos el método habitual de instalación de una web Drupal, usando la dirección de nuestro host virtual como inicio del proceso.

Solamente si estamos haciendo una migración, una vez que tenemos los ficheros transferidos y la base de datos configurada, accedemos al fichero:

sudo vim /var/www/misitio/sites/default/settings.php

y modificamos la parte correspondiente a los host de confianza, incluyendo la dirección de nuestro host virtual. Buscamos trusted_host_patterns y el fichero debería de quedar tal que así:

$settings['trusted_host_patterns'] = array(
 '^www\.misitio\.com$', 
 '^www\.misitio\.local$'
);

Y ya debería funcionar todo, accediendo a la página https://www.misitio.local deberíamos de ver la página principal de nuestra nueva web en local. La primera vez que accedamos a ella nos saltará una advertencia de seguridad en el navegador porque estamos usando un certificado autofirmado, por lo que deberemos de añadir una excepción de seguridad para poder acceder las siguientes veces sin que salte este aviso.

Este post está basado en gran parte en lo que se explica en: https://kreationnext.com/support/how-to-install-drupal-8-with-apache-mysql-and-ssl-on-ubuntu-15-10/

Categorías
Ubuntu

PhpMyAdmin muestra una página en blanco en Ubuntu/Kubuntu 16.04

Después de instalar Kubuntu 16.04, y supongo que lo mismo pasará después de instalar Ubuntu 16.04, una vez puesto el entorno LAMP en funcionamiento según la guía de Linode ,  y después de instalar el paquete phpmyadmin desde los repositorios oficiales, me encuentro con que al acceder a la página http://localhost/phpmyadmin solo se muestra una página en blanco.

Mirando por ahí veo que le pasa a más gente, como era de esperar, y se debe a que faltan por instalar algunos paquetes. La solución es instalarlos con el comando:

sudo apt-get install libapache2-mod-php php-mbstring php7.0-mbstring php-gettext

Una vez hecho esto, he desinstalado phpmyadmin y lo he vuelto a instalar, a lo mejor no hacía falta, pero después de esta segunda instalación y con los paquetes anteriores ya instalados, la página localhost de phpyadmin ha vuelto a funcionar.

Categorías
Windows

Activar xdebug en XAMPP

Después de instalar XAMPP en Windows, para poder hacer debug de una aplicación en PHP con Netbeans hay que hacer unos pequeños cambios en el php.ini que viene por defecto. A partir de este momento consideraremos <xampp_home> el directorio donde hayamos instalado XAMPP, por ejemplo “c:\xampp”

Abrimos el fichero <xampp_home>\php\php.ini

Al final del mismo encontraremos la parte que se refiere a Xdebug. Tendremos que descomentar, es decir, quitar el “;” (las líneas que comienzan con un “;” son consideradas comentarios) de las líneas siguientes:

zend_extension = “C:\xampp\php\ext\php_xdebug.dll”

xdebug.remote_enable = 1
xdebug.remote_handler = “dbgp”
xdebug.remote_host = “127.0.0.1”

Ojo: también tendremos que poner el remote_enable a “1”, que por defecto viene a “0”. De forma que esas líneas del fichero nos quedan así:

xdebug_php_ini

Reiniciamos el servidor Apache y ya podemos hacer debug de programas PHP en Netbeans

(Tomado de la entrada: http://www.wikihow.com/Configure-XDebug-in-XAMPP-%281.7.2/Later%29-on-Windows )

Categorías
Windows

Error #2006 – MySQL server has gone away importando archivo en PhpMyAdmin

Utilizando un entorno WAMP (Windows 10, Apache, MySQL, PHP), cuando intento importar un archivo con el volcado de una base de datos en MySQL utilizando PhpMyAdmin me encuentro con que la carga se detiene y se genera el error “#2006 – MySQL server has gone away”.
El archivo es bastante grande, y aunque he puesto los límites de memoria y de tamaño de archivo suficientemente altos en el archivo php.ini, está claro que también es necesario modificar la configuración de mysql para poder hacer la carga. El truco está en modificar la línea
max_allowed_packet = 1M
en el archivo <directorio de WAMP>/mysql/bin/my.ini dejándola como
max_allowed_packet = 10M

Curiosamente, este error nunca me había dado cuando he trabajado en Linux, debe de ser que la configuración por defecto de mySQL en Linux ya viene preparada para cualquier eventualidad 🙂

Lo he visto en Stack OVerflow (como casi todas las soluciones)

Categorías
Fedora

Instalar LAMP en Fedora 22

Para instalar el entorno de desarrollo LAMP en Fedora 22 tenemos que realizar los siguiente pasos en una terminal:

  1. Instalar (como root) el servidor web con el comando: dnf groupinstall “Web Server”
  2. Instalar la base de datos: dnf install mariadb-server
  3. Modificar el fichero /etc/php.ini para adaptarlo a nuestras necesidades
  4. Arrancar el servidor web con: service httpd start
  5. Arrancar la base de datos con: service mariadb start
  6. Asegurar la base de datos con el comando: mysql_secure_installation
  7. Instalar phpmyadmin (si lo vas a usar, claro): dnf install phpmyadmin
  8. Habilitar el directorio de usuario de Apache:
    1. Editamos el fichero /etc/httpd/conf.d/userdir.conf para que quede así (sustituyendo usuario por nuestro nombre de usuario)etc_httpd_conf.d_userdir.conf
    2. Creamos el directorio ~/public_html con: mkdir ~/public_html
    3. Le damos los permisos necesarios con: chmod 755 ~/public_html
    4. Le damos los permisos necesarios a /home con: chmod 711 /home/usuario
    5. Configuramos SELinux para permitir los directorios de usuario con:
      setsebool P httpd_enable_homedirs true
    6. Reiniciamos el servidor con: service httpd start

Y ya está. Tenéis más información en este artículo y este otro, que son los que he consultado para hacer esta entrada.

Categorías
Archlinux Chakra GNU/Linux

Instalar LAMP en Chakra Linux

Voy a separar la instalación en varias partes: instalar el servidor de páginas web con PHP, el mySQL, el phpMyAdmin y por último la habilitación de un directorio de usuario para desarrollo de nuestras páginas web. Aunque esta instalación la he realizado en Chakra Linux 2015.03 Euler, los pasos creo que también funcionarán para cualquier distribución basada en Arch Linux.

Instalación del servidor de páginas web

Para ello utilizamos el siguiente comando, que nos instala los paquetes principales y otros que nos vendrán bien:

sudo pacman -S apache php php-apache php-gd php-mcrypt php-pear xdebug

El xdebug solo lo uso para depurar las aplicaciones en NetBeans, luego si no se usa ese entorno de trabajo no es necesario instalarlo. Arrancamos el servicio con el comando:

sudo systemctl start httpd.service

Para comprobar que funciona el servidor de páginas web podemos acceder con el navegador a la página http://localhost y ver que nos aparece el famoso “It works!”

Para incluir el PHP, editamos el fichero de configuración de Apache (yo uso el editor vim, pero eso es cuestión de gusto y penitencia personal):

sudo vim /etc/httpd/conf/httpd.conf

Y justo después de la línea

LoadModule dir_module modules/mod_dir.so

Incluimos la línea

LoadModule php5_module modules/libphp5.so

Y después del último “Include” en ese mismo fichero, añadimos las líneas:

# PHP
Include conf/extra/php5_module.conf

Para comprobar que funciona el PHP creamos un fichero info.php en el directorio donde tendremos nuestras páginas web (en este caso es el directorio /srv/http)

sudo vim /srv/http/info.php

En ese fichero incluimos el contenido siguiente:

<?php phpinfo(); ?>

Y accedemos a la página http://localhost/info.php para comprobar que funciona. Se nos mostrará la página de información de PHP con los datos de nuestra instalación.

Instalación de mySQL

Por defecto en Chakra Linux nos viene ya instalado el MariaDB, un clon de mySQL. Podemos comprobarlo con el comando:

sudo pacman -Ss mysql

Si no nos aparece como instalado, lo instalamos con el mismo comando anterior pero sustituyendo el “-Ss” por “-S”.

A continuación editamos el fichero php.ini

sudo vim /etc/php/php.ini

Y en él descomentamos (quitamos el “;” inicial) de las líneas

extension=mysql.so
extension=mysqli.so
extension=pdo_mysql.so
extension=gd.so
extension=mcrypt.so

Arrancamos el servicio con el comando

sudo systemctl start mysqld.service

Y para asegurar la instalación de nuestro mySQL lo hacemos con el comando

sudo mysql_secure_installation

Con el cual podemos incluir una clave para el usuario root y dar mayor seguridad a nuestra instalación aceptando la opción por defecto que se nos muestra.

Instalación de phpMyAdmin

Para instalar este programa normalmente se hace mediante el paquete de cada distribución, si existe, pero en este caso lo haremos utilizando la fuente original. Para ello accedemos a la página http://phpmyadmin.net y nos descargamos el fichero zip con la última versión pulsando en el botón que pone Download.

El fichero que nos hemos descargado lo extraemos en el directorio /srv/http con el comando:

sudo unzip /<sitio_donde_lo_hemos_descargado>/phpMyAdmin-4.4.9-all-languages.zip -d /srv/http

Y como no nos gusta el nombre del directorio creado, lo cambiamos por otro más corto con el comando

sudo mv /srv/http/phpMyAdmin-4.4.9-all-languages /srv/http/phpMyAdmin

Para comprobar que funciona accedemos a la página http://localhost/phpMyAdmin, en la que podremos entrar con el usuario root y la clave que le dimos anteriormente.

Habilitar un directorio de usuario

Para ello tenemos que modificar el archivo /etc/http/conf/httpd.conf descomentando la línea

LoadModule userdir_module modules/mod_userdir.so

Tenemos también que verificar que en dicho archivo aparece también la línea que incluye nuestro archivo de configuración, que es

Include conf/extra/httpd-userdir.conf

Entramos en el archivo /etc/http/conf/extra/httpd-userdir.conf y comprobamos que incluye las siguientes líneas

<Directory "/home/*/public_html">
      AllowOverride FileInfo AuthConfig Limit Indexes
      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      Require method GET POST OPTIONS
</Directory>

A continuación creamos el directorio donde vamos a alojar nuestras páginas web y le damos permiso de lectura a él y a nuestro directorio de usuario (si no, nos aparecerá el famoso error 403 de Apache)

mkdir ~/public_html
chmod a+x ~
chmod a+x ~/public_html

Copiamos el fichero info.php que creamos en /srv/http al directorio ~/public_html y accedemos a él en la dirección

http://localhost/~nuestro_usuario/info.php

Y ya está, ya tenemos nuestro entorno LAMP en Chakra Linux. Si queremos que cada vez que arranque el sistema tengamos el servidor web y el mySQL disponibles, lanzamos los comandos:

sudo systemctl enable httpd.service
sudo systemctl enable mysqld.service

Un último detalle: si vamos a usar el depurador de PHP de NetBeans, tenemos que entrar en el fichero /etc/php/conf.d/xdebug.ini y comprobar que tiene las líneas

zend_extension=/usr/lib/php/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

 

Categorías
GNU/Linux Ubuntu

Error “.htaccess: Options not allowed here” en Apache2

Este error me ha aparecido en el log de Apache cuando he intentado acceder a una réplica en mi directorio de usuario de una página hecha en Drupal. Para solucionarlo he tenido que editar el archivo “/etc/apache2/sites-available/000-default.conf” añadiendo las lineas

<Directory /home/mi_usuario/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Y reiniciar el servicio con “sudo service apache2 restart”

Categorías
Drupal OpenSUSE

Habilitar url limpias de Drupal en OpenSUSE

Si partimos de una instalación limpia de un servidor LAMP en OpenSUSE, por defecto no tendremos el módulo rewrite de Apache activado, por lo que las url limpias de Drupal no nos van a funcionar. Para activarlas, hay que hacer lo siguiente:
1) Editar el fichero /etc/sysconfig/apache2
En la linea con APACHE_MODULES="actions… etc añadimos al final “rewrite” de forma que nos queda más o menos así:
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php5 reqtimeout rewrite"

2) Editamos el archivo /etc/apache2/httpd.conf e incluimos las directivas que nos permiten activar el módulo rewrite en el directorio en que tenemos Drupal, por ejemplo:
<Directory /srv/www/htdocs/drupal7>
AllowOverride All
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
</Directory></code>

3) Reiniciamos el servidor web con systemctl restart apache2.service y volvemos a probar en Drupal si ya tenemos disponibles las url limpias.

Categorías
CentOS GNU/Linux

Configurar Selinux para un VirtualHost de Apache en Centos 6

Para que al utilizar un host virtual en Apache (por ejemplo localdev) cuyas páginas se encuentren en un directorio dentro de la carpeta del usuario (por ejemplo en public_html) no tengamos problemas de seguridad con Selinux, tenemos que realizar lo siguiente:

1) Instalar paquetes necesarios

Una instalación por defecto de Centos 6 a partir del CD Live configura Selinux en modo enforcing pero no instala algunos paquetes que vienen bien. En una consola como root hacemos:
#yum install policycoreutils-python setroubleshoot

2) Activar Selinux (en caso de que no lo tengamos ya activado)

Editar (como root) el fichero /etc/selinux/config dejándolo así:

SELINUX=enforcing
SELINUXTYPE=targeted

Tenemos que tener en cuenta que si no lo teníamos activado y modificamos este fichero para activarlo, es necesario reiniciar el equipo, porque hace falta que se haga de nuevo un “relabel” del sistema de ficheros.

3) Crear el host virtual en Apache

Modificar el fichero /etc/httpd/conf/httpd.conf descomentando la línea:
NameVirtualHost *:80 y añadiendo al final de dicho fichero:

DocumentRoot ~user/public_html
Servername localdev

4) Modificar el /etc/hosts

Modificamos la línea del host local incluyendo el nuevo host virtual (en este caso localdev) dejándola más o menos así:
127.0.0.1 localhost localhost.localdomain localdev

5) Configurar el contexto de Selinux y los permisos de la carpeta

Tenemos que lanzar como root los siguientes comandos en una consola.
Para cambiar el contexto Selinux de la carpeta del host virtual al necesario para que lo utilice el servidor web:
#chcon -R -v -u system_u -r object_r -t httpd_sys_content_t ~user/public_html

Para permitir al servidor web que lea el contenido de la carpeta home de los usuarios:
#setsebool -P httpd_enable_homedirs 1

Para que la configuración de Selinux se mantenga después de un “relabel” del sistema de ficheros:
# semanage fcontext -a -t httpd_sys_content_t "~user/public_html

Para que no haya problemas de permisos de acceso a las páginas web:
#chmod -R 755 ~user/public_html

(Los dos primeros comandos pienso que habría también que utilizarlos si en vez de crear un host virtual lo que se hace es utilizar el módulo userdir de Apache.)

6) Reiniciamos Apache y probamos nuestra página de inicio.

http://localdev/index.html

(Esta entrada es una versión resumida de este post, en el que se explica todo con más detalle)