VPS + apache virtual server + centos 6.5

Voy a explicar como instalar un servidor Apache para varios dominios con servidores virtuales bajo Centos 6.5 en un VPS.

Además, para facilitar las copias de seguridad y la gestión de usuarios y dominios en el servidor, de una forma sencilla, indicaré los pasos a seguir para usar las /home de los usuarios como si de dominios se tratara, sin la necesidad de usar el mod_user de Apache ni Access Control List (ACL), que aunque sería lo más óptimo, es más que probable que no nos haga falta en un servidor que sea manejado por uno o pocos usuarios.

Como lo más seguro será que quieras instalar WordPress, Joomla!, Drupal o cualquier otro CMS, instalaremos MySQL, PHP y phpMyAdmin. Lo que viene siendo un servidor LAMP.

Al lío,

1) Instalamos MySQL:

# yum -y install mysql mysql-server

Lo añadimos al arranque del sistema (–leves 235 son los niveles donde se enlaza el inicio, si es un servidor online, con –levels 23 es suficiente):

# chkconfig --levels 235 mysqld on

Y lo iniciamos:

# service mysqld start

Es muy recomendable poner la contraseña de root en la base de datos (puede ser distinta de la de root del SO), para ello:

# mysql_secure_installation

2) Instalamos Apache:

# yum -y install httpd

Como antes, lo incluimos en el arranque del sistema y lo iniciamos:

# chkconfig --levels 235 httpd on

# service httpd start

3) Instalamos PHP (con soporte para MySQL y los módulos más comunes para los CMS):

Aquí un pequeño paréntesis. A mi no me gusta añadir repositorios fuera de los que vienen, por que confío en que en la distro base está todo lo necesario. Pero a veces los que llevan las distribuciones incluyen lo que está más que testado porque saben que no va a fallar, y hay cosas que se necesitan muchas veces y que no están en estos repositorios.

Por ello, en esta ocasión vamos a incluir el repositorio EPEL ya que algún módulo php que es conveniente tener y phpMyAdmin (no hay nada que temer, es un repositorio que nunca entrará en conflicto con los paquetes base del sistema) .

# wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm

# rpm -Uvh epel-release-6-8.noarch.rpm

Ahora sí, instalamos PHP

# yum -y install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel install php-pecl-apc

Instalamos phpMyAdmin, más que conveniente para gestionar las bases de datos:

# yum -y install phpmyadmin

Y modificamos un par de cosas:

# nano vi /etc/httpd/conf.d/phpmyadmin.conf

comentamos para que se quede asÍ, para poder tener acceso desde el exterior:

.....
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

#<Directory /usr/share/phpMyAdmin/>
#   <IfModule mod_authz_core.c>
#     # Apache 2.4
#     <RequireAny>
#       Require ip 127.0.0.1
#       Require ip ::1
#     </RequireAny>
#   </IfModule>
#   <IfModule !mod_authz_core.c>
#     # Apache 2.2
#     Order Deny,Allow
#     Deny from All
#     Allow from 127.0.0.1
#     Allow from ::1
#   </IfModule>
#</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
.....

Y también cambiamos el acceso de cookie a http:

# nano  /etc/phpMyAdmin/config.inc.php

.....
/* Authentication type */

$cfg['Servers'][$i]['auth_type'] = 'http';

.....

Reiniciamos Apache:

# service httpd restart

4) Damos de alta nuestro dominio en la máquina:

Doy por sentado que ya has redirigido tu dominio a los DNS que te hayan proporcionado en tu alojamiento. Pero además, para que funcione el Servidor Virtual de Apache, tienes que dar de alta tu/tus dominio/s en tu host (simplemente añadimos las líneas, no tocamos nada de lo que haya):

# nano /etc/host
#IP del servidor, nombre de dominio, localhost

100.200.300.001 dominio1.es localhost

100.200.300.001 dominio2.es localhost

Reiniciamos Apache:

# service httpd restart

Si todo ha ido bien, al entrar en tu navegador en http://dominio1.es te debería salir la pantalla por defecto del servidor apache. Y en http://dominio.es/phpmyadmin podrías empezar a gestionar tus bases de datos.

En Centos la carpeta pública, donde se alojan las webs está en /www/var/html/, pero otra alternativa para organizar las webs es la que expongo continuando el post.

5) Los servidores virtuales

Preparamos las rutas donde irán alojadas nuestras páginas en la máquina.

Como indicaba en el inicio del artículo, lo que hago es dar de alta un usuario cuyo nombre es el dominio y en cuya /home se alojarán los archivos:

# useradd midominio

# passwd midominio

Dentro de la home de este usuario-dominio creamos la ruta donde se alojarán los archivos web:

$ mkdir -p /home/midominio/www/midominio.es/public_html

La estructura exacta puede variar según tus necesidades pero yo de momento lo tengo así y me va bien. Lo que hago es que en /www/midominio.es/public_html van los archivos públicos y en el nivel inferior /www/midominio.es/ meto los logs y otros archivos.

Para que todo funcione, Apache necesita acceso lectura/escritura a la ruta donde vaya a estar alojada la web, por lo tanto lo que hacemos es:
1º añadimos el usuario midominio al grupo apache

# usermod -a -G apache midomio

2º añadimos el grupo apache al usuario midominio (para que el propio usuario midominio pueda editar los archivos en su home)

# usermod -a -G midominio apache

Para que Apache llegue hasta el directorio web, hay que darle permisos a toda la /home, no sólo al directorio web. En principio al añadir el usuario midomio al grupo apache es suficiente, pero si tuvieras algún problema puedes probar con:

# chown -R midominio:apache /home/midominio

Quizás os preguntéis para que hago todo este rollo… Se puede dar la situación que necesitáis dar permisos a alguien para editar un dominio concreto y necesite acceso por ssh/vsftp, de esta manera podréis configurar ssh para que sólo tenga acceso a esa /home (jail) y no hay que complicarse en exceso y no ponéis en riesgo el resto de dominios.

Además, a la hora de hacer un backup es bastante sencillo.

Ya sólo falta indicarle a Apache que usaremos servidores virtuales y le indicamos donde están:

1º Nos aseguramos que en /etc/httpd/conf/httpd.conf están estas líneas y están descomentadas (sin # delante), si no fuera así, lo hacemos:

Listen 80  #para escuchar en el puerto 80 que es el web

NameVirtualHost *:80  #Indicamos que usamos servidor virtual

Include conf.d/*.conf  #Con esto Apache leerá los archivos .conf donde daremos de alta los propios servidores virtuales

 2º Damos de alta los servidores virtuales, tantos archivos .conf como dominios tengamos, aquí dejo uno de ejemplo con el que funcionarán prácticamente todos los CMS. Según las necesidades o la seguridad que cada uno considere podréis ir modificándolo, pero para empezar funciona.

# nano //etc/httpd/conf.d/midominio.conf
<VirtualHost *:80>
    ServerAdmin miemail@gmail.com
    DocumentRoot /home/midominio/www/midominio.es/public_html
    ServerName www.midominio.es
    ErrorLog /home/midominio/www/midominio.es/error.log
    CustomLog /home/midominio/www/midominio.es/request.log common
<Directory /home/midominio/www/midominio.es>
   AllowOverride All
   Order allow,deny
   Allow from all
   Require all granted
   Satisfy Any
</Directory>
</VirtualHost>

Reiniciamos Apache:

# service httpd restart

Con esto ya tienes tu servidor LAMP listo para funcionar.

Espero que os sirva, y cualquier comentario de mejora será bienvenido.

Fuentes:

http://www.howtoforge.com/apache_php_mysql_on_centos_6.5_lamp

http://www.unixmen.com/install-epel-repository-rhel-centos-scientific-linux-6/

Votar
[Total: 1 Media 5]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *