Instalar Apache MySQL - Configuración general
Tutorial creado por el-brujo. Extraido de: http://foro.elhacker.net/index.php/topic,251.0.html
27 de Enero de 2005
PHP, Programación web, Servidores web, Apache
4 - Configuración general
ServerRoot "C:/Archivos de programa/Apache Group/Apache" --> donde esta instalado el Apache, y de donde cuelgan las demas carpetas.
PidFile logs/httpd.pid --> por si cerramos el apache mal nos lo guarda aqui.
Timeout 300 --> contra más grande sea, el apache no dara mensaje de timeout aunque tarde mucho en cargar una página.
MaxKeepAliveRequests 0 -->poner a 0 para ponerlo ilimitado. Se trata de mantener una conexión "viva" en el Apache. Es decir, un cliente está vieno la web y su "petición" se queda "viva" por si vuelve a pedir otra petición (GET, etc). De esta manera la petición es más rápida, pero también se quedan más conexiones "abiertas" en el Apache.
KeepAliveTimeout 15 --> Número de segundos que se espera el Apache para cerrar una conexión que está activa (pero en espera) y sin hacer nada (no está enviando datos) (leer arriba).
MaxRequestsPerChild 0 --> 0 para ilimitado.
Port 80 --> puerto por defecto del apache y de cualquier servidor web. Si pones otro puerto luego tendrás que escribir en el navegador ww.pepito.com:puerto
ServerAdmin alex@elhacker.net∞ --> tu email
ServerName localhost --> tu ip, o mejor localhost sino tienes ip fija. En caso de tener dominio poner el nombre de tu dominio.
DocumentRoot "C:/web" --> donde tienes la web, es decir las paginas que quieres que se vean en el navegador.
Opciones de un directorio individual:
ALL --> todas las opciones excepto MultiViews
ExeCGI --> se permite la ejecuación de scripts cgi.
Includes --> se permiten includes
IncludesNOEXEC -> ser permiten includes pero no se precesan #exec ni #include
MultiViews --> permite al servidor seleccionar el documento que mejor responda a la petición del cliente (para mas info --> http://www.apache.org/docs/content-negotation.html------SymLinkslfOwnerMatch∞ --> permite al servidor seguir un enlace simbólico si el destino del enlace y el enlace son del mismo propietario.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
> esto sirve para decirle que el Document Root (/) o sea c:/web no nos enseñe las carpetas ni su contenido, sino que coge el archivo que le decimos en directory index (luego lo veremos).
Si queremos que nos liste el contenido hay que comentarlo:
#<Directory />
# Options FollowSymLinks
# AllowOverride None
#</Directory>
o cambiarlo por:
<Directory />
Options +Indexes FollowSymLinks
AllowOverride None
</Directory>
http://httpd.apache.org/docs/mod/mod_autoindex.html---------Para∞ que esto se entienda pongo un ejemplo:
Podemos "proteger" la carpeta images (tenemos que tener c:/web/images)
para que cuando alguien esriba http://localhost/images∞) no le muestre el contenido de esa carpeta (sale un Permission Deneid), pero eso no quiere decir que las imagenes que estan en ses directorio
no vayan a ser visible, si hacemos http://localhost/images/banner.gif∞ si nos enseña el banner.
Ejemplo:---<Directory /images>
Options FollowSymLinks
AllowOverride None
</Directory>
Options FollowSymLinks --> se trata de permitir enlaces simbólicos, o sea si un directorio tiene tales permisos, los siguientes directorios que cuelguen heredan las misma configuración.
Haz pruebas para ver la diferencia porque no me he explicado muy bien...
<Directory "C:/Archivos de programa/Apache Group/Apache/htdocs"> --> escribe aquí lo mismo que en el document root, ya que son los permisos básicos y por defecto.
<IfModule mod_dir.c>
DirectoryIndex index.html index.php default.htm
AddType application/x-httpd-php .php
</IfModule>
Se pueden ir añadiendo una al lado de otra: index.php index.php3 ,etc o una debajo de otra
index.php
index.php3
index.shtml
En DirectoryIndex se definen las páginas que cogera por defecto, es decir:
Si existe c:/web/index.html nos coge por defecto esa página, asi que no hace falta poner http://localhost/index.html∞, sinó que basta con poner http://localhost∞ (que nos llevará a index.html)
Y lo mismo pasa si hay carpetas, directorios, si en c:/web/pruebas/ hay un archivo llamado index.html nos coge ese por defecto
AddType application/x-httpd-php .php --> esto sirve para que interprete las paginas PHP
AddType application/x-httpd-php .php3 --> si queremos dar soporte a PHP3.
También podenos usar .shtml, que algunos utilizan como si fueran un php.
AccessFileName .htaccess --> esto es una opción muy buena que tiene el apache que en un archivo .htaccess podemos configurar varias cosas, como si fuera el httpd.conf (muy útil en webhosting, ya que no podemos controlar la conf del apache....)
Para proteger los htaccess de miradas indiscretas, ponemos en el conf principal:
<Files .htaccess>
Order allow,deny
deny from all
</Files>
O mejor aún:
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
Son expresiones regulares, luego veremos algunos ejemplos.
Luego le podemos decir al htaccess
ErrorDocument 404 /notfound.html
También se le puede decir un directory index:
DirectoryIndex filename.html
Si queremos que un cgi se ejecute automáticamente:
DirectoryIndex /cgi-local/index.pl
También podemos utilizar la autentificación con HTTP con el Apache:------AuthUserFile "ruta"
<Limit GET>
requiere user login juan
</Limit>
(Abajo se explica completo)
ErrorLog logs/error.log --> para que logee los errores en la carpeta logs del apache.
#CustomLog logs/access.log combined --> guarda los accesos a la web en diferentes formato, sgún queramos unos datos u otros.
Puedes cambiar la ruta y guardar los logs en otro sitio, ya que suelen crecer mucho con webs grandes, llegando a tamaños de 1GB o más. Recuerda que en Linux en la carpeta dónde metas los logs debe ser de usuario "nobody" y grupo "nogroup" para que el apache pueda crear el archivo de logs y rellenarlo. Y si necesitas vaciarlo con algún prograna tipo awstats recuerda darle permisos de escritura 666.
#!c:/program files/perl/perl.exe --> aqui escribimos la ruta del perl, como que windows no lleva perl por defecto, deberemos bajarnos algun paquete, como Active Perl y aqui ponerle la ruta al perl.exe
Apache acepta Alias, y eso significa que podemos coger cualquier carpeta de nuestro ordenador y hacerla visible sin necesidad de que esa carpeta este en documentRoot
Me explico:
Si tenemos una carpeta con documentos en d:/documentos, y el documentRoot esta en c:/web, esa carpeta a priori no es visible, pero podemos hacer lo siguiente:
Alias /documentos/ "d:/documentos"
Y luego la protegemos:
<Directory "d:/documentos">
Options FollowSymLinks
AllowOverride None
</Directory>
A partir de este momento en http://localhost/documentos∞ tendremos el contenido de d:/documentos
Podemos crear tantos alias como queramos.
Más cosas. Imáginemos que tenemos archivos .bak que no queremos que la gente los pueda ver, basta con decirle esto:
<Files ~ "/.bak$">
Order allow,deny
Deny from all
</Files>
ScriptAlias /cgi-bin/ "C:/Archivos de programa/Apache Group/Apache/cgi-bin/" --> Aqui definimos donde tendremos nuestros cgi's, no es mas que un alias pero con permisos especiales para ejecutar.
<Directory "C:/Archivos de programa/Apache Group/Apache/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Importante poner esas opciones para proteger el directorio cgi-bin de miradas curiosas.
Dento de la carpeta C:/Archivos de programa/Apache Group/Apache/cgi-bin tenemos que meter los cgi's o pl's, y luego en el navegador se accede con http://localhost/cgi-bin/------También∞ se le puede decir al Apache que cualquier cgi que vea, este dentro del ScriptAlias o no, lo ejecute, esto no es recomendable, pero por si acaso basta con decirle esto:
AddHandler cgi-script .cgi
También se le puede decir al apache que una página shtml la interprete como SSI (Server Side Inlcudes:------AddHandler server-parsed .shtml
<IfModule mod_negotiation.c>
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
</IfModule>
Propiedades del lenguaje, asi que mejor poner es al principio del todo:
LanguagePriority es en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca sv tw
ErrorDocument --> Tipos de errores.
200 OK
206 Partial content
301 Document moved permanently
302 Document found elsewhere
304 Not modified since last retrieval
400 Bad request
403 Access forbidden
404 Document not found
408 Request timeout
500 Internal server error
501 Request type not supported
Por ejemplo:
El error 404 es cuando un servidor no encuentra una pagina. Pues podemos hacer que cuando haya un 404 nos lleve a una pagina:
ErrorDocument 404 /error.htm
Y en la pagina error.htm pues escribimos lo que queramos, es un html normal.
Asi que cuando escribamos http://localhost/lo_que_sea∞, si lo_que_sea no existe, ya sea carpeta, html, zip, etc nos llevara automaticamente a la pagina error.htm
El 505 es cuando del servidor falla
Los directorios server-estatus y server-info están comentados por defectos y mejor dejarlos así sino sabes lo que tocas. Pero si lo descomentas asegurate de poner el allow from bien, es decir localhost o tu ip. Tampco es que sea informacion super-delicada, pero si es informacion privada.
#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from localhost
#</Location>
El server status te dice el estado del servidor, los procesos en espera, las conexiones enviando información, etc, el uptime del apache, el tráfico total enviado, etc.
Si lo quieres más completo, con las peticiones en proceso simultáneas, las conexiones de cada vhost (muy útil para saber que hosting consune más) etc, debes descomentar esta linea:
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from ip
</Location>
Otra manera de hacerlo es:
<Location /server-status>
SetHandler server-status
AuthUserFile /home/pepe/htpasswd
AuthType Basic
AuthName "Server Status"
require valid-user
</Location>
En el archivo htpasswd que está en /home/pepe debe estar el usuario pepe con su correspondiente contraseña encriptada. Para hacer estos usuarios, consulta el final del documento dónde se explica como proteger directorios.
También se le puede decir al Apache que por defecto cada usuario de linux tenga su directorio web.
Por ejemplo http://localhost/~juan/∞ apuntará al directorio del usuario en linux, o sea:
/home/juan/public_html
Para hacer esto basta con poner:
UserDir public_html
Si pusieramos:
UserDir pagina_web
Entonces irá por defecto a:
/home/usuario/pagina_web
/home/usuario2/pagina_web
<Directory /home/*/public_html>
Opciones que queramos para todos los usuarios.
</Directory>
Más cosas:
Si tenemos una carpeta /images y la movemos de sitio, podemos hacer un redirect, o por ejemplo si teniamos /juan y ahora juan ha comprado un dominio podemos hacer esto:
Redirect permanent /juan http://www.juan.com∞
Donde /juan ya no debe ser un directorio, ni estar lleno, el ex-directorio de nuestro amigo ahora será www.juan.com∞, que es el nuevo dominio de juan, donde podemos encontrarle :)
Otra cosa excelente es que el Apache puede alojar varias webs (dominios) y esto se hace con el VirtualHost.
Los vhosts pueden estar basados en nombre (based-name) o en ip (ip-based).
Me explico, si tu máquina tiene una sola ip, pues deberas hacer vhosts basados en nombre, y si tienes varias ips pues puedes elegir, yo solo se hacerlo basado en nombre, ya que sólo tengo una ip:
Por ejemplo:
Tenemos el apache y queremos alojar nuestra web y la de un amigo:
El amigo compra el dominio pepe.com y apunta las dns a nuestra maquina.
Nosotros tenemos que decirle a nuestra máquina esto:
<VirtualHost *>
ServerAdmin amigo@pepe.com∞
DocumentRoot /web/amigo_pepe/
ServerName pepe.com
ErrorLog logs/web_amigo_pepe_errpr
CustomLog logs/web_amigo_pepe_log common
</VirtualHost>
Ejemplo real de un vhost del dominio decowar.com, totalmente completo:
#le decimos listen y la ip de nuestra maquina y el puerto (normalmente 80)
Listen 66.111.38.100:80
#recuerda que si sales por un router deberás poner Listen 192.168.0.3 , o sea la ip local, ya que sinó al arrancar el apache daráá el error "could not bind address port"
NameVirtualHost 66.111.38.100:80
#este es el vhost por defecto. Aunque está basado en nombre, este vhost como es por defecto, también podemos acceder directamente por la ip.
<VirtualHost 66.111.38.100:80>
DocumentRoot /usr/local/apache/htdocs/alex
ServerName www.elhacker.info∞
ServerAlias elhacker.info
</VirtualHost>
#segundo vhost basado en en el nombre (dominio) www.decowar.com∞ y decowar.com
<VirtualHost 66.111.38.100:80>
ServerAdmin decowar@decowar.com∞
DocumentRoot /usr/local/apache/htdocs/decowar
ServerName www.decowar.com∞
ServerAlias decowar.com
<Directory "/usr/local/apache/htdocs/decowar/">
Order allow,deny
Allow from all
</Directory>
ErrorDocument 404 /error.htm
CustomLog /usr/local/apache/logs/acceslodeco combined
ErrorLog /usr/local/apache/logs/error_log_decowar
LogLevel warn
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin2/"
<Directory "/usr/local/apache/cgi-bin2">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Fijate que tiene cgi-bin tb propio, tiene errordocument y logs etc, por separado del otro.
Asi en nuestro ordenador tendremos nuestra web y la de nuestro amigo, y las dos estaran en la misma IP y en el mismo servidor web. En este ejemplo solo hay 2 dominios, pero igual que hay 2 podriamos poner 200.
El apache también puede hacer de proxy, esta opción por defecto está desactivada, pero veremos como configurar el Apache como proxy.
Primero tiene que estar el módulo mod_proxy.c cargado en el Dynamic Shared Object (DSO)
#<IfModule mod_proxy.c>
# <Directory proxy:*>
# Order deny,allow
# Deny from all
# Allow from ip
# </Directory>
PidFile logs/httpd.pid --> por si cerramos el apache mal nos lo guarda aqui.
Timeout 300 --> contra más grande sea, el apache no dara mensaje de timeout aunque tarde mucho en cargar una página.
MaxKeepAliveRequests 0 -->poner a 0 para ponerlo ilimitado. Se trata de mantener una conexión "viva" en el Apache. Es decir, un cliente está vieno la web y su "petición" se queda "viva" por si vuelve a pedir otra petición (GET, etc). De esta manera la petición es más rápida, pero también se quedan más conexiones "abiertas" en el Apache.
KeepAliveTimeout 15 --> Número de segundos que se espera el Apache para cerrar una conexión que está activa (pero en espera) y sin hacer nada (no está enviando datos) (leer arriba).
MaxRequestsPerChild 0 --> 0 para ilimitado.
Port 80 --> puerto por defecto del apache y de cualquier servidor web. Si pones otro puerto luego tendrás que escribir en el navegador ww.pepito.com:puerto
ServerAdmin alex@elhacker.net∞ --> tu email
ServerName localhost --> tu ip, o mejor localhost sino tienes ip fija. En caso de tener dominio poner el nombre de tu dominio.
DocumentRoot "C:/web" --> donde tienes la web, es decir las paginas que quieres que se vean en el navegador.
Opciones de un directorio individual:
ALL --> todas las opciones excepto MultiViews
ExeCGI --> se permite la ejecuación de scripts cgi.
Includes --> se permiten includes
IncludesNOEXEC -> ser permiten includes pero no se precesan #exec ni #include
MultiViews --> permite al servidor seleccionar el documento que mejor responda a la petición del cliente (para mas info --> http://www.apache.org/docs/content-negotation.html------SymLinkslfOwnerMatch∞ --> permite al servidor seguir un enlace simbólico si el destino del enlace y el enlace son del mismo propietario.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
> esto sirve para decirle que el Document Root (/) o sea c:/web no nos enseñe las carpetas ni su contenido, sino que coge el archivo que le decimos en directory index (luego lo veremos).
Si queremos que nos liste el contenido hay que comentarlo:
#<Directory />
# Options FollowSymLinks
# AllowOverride None
#</Directory>
o cambiarlo por:
<Directory />
Options +Indexes FollowSymLinks
AllowOverride None
</Directory>
http://httpd.apache.org/docs/mod/mod_autoindex.html---------Para∞ que esto se entienda pongo un ejemplo:
Podemos "proteger" la carpeta images (tenemos que tener c:/web/images)
para que cuando alguien esriba http://localhost/images∞) no le muestre el contenido de esa carpeta (sale un Permission Deneid), pero eso no quiere decir que las imagenes que estan en ses directorio
no vayan a ser visible, si hacemos http://localhost/images/banner.gif∞ si nos enseña el banner.
Ejemplo:---<Directory /images>
Options FollowSymLinks
AllowOverride None
</Directory>
Options FollowSymLinks --> se trata de permitir enlaces simbólicos, o sea si un directorio tiene tales permisos, los siguientes directorios que cuelguen heredan las misma configuración.
Haz pruebas para ver la diferencia porque no me he explicado muy bien...
<Directory "C:/Archivos de programa/Apache Group/Apache/htdocs"> --> escribe aquí lo mismo que en el document root, ya que son los permisos básicos y por defecto.
<IfModule mod_dir.c>
DirectoryIndex index.html index.php default.htm
AddType application/x-httpd-php .php
</IfModule>
Se pueden ir añadiendo una al lado de otra: index.php index.php3 ,etc o una debajo de otra
index.php
index.php3
index.shtml
En DirectoryIndex se definen las páginas que cogera por defecto, es decir:
Si existe c:/web/index.html nos coge por defecto esa página, asi que no hace falta poner http://localhost/index.html∞, sinó que basta con poner http://localhost∞ (que nos llevará a index.html)
Y lo mismo pasa si hay carpetas, directorios, si en c:/web/pruebas/ hay un archivo llamado index.html nos coge ese por defecto
AddType application/x-httpd-php .php --> esto sirve para que interprete las paginas PHP
AddType application/x-httpd-php .php3 --> si queremos dar soporte a PHP3.
También podenos usar .shtml, que algunos utilizan como si fueran un php.
AccessFileName .htaccess --> esto es una opción muy buena que tiene el apache que en un archivo .htaccess podemos configurar varias cosas, como si fuera el httpd.conf (muy útil en webhosting, ya que no podemos controlar la conf del apache....)
Para proteger los htaccess de miradas indiscretas, ponemos en el conf principal:
<Files .htaccess>
Order allow,deny
deny from all
</Files>
O mejor aún:
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
Son expresiones regulares, luego veremos algunos ejemplos.
Luego le podemos decir al htaccess
ErrorDocument 404 /notfound.html
También se le puede decir un directory index:
DirectoryIndex filename.html
Si queremos que un cgi se ejecute automáticamente:
DirectoryIndex /cgi-local/index.pl
También podemos utilizar la autentificación con HTTP con el Apache:------AuthUserFile "ruta"
<Limit GET>
requiere user login juan
</Limit>
(Abajo se explica completo)
ErrorLog logs/error.log --> para que logee los errores en la carpeta logs del apache.
#CustomLog logs/access.log combined --> guarda los accesos a la web en diferentes formato, sgún queramos unos datos u otros.
Puedes cambiar la ruta y guardar los logs en otro sitio, ya que suelen crecer mucho con webs grandes, llegando a tamaños de 1GB o más. Recuerda que en Linux en la carpeta dónde metas los logs debe ser de usuario "nobody" y grupo "nogroup" para que el apache pueda crear el archivo de logs y rellenarlo. Y si necesitas vaciarlo con algún prograna tipo awstats recuerda darle permisos de escritura 666.
#!c:/program files/perl/perl.exe --> aqui escribimos la ruta del perl, como que windows no lleva perl por defecto, deberemos bajarnos algun paquete, como Active Perl y aqui ponerle la ruta al perl.exe
Apache acepta Alias, y eso significa que podemos coger cualquier carpeta de nuestro ordenador y hacerla visible sin necesidad de que esa carpeta este en documentRoot
Me explico:
Si tenemos una carpeta con documentos en d:/documentos, y el documentRoot esta en c:/web, esa carpeta a priori no es visible, pero podemos hacer lo siguiente:
Alias /documentos/ "d:/documentos"
Y luego la protegemos:
<Directory "d:/documentos">
Options FollowSymLinks
AllowOverride None
</Directory>
A partir de este momento en http://localhost/documentos∞ tendremos el contenido de d:/documentos
Podemos crear tantos alias como queramos.
Más cosas. Imáginemos que tenemos archivos .bak que no queremos que la gente los pueda ver, basta con decirle esto:
<Files ~ "/.bak$">
Order allow,deny
Deny from all
</Files>
ScriptAlias /cgi-bin/ "C:/Archivos de programa/Apache Group/Apache/cgi-bin/" --> Aqui definimos donde tendremos nuestros cgi's, no es mas que un alias pero con permisos especiales para ejecutar.
<Directory "C:/Archivos de programa/Apache Group/Apache/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Importante poner esas opciones para proteger el directorio cgi-bin de miradas curiosas.
Dento de la carpeta C:/Archivos de programa/Apache Group/Apache/cgi-bin tenemos que meter los cgi's o pl's, y luego en el navegador se accede con http://localhost/cgi-bin/------También∞ se le puede decir al Apache que cualquier cgi que vea, este dentro del ScriptAlias o no, lo ejecute, esto no es recomendable, pero por si acaso basta con decirle esto:
AddHandler cgi-script .cgi
También se le puede decir al apache que una página shtml la interprete como SSI (Server Side Inlcudes:------AddHandler server-parsed .shtml
<IfModule mod_negotiation.c>
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
</IfModule>
Propiedades del lenguaje, asi que mejor poner es al principio del todo:
LanguagePriority es en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca sv tw
ErrorDocument --> Tipos de errores.
200 OK
206 Partial content
301 Document moved permanently
302 Document found elsewhere
304 Not modified since last retrieval
400 Bad request
403 Access forbidden
404 Document not found
408 Request timeout
500 Internal server error
501 Request type not supported
Por ejemplo:
El error 404 es cuando un servidor no encuentra una pagina. Pues podemos hacer que cuando haya un 404 nos lleve a una pagina:
ErrorDocument 404 /error.htm
Y en la pagina error.htm pues escribimos lo que queramos, es un html normal.
Asi que cuando escribamos http://localhost/lo_que_sea∞, si lo_que_sea no existe, ya sea carpeta, html, zip, etc nos llevara automaticamente a la pagina error.htm
El 505 es cuando del servidor falla
Los directorios server-estatus y server-info están comentados por defectos y mejor dejarlos así sino sabes lo que tocas. Pero si lo descomentas asegurate de poner el allow from bien, es decir localhost o tu ip. Tampco es que sea informacion super-delicada, pero si es informacion privada.
#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from localhost
#</Location>
El server status te dice el estado del servidor, los procesos en espera, las conexiones enviando información, etc, el uptime del apache, el tráfico total enviado, etc.
Si lo quieres más completo, con las peticiones en proceso simultáneas, las conexiones de cada vhost (muy útil para saber que hosting consune más) etc, debes descomentar esta linea:
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from ip
</Location>
Otra manera de hacerlo es:
<Location /server-status>
SetHandler server-status
AuthUserFile /home/pepe/htpasswd
AuthType Basic
AuthName "Server Status"
require valid-user
</Location>
En el archivo htpasswd que está en /home/pepe debe estar el usuario pepe con su correspondiente contraseña encriptada. Para hacer estos usuarios, consulta el final del documento dónde se explica como proteger directorios.
También se le puede decir al Apache que por defecto cada usuario de linux tenga su directorio web.
Por ejemplo http://localhost/~juan/∞ apuntará al directorio del usuario en linux, o sea:
/home/juan/public_html
Para hacer esto basta con poner:
UserDir public_html
Si pusieramos:
UserDir pagina_web
Entonces irá por defecto a:
/home/usuario/pagina_web
/home/usuario2/pagina_web
<Directory /home/*/public_html>
Opciones que queramos para todos los usuarios.
</Directory>
Más cosas:
Si tenemos una carpeta /images y la movemos de sitio, podemos hacer un redirect, o por ejemplo si teniamos /juan y ahora juan ha comprado un dominio podemos hacer esto:
Redirect permanent /juan http://www.juan.com∞
Donde /juan ya no debe ser un directorio, ni estar lleno, el ex-directorio de nuestro amigo ahora será www.juan.com∞, que es el nuevo dominio de juan, donde podemos encontrarle :)
Otra cosa excelente es que el Apache puede alojar varias webs (dominios) y esto se hace con el VirtualHost.
Los vhosts pueden estar basados en nombre (based-name) o en ip (ip-based).
Me explico, si tu máquina tiene una sola ip, pues deberas hacer vhosts basados en nombre, y si tienes varias ips pues puedes elegir, yo solo se hacerlo basado en nombre, ya que sólo tengo una ip:
Por ejemplo:
Tenemos el apache y queremos alojar nuestra web y la de un amigo:
El amigo compra el dominio pepe.com y apunta las dns a nuestra maquina.
Nosotros tenemos que decirle a nuestra máquina esto:
<VirtualHost *>
ServerAdmin amigo@pepe.com∞
DocumentRoot /web/amigo_pepe/
ServerName pepe.com
ErrorLog logs/web_amigo_pepe_errpr
CustomLog logs/web_amigo_pepe_log common
</VirtualHost>
Ejemplo real de un vhost del dominio decowar.com, totalmente completo:
#le decimos listen y la ip de nuestra maquina y el puerto (normalmente 80)
Listen 66.111.38.100:80
#recuerda que si sales por un router deberás poner Listen 192.168.0.3 , o sea la ip local, ya que sinó al arrancar el apache daráá el error "could not bind address port"
NameVirtualHost 66.111.38.100:80
#este es el vhost por defecto. Aunque está basado en nombre, este vhost como es por defecto, también podemos acceder directamente por la ip.
<VirtualHost 66.111.38.100:80>
DocumentRoot /usr/local/apache/htdocs/alex
ServerName www.elhacker.info∞
ServerAlias elhacker.info
</VirtualHost>
#segundo vhost basado en en el nombre (dominio) www.decowar.com∞ y decowar.com
<VirtualHost 66.111.38.100:80>
ServerAdmin decowar@decowar.com∞
DocumentRoot /usr/local/apache/htdocs/decowar
ServerName www.decowar.com∞
ServerAlias decowar.com
<Directory "/usr/local/apache/htdocs/decowar/">
Order allow,deny
Allow from all
</Directory>
ErrorDocument 404 /error.htm
CustomLog /usr/local/apache/logs/acceslodeco combined
ErrorLog /usr/local/apache/logs/error_log_decowar
LogLevel warn
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin2/"
<Directory "/usr/local/apache/cgi-bin2">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Fijate que tiene cgi-bin tb propio, tiene errordocument y logs etc, por separado del otro.
Asi en nuestro ordenador tendremos nuestra web y la de nuestro amigo, y las dos estaran en la misma IP y en el mismo servidor web. En este ejemplo solo hay 2 dominios, pero igual que hay 2 podriamos poner 200.
El apache también puede hacer de proxy, esta opción por defecto está desactivada, pero veremos como configurar el Apache como proxy.
Primero tiene que estar el módulo mod_proxy.c cargado en el Dynamic Shared Object (DSO)
#<IfModule mod_proxy.c>
# <Directory proxy:*>
# Order deny,allow
# Deny from all
# Allow from ip
# </Directory>
Valora este capítulo:
Autor y licencia de 'Instalar Apache MySQL - Configuración general'
|
Opiniona sobre 'Instalar Apache MySQL - Configuración general' (4)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este tutorial |
Wikis relacionados con 'Instalar Apache MySQL - Configuración general'
Cuando quise montar mi primer servidor linux estuve buscando informacion para poder configurar linux ,...
Más »
En este artículo explicamos paso a paso como realizar una instalación a partir de los...
Más »
Tras no pocas polémicas, en 1639 aparece, en la ciudad de Barcelona, la Historia general...
Más »
La inteligencia competitiva ha despertado recientemente una ola de interés, en parte motivada por una...
Más »
Para testear en local yo utilizo un paquete llamdo WAMP que te instala Apache,PHP5, MySQL,...
Más »


