martes, 15 de febrero de 2011

Dominios Virtuales (Virtual Host) en Apache2 en Debian/GNU Linux (p.e. UBUNTU)

Cuando vamos a atender varias dominios desde el mismo servidor web que presentarán diferentes páginas webs necesitamos crear HOST VIRTUALES.

Pongamos por ejemplo que tenemos un servidor web con apache2 instalado y queremos publicar 2 páginas webs diferentes, una para www.primersitio.com y otra para http://www.segundositio.com/.

Hemos de decidir donde vamos a tener alojados los archivos del sitio web que vamos a servir para cada uno de los sitios (dominios). En nuestro caso vamos a alojarlos dentro del directorio /home/www/, y para esto creamos un directorio para cada uno de los sitios.

Creación de los directorios necesarios para las dos páginas

sudo mkdir /home/www
sudo mkdir /home/www/www.primersitio.com

sudo mkdir /home/www/www.segundositio.com

Apache guarda los fichero de configuración de cada SITIO VIRTUAL en el directorio /etc/apache2/sites-available/. Dentro de este directorio hay un archivo de configuración llamado default que pertenece al sitio web por defecto, el genérico y que si lo abrimos y vemos en su interior, veremos que está configurado para /var/www/


Ahora copiamos el fichero de configuarción default para adaptarlo a nuestros sitios de la siguiente manera:


sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/www.primersitio.com
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/www.segundositio.com

Editamos el archivo de configuración de cada sitio para adaptarlo a sus necesidades.

sudo vi /etc/apache2/sites-available/www.primersitio.com


1. Configuramos el ServerAdmin:

ServerAdmin hostmaster@primersitio.com


2. Configuramos el ServerName:


ServerName www.primersitio.com

3. Si queremos que el dominio primersitio.com (sin el www) también acceda a los contenidos configuramos el ServerAlias


ServerAlias primersitio.com

4. Cambiamos todas las repeticiones de /var/www por /home/www/. El archivo quedaría:

<VirtualHost *:80>
        ServerAdmin hostmaster@primersitio.com
        ServerName www.primersitio.com
        ServerAlias primersitio.com


        DocumentRoot /home/www/www.primersitio.com
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/www/www.primersitio.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>


        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>


        ErrorLog ${APACHE_LOG_DIR}/error.log


        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn


        CustomLog ${APACHE_LOG_DIR}/access.log combined


    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>


</VirtualHost>

Para el fichero de configuración www.segundositio.com hacemos lo mismo que lo que hemos hecho para www.primersitio.com

A continuación desabilitamos el sitio default

sudo a2dissite default
sudo a2dissite default-ssl

Ahora tenemos que habilitar en apache nuestros dos nuevos sitios viturales:

sudo a2ensite www.primersitio.com
sudo a2ensite www.segundositio.com

Por último tenemos que recargar los ficheros de configuración de apache de la siguiente manera:

sudo /etc/init.d/apache2 reload

Si queremos creamos los fichero index.html para que tener una página inicial hasta que pongamos los fichero de cada sitio.

sudo vi /home/www/www.primersitio.com/index.html

y pegamos dentro el siguiente contenido:

<html>
<head>
<title>Primer Sitio</title>
<body>
<center>PRIMIER SITIO</center>

</body>
</html>


Hacemos lo mismo para el dominio www.segundositio.com.

Y ya está. Deberíamos poder acceder poniendo los dominios en el navegador a su correspondiente site virtual.

lunes, 14 de febrero de 2011

Permisos de Magento Connect

Para que funcione correctamente Magento Connect debemos darle permiso para que escriba en cualquier parte de la instalación de Magento, esto es, cualquiera de los archivos que están dentro del directorio donde se encuentra instalado. Como esto es una verdadera amenaza en la seguridad, es conveniente que cuando terminemos de trabajar con el Magento Connect devolvamos los permisos a su estado seguro. Para hacer esto en Linux (yo, personalmente en UBUNTU) desde la "consola":

DAR PERMISO PARA ESCRIBIR SOBRE TODOS LOS ARCHIVOS

Nos situamos en el directorio donde tenemos la instalación de Magento, por ejemplo en /var/www/magento:

cd /var/www/magento

Aplicamos el cambio de los permisos:

sudo find . -type d -exec chmod 777 {} \;

QUITAR PERMISO DE ESCRITURA EN LOS FICHEROS

Como hemos comentado, es conveniente dejar los permisos en su posición incial. No situamos en el directorio donde está instalado Magento:

cd /var/www/magento

Aplicamos el cambio de los permisos:

sudo find . -type f -exec chmod 644 {} \;
sudo find . -type d -exec chmod 755 {} \;
sudo chmod o+w var var/.htaccess app/etc
sudo chmod 550 pear
sudo chmod -R o+w media