Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Mostrando entradas con la etiqueta apache web server. Mostrar todas las entradas
Mostrando entradas con la etiqueta apache web server. Mostrar todas las entradas

Manejando hosts virtuales con Apache Web Server

DriveMeca configurando hosts virtuales con Apache Web Server
Tienes un único servidor pero quieres publicar varias paginas web con diferentes dominios? Bienvenido a los servidores virtuales, si, también podemos virtualizarlos contando solo con una ip y un Apache Web Server.
Esta es una forma rápida y económica de optimizar recursos al poder tener varias paginas en un mismo servidor Linux. Todas las paginas estarán en sus propios directorios, manejaran sus propios archivos y logs. Para este articulo crearemos 2 sitios, sitio-virtual-1.com y aw.com. Que esperamos, comencemos.

Requerimientos

-Instalamos Apache

yum install httpd

-Creamos los directorios, uno para cada sitio web

mkdir /var/www/html/ps
mkdir /var/www/html/aw

-Nos creamos los archivos html para cada sitio web en su respectivo directorio. En este caso para sitio-virtual-1.com

vi /var/www/html/ps/index.html<html>
<head>
<title>www.sitio-virtual-1.com</title> </head> <body> 
<h1>Este es el sitio virtual 1 en apache</h1> </body> 
</html>

-Creamos el de aw.com

vi /var/www/html/aw/index.html<html> <head> 
<title>www.sitio-aw.com</title> </head> <body> 
</body> <h1>Este es el sitio aw en apache</h1> 
</html>

-Damos permisos a apache
chown -R apache:apache /var/www/html

-Modificamos el httpd.conf para crear los hosts virtuales. Cada bloque tiene su propia configuración de un sitio web

vi /etc/httpd/conf/httpd.conf
..
..
..
<VirtualHost *:80>
ServerAdmin webmaster@sitio-virtual-1.com 
DocumentRoot /var/www/html/ps 
ServerAlias sitio-virtual-1.com 
ServerName www.sitio-virtual-1.com 
ErrorLog /var/log/httpd/sitio-virtual-1-error.log
</VirtualHost>


<VirtualHost *:80>
ServerAdmin webmaster@aw.com
DocumentRoot /var/www/html/aw
ServerName www.aw.com
ServerAlias aw.com
ErrorLog /var/log/httpd/aw-error.log
</VirtualHost>

-Reiniciamos apache
systemctl restart httpd.service

Muy bien, ya tenemos un servidor web multi dominio, en la medida que necesitemos mas paginas, solo necesitamos agregar otro bloque VirtualHost.
Manejas hosts virtuales web?, lo haces con apache?, ya conocías la forma?
Si te resulto útil este articulo, se social, haz un tweet, compártelo con otros por medio de los botones o sígueme en twitter google+facebook o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark

Como restringir el acceso en Apache Web Server

Apache http server logo
No todo tiene que ser publico en este mundo interconectado por medio de la red de redes, Internet. En algún momento puedes necesitar tener un sitio o parte de el privado, solo para tus ojos y algunos colaboradores. Usas Apache, bien, la solución que te mostrare es con el como servidor web.
Esto lo podrías hacer de dos formas; con un archivo .htaccess en el directorio al que quieres restringir el acceso lo cual no es recomendado por motivos de perfomance de Apache y la segunda opción, que es la que les mostrare, es con un bloque Directory.
El ejemplo mostrado se hizo en un servidor Linux Centos 6.5 con Apache, en otras distribuciones debe funcionar igual

Requerimientos

  • Tener permisos para editar el conf de apache
  • Poder reiniciar Apache despues del cambio


-Editamos el httpd.conf y nos creamos un bloque Directory con el path exacto del directorio que queremos restringir. Salimos guardando
vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/homero-hobby">
    Order allow,deny
    Allow from 192.168.1.0/24
    Allow from 127
    AddHandler cgi-script cgi exe pl
</Directory>

Explicación de lineas:

  1. Order allow,deny primero dará permisos a las ips en las sentencias Allow from y después denegara todos los accesos que no hayan sido listados en Allow from
  2. Allow from listara una por linea las ips permitidas a leer el directorio, como ven podemos tambien usar rangos con el uso de /mascara de red
  3. AddHandler lista los scripts/binarios permitidos en el directorio
  4. El bloque abre con un <Directory "path"> y cierra con un </Directory> por ende nuestra configuración es dentro de estas dos lineas

-Reiniciamos apache
service httpd restart

-Si alguien no permitido intenta visitar el sitio restringido vera el siguiente error. Sin importar si navegan por http o por https, el directorio/sitio no sera mostrado
DriveMeca restringiendo directorios web con Apache

Te suena util esta forma de restringir contenido? Lo haces de otra forma, como?
Si te resulto útil este articulo, se social, haz un tweet, compártelo con otros por medio de los botones o sígueme en twitter google+ o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark

Como instalar y configurar Mailman con postfix MTA

Mailman es un servidor de listas muy util que nos sirve para tener nuestra propia lista de discusion por email o tener informado a un grupo sobre noticias, lanzamientos, etc. Bien usado (no para el envio de spam o correo no deseado) puede ser una gran herramienta.
Hoy les mostrare como instalarlo y configurarlo en un server Linux Centos 6 con Postfix como MTA. Toda la instalacion y configuracion la haremos desde root.

-Instalamos dependencias
yum install gcc python-devel python

-Descargamos mailman, aunque ya hay algunas versiones 3.x estan aun no estan en modo stable y no tienen casi documentacion asi que no las recomiendo para un servidor de produccion.
cd /tmp
wget -c http://launchpad.net/mailman/2.1/2.1.14/+download/mailman-2.1.14-1.tgz
tar -xzvf mailman-2.1.14-1.tgz
mkdir /usr/local/mailman

-Creamos un usuario y grupo para mailman con permisos limitados
cd mailman-2.1.14-1
groupadd mailman
useradd -c 'GNU Mailman' -s /sbin/nologin -M -g mailman mailman

-Damos permisos para el grupo mailman
chmod a+rx,g+ws /usr/local/mailman/
chown -R mailman.mailman /usr/local/mailman

-Compilamos
./configure
make install

cd /usr/local/mailman

-Verificamos los permisos ejecutando el siguiente comando hasta que ya no devuelva errores.
bin/check_perms -f

-Configuramos apache
chkconfig httpd on
cd /etc/httpd/conf

-Agregamos al conf de apache y salimos guardando
vi httpd.conf

group nobody
ScriptAlias /mailman/ "/usr/local/mailman/cgi-bin/"
Alias   /pipermail/     "/usr/local/mailman/archives/public/"
<Directory "/usr/local/mailman/archives/public/">
    AddDefaultCharset Off
</Directory>

-Reiniciamos apache
service httpd restart

cd /usr/local/mailman
cp icons/*.{jpg,png} /var/www/icons/

vi Mailman/mm_cfg.py
IMAGE_LOGOS = '/icons/'
MTA = 'Postfix'

-Agregar a postfix y salimos guardando
vi /etc/postfix/main.cf
#luser_relay
recipient_delimiter = +
alias_maps = hash:/etc/aliases, hash:/usr/local/mailman/data/aliases

-Generamos aliases
bin/genaliases

-Cambios en permisos
chown mailman:mailman data/aliases*
chmod g+w data/aliases*

-Generamos la primera lista, obligatorio para el funcionamiento de mailman
bin/newlist mailman

-Configuramos tareas en cron
cd cron

-Editamos el crontab.in y agregamos el campo MAILTO en la primera linea y salimos guardando.
vi crontab.in

MAILTO=user@example.com


-Ejecutamos
crontab -u mailman crontab.in
cd ..

-Ejecutamos mailman
bin/mailmanctl start

-Configuramos para inicio automatico cada vez que haga boot el server
cp scripts/mailman /etc/init.d/mailman
chkconfig mailman on

-Creamos el password del sitio en general y el de creador de listas. El del sitio tiene permisos para todas las listas, el de creador de listas seria para dar permisos para una lista a otro usuario sin que tenga permisos para las demas

-Password del sitio
bin/mmsitepass

-Password para una lista
bin/mmsitepass -c password-a-colocar

-Entramos con un browser a la pagina del server con mailman y llenamos los campos para crear nuestra segunda lista, esta ya de uso nuestro.
http://mm.test.com/mailman/create

Listo, ya podemos configurar a nuestro gusto las listas, que pueden ser moderadas o no moderadas, de solo envio, etc.
Disfrutenlo

Share/Bookmark

Como habilitar apache server para sitios moviles

Hoy en dia es muy comun que naveguemos desde nuestros telefonos  smartphone's, ipad, ipod, tablet, etc. igual que en nuestro PC. Por eso muchos sitios virtuales estan haciendo una version 'mobil' para adaptar el sitio a estas pantallas, por lo general mas pequeñas y hacer la navegacion mas eficiente sin que el usuario se cance y cierre la pagina.
Esta vez veremos como configurar un web server apache para que dependiendo el dispositivo del usuario muestre nuestro sitio web normal o una versión ligera.
Usaremos un server Linux Centos 6 con web server apache instalado y actualizado a la fecha. Todo los cambios los haremos desde la cuenta root.

Tenemos 2 versiones del web site:
1- www.test.com o test.com (sitio normal)
DocumentRoot: /var/www/html/test

2- m.test.com                        (sitio móvil)
DocumentRoot: /var/www/html/mtest

-Verificamos los rpm http instalados, en caso de no tenerlos, los instalamos con yum

rpm -qa|grep http*
httpd-tools-2.2.15-5.el6.centos.i686
httpd-2.2.15-5.el6.centos.i686

-Verificamos tengamos habilitado el modulo rewrite

cd /etc/httpd/conf
grep rewrite_module *
httpd.conf:LoadModule rewrite_module modules/mod_rewrite.so

-Habilitamos el uso de vhost y creamos 2, uno para el sitio normal y otro para el móvil

cd /etc/httpd/conf
vi httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
    ServerName www.test.com
    DocumentRoot /var/www/html/test
</VirtualHost>
<VirtualHost *:80>
    ServerName test.com
    DocumentRoot /var/www/html/test
</VirtualHost>
<VirtualHost *:80>
    ServerName m.test.com
    DocumentRoot /var/www/html/mtest
</VirtualHost>

Salimos guardando
-Creamos los dos escenarios. Comenzamos con el conf del sitio normal www.test.com

vi /etc/httpd/conf.d/test.conf
<Directory /var/www/html/test/>
   AllowOverride All 
</Directory>
<IfModule mod_rewrite.c>
  RewriteEngine On 
  RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC] 
  RewriteRule ^$ http://m.test.com/ [L,R=302] 
</IfModule>

Salimos guardando

-Hacemos el conf del sitio móvil negando la condición anterior del sitio normal

vi /etc/httpd/conf.d/mtest.conf
<Directory /var/www/html/mtest/>
   AllowOverride All 
</Directory>

<IfModule mod_rewrite.c>
  RewriteEngine On 
  RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC] 
  RewriteRule ^$ http://www.test.com/ [L,R=302] 
</IfModule>

Salimos guardando
-Reiniciamos el servicio apache
service httpd restart
 
En este URL tenemos la version de este articulo con un servidor Debian/Ubuntu. Espero les sea útil.
 

Share/Bookmark