Mostrando las entradas con la etiqueta Apache. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Apache. Mostrar todas las entradas

martes, 3 de junio de 2014

Directorios virtuales para Apache en Ubuntu

Cuando instalamos apache, la carpeta por defecto donde alojamos nuestras aplicaciones se encuentra en /var/www, pero en la práctica es mejor tener un directorio donde montar nuestras aplicaciones, a continuación describiremos los pasos a seguir.

1. Creamos la carpeta donde alojaremos nuestras aplicaciones, aquí por ejemplo creamos una carpeta llamada appweb dentro de nuestro home de usuario.

$ sudo mkdir /home/miusuario/appweb

2. Definimos y configuramos nuestro directorio virtual, para ello creamos un archivo con un nombre que haga referencia a nuestro directorio dentro de /etc/apache2/sites-available.

$ cd /etc/apache2/sites-available
$ sudo nano appweb.conf

Dentro de este archivo agregamos las siguientes lineas

# domain appweb
# public /home/miusuario/appweb

<VirtualHost *:80>
# definimos como accederemos al directorio
ServerName appweb
ServerAlias appweb

DirectoryIndex index.php index.html
# definimos el directorio donde estaran las aplicaciones
Documentroot /home/miusuario/appweb

# definimos nuestro log de acceso y de errores
ErrorLog /home/miusuario/appweb/log/error_log.log
CustomLog /home/miusuario/appweb/log/access_log.log combined

# definimos los permisos en nuestro directorio
<Directory /home/miusuario/appweb/>
    Options All
    Require all granted
</Directory>
</VirtualHost>

Terminado de agregar las líneas, guardamos nuestro archivo.

Nota: La configuración de los permisos es para Apache 2.4, para versiones anteriores debe cambiar dentro del Directory a las siguientes lineas:

<Directory /home/miusuario/appweb/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

3. Creamos los archivos del log dentro de nuestro directorio ya que no existen.

$ sudo touch /home/miusuario/appweb/log/error_log.log
$ sudo touch /home/miusuario/appweb/log/access.log

4. Ahora activamos el directorio

$ sudo a2ensite appweb

5. Después tenemos que configurar el archivo hosts en /etc

$ sudo nano /etc/hosts

en el archivo agregamos nuestro sitio:

127.0.0.1    localhost
127.0.0.1    appweb

# The following lines are desirable for IPv6 capable hosts

6. Ahora reiniciamos o cargamos nuevamente la configuración de nuestro servidor apache

$ sudo service apache2 restart
   ó
$ sudo service apache2 reload

7. Por ultimo creamos un index.php agregandole la función phpinfo() en nuestro directorio virtual /home/miusuario/appweb, lo guardamos y probamos desde nuestro navegador

http://appweb

y nos debería listar la configuración de nuestro PHP.

Nota: si la carpeta donde guardaras tus aplicaciones se encuentra en /media y no se monta al inicio cuando arrancas tu servidor, podría generarte un error de permisos, por lo cual recomiendo que se monte esta unidad al arrancar el sistema, como se describe en el siguiente post: Montar particiones al inicio en linux


miércoles, 21 de mayo de 2014

Agregar headers de expiración (Add Expires headers)

Los encabezados (headers) de expiración nos sirven para indicar cuando expira un determinado tipo de archivo, esto hace que no sea necesaria una nueva carga del mismo si es que aun no ha expirado. Esto es muy útil para archivos del tipo imagen, vídeo, javascript y hojas de estilo entre otros, ya que nos reduce las solicitudes HTTP lo que nos lleva a la carga de nuestra página en un menor tiempo.

Si tenemos acceso a nuestro servidor podremos editar el archivo de configuración del apache.

Para CentOS, RedHat Fedora
$ sudo nano /etc/httpd/conf/httpd.conf

Para Ubuntu, Debian
$ sudo nano /etc/apache2/apache2.conf

Si no tuviesemos acceso al servidor podemos editar el archivo .htaccess de nuestro sitio o crearlo en caso de que no exista.

$ sudo nano /larutademisitio/.htaccess
Para cualquiera de los casos dentro del archivo, las lineas que debemos agregar o editar son las siguientes:

<IfModule mod_expires.c>
# Habilitar la expiración
ExpiresActive On

# Para las imágenes (1 mes)
ExpiresByType image/gif "access plus 1 months"
ExpiresByType image/png "access plus 1 months"
ExpiresByType image/jpg "access plus 1 months"
ExpiresByType image/jpeg "access plus 1 months"

# Para archivos CSS (1 semana)
# 60*60*24*7, de acuerdo a la modificación del archivo
ExpiresByType text/css M604800

# Para archivos JavaScript (2 meses)
ExpiresByType application/javascript "access plus 60 days"

# Directiva por default para los demás archivos
ExpiresDefault "access plus 1 months"

</IfModule>

Puedes adecuar el tiempo en que expirara cada archivo de acuerdo a tus necesidades, como recomendación es mejor darle mas tiempo a aquellos archivos que no cambien regularmente como las imagenes o javascript.

Posterior a ello, guardamos el archivo y reiniciamos el servicio de apache.

Para Ubuntu, Debian
$ sudo service apache2 restart

Para Centos, RedHat, Fedora
$ sudo service httpd restart

Nota: 
A continuación listamos los tipos de expiración que podemos agregar
  • years
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds
Así por ejemplo podemos colocar "access plus 4 weeks" para indicar que durara 4 semanas. 

También es posible asignar el tiempo de forma manual multiplicando segundos, minutos, horas, días según sea el caso. Por ejemplo para indicar 30 dias, seria 60(segundos) * 60(minutos) * 24 (horas) * 30 (días) = A2592000.

Ahora podemos usar M o A según se ajuste a nuestra necesidades:

  • M - Tiempo base sería la ultima modificación del archivo
  • A - Tiempo base sería el ultimo acceso del usuario al archivo

jueves, 24 de abril de 2014

Instalar Apache, PHP y MySQL en Ubuntu

Una vez que tenemos instalado Ubuntu, si deseamos tener un servidor Web, como Apache, con PHP y MySQL, he aquí explicaremos como realizar esta instalación mediante consola, cabe mencionar que es una instalación básica no tan segura y por lo tanto no recomendada para un servidor en producción, pero esto nos servirá para montar un servidor local para nuestros trabajos.

1. Instalamos el servidor Apache:
$ sudo apt-get install apache2 -y

El parametro -y no pregunta y asume que si a todo. Una vez que termina de instalar podemos probar en nuestro navegador con:
http://localhost ó http://127.0.0.1
nos aparecerá un mensaje que nuestro servidor se encuentra trabajando.

2. Instalamos PHP 5
$ sudo apt-get install php5 libapache2-mod-php5 -y

Una vez instalado, reiniciamos nuestro servidor web
$ sudo service apache2 restart
o bien
$ sudo /etc/init.d/apache restart

El directorio por default para subir todas nuestras aplicaciones de php sera en: /var/www, en lo posterior tendremos que tener un usuario que tenga permisos sobre esta carpeta, por el momento en esta carpeta podremos probar si el php esta función, creando un archivo con la función phpinfo(), por ejemplo

$ sudo nano info.php

dentro del archivo colocamos las lineas:

<?php    phpinfo();    ?>

Lo guardamos (ctrl + x), cargamos nuestra página en el navegador (http://localhost/info.php) y nos debe mostrar la configuración de nuestro servidor web.

3. Instalamos MySQL 5
$ sudo apt-get install mysql-server mysql-client -y

Casi al terminar la instalación se nos pedirá la contraseña del root y su confirmación, es muy importante recordar esta contraseña y no perderla. Para probar la instalación tendremos que accesar a nuestro servidor MySQL.
$ mysql -u root -p

Acto seguido se pedira la contraseña que será la que ingresamos en la instalación, la ingresamos y listo tenemos nuestro servidor MySQL instalado.

4. Instalar modulos faltantes de PHP
En seguida tendremos que instalar todos los módulos que hacen falta, entre ellos va el soporte de la librería GD, CURL, MySQL, etc.
$ sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl -y

Una vez terminada la instalación tendremos que reiniciar nuevamente nuestro servidor web, como ya se describio en las lineas anteriores, y listo ya tenemos instalado Apache, PHP y MySQL.

lunes, 7 de abril de 2014

Evitar listado de directorios en Apache

Cuando recién instalamos nuestro servidor, por default viene con la característica de permitir el listado de directorios, el prevenirlo, nos permitirá tener una mayor seguridad en nuestro sitio.

Existen varias opciones para ello, una forma "rápida" y sencilla es crear un index (htm, html ó php) en cada directorio y subdirectorio de nuestro sitio, sin embargo podemos tener decenas de ellos lo cual seria una tarea laboriosa y tendríamos que estar agregando un index cada vez que agreguemos uno nuevo. Ahora dependiendo del acceso que tengamos a nuestro servidor tendremos dos opciones que se listan a continuación:

A. Crear un archivo .htaccess

Mediante consola, creamos un archivo llamado .htaccess en la raíz de nuestro sitio y agregamos la siguiente linea:

Options -Indexes

Lo guardamos, y con esto evitaremos que cualquier directorio que se encuentra abajo del principal liste su contenido. Esta opción es útil cuando no tenemos acceso a la configuración de nuestro servidor.

B. Modificar el archivo de configuración de Apache

En esta opción se tiene que modificar el archivo de configuración de nuestro servidor apache (httpd.conf), para ello buscamos en el archivo la linea Options Indexes FollowSymLinks:

# The option directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mode/core.html#options
# for more information.
#
Option Indexes FollowSymLinks

Una vez ubicada la linea agregaremos el caracter (-) a Indexes, quedando de la siguiente forma:

Option -Indexes FollowSymLinks

guardamos el archivo y reiniciamos nuestro servidor apache

# service httpd restart

Ahora probamos poniendo la dirección de nuestro servidor en el navegador e intentar acceder a un directorio como el de imágenes, y nos mostrara un mensaje indicando que no tenemos permiso para listar ese directorio.


miércoles, 12 de marzo de 2014

Instalar phpMyAdmin en Centos 5.x

Ya que tenemos instalado y configurado nuestro servidor con apache, php y mysql, instalaremos el gestor de MySQL phpMyAdmin para administrar nuestras bases de datos.

1. Instalamos el phpMyAdmin con el siguiente comando:

# yum install phpmyadmin

Si nos aparece un mensaje indicando que no encuentra el paquete, entonces hay que instalar el repositorio EPEL (Extra Packages for Enterprise Linux).

CentOS/RHEL 5, 32 Bit (i386):
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

CentOS/RHEL 5, 64 Bit (x86_64):
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

Una vez instalado el repositorio intentamos nuevamente instalar el phpMyAdmin con el comando del paso 1. Este repositorio no tiene las versiones mas actuales del phpMyAdmin, he aqui las que podemos instalar:
  1. yum install phpmyadmin (instala la versión 2.11.11.3-2)
  2. yum install phpmyadmin3 (instala la versión 3.5.8.1-1)

2. Ahora configuraremos el phpMyAdmin para poder acceder de forma remota, para ello editamos el archivo phpMyAdmin.conf

# nano /etc/http/conf.d/phpMyAdmin.conf

Editamos la linea siguiente:
<Directory /usr/share/phpMyAdmin/>
     Order Deny,Allow
     Allow from All
     Allow from 127.0.0.1
     Allow from ::1
</Directory>

Con esta linea desde cualquier equipo se podrá acceder, en caso de que desees que solo sea de una maquina tendrás que negar el acceso a todos y permitir solo el de tu IP:

Deny from All
Allow from 192.168.1.2

Guardar el archivo y reiniciar el servidor Apache:
# service http restart

3. Ahora prueba accediendo desde tu navegador: http://miip_o_dominio/phpMyAdmin/

Ingresa tu usuario y contraseña, y listo el phpMyAdmin esta instalado.
Si deseas actualizar a la versión más reciente, puedes visitar este post: Actualizar manualmente phpmyadmin

viernes, 16 de agosto de 2013

Habilitar GZIP en nuestro servidor Apache

El comprimir el código HTML resultante que se envía nos ayuda a mejorar el rendimiento de nuestro servidor web. Aquí los pasos:

1. Buscar nuestro archivo de configuración:
En Debian, Ubuntu y sus derivados el archivo esta en /etc/apache2/apache2.conf
En CentOS, RedHat y sus derivados el archivo esta en /etc/httpd/conf/httpd.conf

2. Editarlo con vi o nano con permisos de root, según sea el caso.

3. Agregar las siguientes lineas:

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# Aqui indicamos lo que no deseamos comprimir
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#Tratando con servidores proxy
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>

Guardamos nuestro archivo.

4. Reiniciamos nuestro servidor Web, con algunos de los siguientes comandos de acuerdo a nuestro SO

#CentOS
sudo service httpd restart 
sudo ./httpd restart

#Ubuntu
sudo service apache2 restart
sudo ./apache restart

Para comprobar que esta habilitada la compresión podemos ir al siguiente enlace, donde indicamos nuestra URL, esperamos el resultado y en donde dice Compression Status debe mostrarse Compressed (gzip), asi mismo se muestra una comparativa de la compresión de nuestro sitio.

Si el enlace anterior no funciona (compresscheck.asp), podemos utilizar GzipTest, que es una herramienta gratuita. La siguiente imagen nos muestra el mensaje que se indicaría si tenemos habilitada la comprensión:



Nota:
Estos pasos se podrán realizar siempre y cuando tengamos acceso a la configuración de nuestro servidor

Entradas Populares