7 Instalación y Configuracion De Apache + PHP + MySQL + ActivePerl
Instalación y Configuracion De Apache 1.3.24 + PHP 4.2.0 + MySQL 3.23.49 + ActivePerl 5.6.1
|-----------------------------------------------------------------------------------------------|
| Instalación y Configuracion De Apache 1.3.24 + PHP 4.2.0 + MySQL 3.23.49 + ActivePerl 5.6.1 |
|-----------------------------------------------------------------------------------------------|
| 20-12-2002 | | el-brujo |
|-----------------------------------------------------------------------------------------------|
| _____ ___ _ _ _____ _ |
| | ___|_ _| | | | | ____|___(_)_ __ ___ |
| | |_ | || |_| | | _| |_ / | '_ \ / _ \ |
| | _| | || _ | | |___ / /| | | | | __/ |
| |_| |___|_| |_| |_____/___|_|_| |_|\___| |
| el-brujo@elhacker.net |
| |
|-----------------------------------------------------------------------------------------------|
Primero nos descargamos los programas.
Descarga Apache
http://www.apache.org/dist/httpd/binaries/win32/apache_1.3.24-win32-x86-src.msi
Descarga PHP
http://www.php.net/do_download.php?download_file=php-4.2.0-Win32.zip
Descarga MysQL
http://www.mysql.com/downloads/download.php?file=Downloads/MySQL-3.23/mysql-3.23.49-win.zip
Descarga Perl
http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.631-MSWin32-x86.msi
1er Paso
Instalar primero el Apache
Doble click en el MSI
Comienza instalación
- Network Domain --> sino tenemos un dominio pones localhost (luego se puede poner aqui la IP)
- Server Name --> sino tenemos un dominio pones localhost (luego se puede poner aqui la IP)
- Mail Adminstrador --> nuestro e-mail
Instalar como un servicio mejor, si es windows 98 sera manual
Instalación por defecto se hace en el directorio:
C:\Archivos de programa\Apache Group\Apache
Ahora necesitamos editar el archivo de configuracion que se encuentra en:
C:\Archivos de programa\Apache Group\Apache\conf\httpd.conf
Lo editamos con cualquier editor de texto
Y vamos a añadir el PHP:
Instalar PHP
Abrimos el ZIP del PHP y lo descomprimimos en la carpeta c:\PHP, o cualquier otra, pero mejor corta, para que no se haga la picha un lio con la ruta del PHP Nos crea la ruta C:\php\php-4.2.0-Win32, y tampoco me mola, asi que copio lo que hay dentro de php-4.2.0-Win32 y lo meto en c:\PHP y luego borro la carpeta php-4.2.0-Win32 Y ahora hay que coger el php4ts.dll y copiarlo al directorio de Windows/System (en el 9x) o Winnt/System32 (NT,2000,XP).Este archivo se encuentra en C:\php\php4ts.dll Si hay otro archivo en c:\Windows\System lo remplazamos, y si nos nos deja, cerrar el apache.
El siguiente paso es configurar el php.ini
- renombrar o copiar php.ini-dist a php.ini
[para poder obtener los variables de post y get, como en mi caso, editar la lineas register_globals=On (esta en Off por defecto)]y copiarlo( php.ini) a C:\windows Una vez instalado el PHP vamos a decirle al Apache que tenemos el php!!
El PHP se puede instalar de dos maneras, como un módulo del Apache o como un script, lo mejor es como un modulo, asi que lo haremos asi:
Abrimos el httpd.conf y buscamos "Dynamic Shared Object (DSO) Support", que es donde se cargan los modulos:
Hasta tenemos un ejemplo:
# Example:
# LoadModule foo_module modules/mod_foo.so
Y añadimos en la primera linea:
LoadModule php4_module c:/php/sapi/php4apache.dll
De tal manera que tiene que quedar asi:
LoadModule php4_module c:/php/sapi/php4apache.dll
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
Ahora seguimos bajando por el httpd.conf y llamamos al modulo AddModule mod_php4.c
De tal manera que quede asi:
ClearModuleList
AddModule mod_php4.c
Vale, ahora bucamos en el httpd.conf el modulo mod_dir.c
Y nos sale esto:
<IfModule mod_dir.c>
DirectoryIndex index.html
</IfModule>
Y le añadimos esta linea
AddType application/x-httpd-php .php
Tiene que quedar asi:
<IfModule mod_dir.c>
DirectoryIndex index.html
AddType application/x-httpd-php .php
</IfModule>
Lo guardamos y reiniciamos el apache, no el ordenador.
Podemos hacer una pagina info.php que dentro contenga <? phpinfo(); ?> y luego visualizar esta pagina para ver si se instalado correctamente.
Ahora vamos a instalar el MySQL 3.23.49
LLeva un setup muy majo, asi que por defecto se instala en C:\Mysql, aunque si esto se cambia luego hay que cambiar un archivo.
Este archivo es el C:\MY.CNF o hacer un my.ini en la carpeta windows y decirle la ruta exacta:
[mysqld]
basedir=E:/ruta-del-php/
datadir=E:/ruta-del-php/data
Ahora solo hay que llamar al winmysqladmin.exe que esta en C:\mysql\bin
Si el semaforo se pone en verde, pefecto, sino pues algo ha fallado.
Y para instalar el Active Perl, también lleva un setup y no hay que hacer nada de especial.
Simplemente decirle la ruta del perl en el httpd.conf
#!c:/program files/perl/perl.exe
Esto es la instalación básica.
Ahora vamos a ver un poco con profundidad todas las opciones de configuración:
Archivos que necesitamos:
httpd.conf de la carpeta conf del apache php.ini de c:\Windows
para configurar el PHP
Opciones del Apache httpd.conf
Básico:
# = Linea comentada, por lo tanto el apache no la coge
# Dynamic Shared Object (DSO) Support --> Aquí se cargan los módulos de apache
Ejemplo:
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule Nombre Ruta
Como ya hemos dicho antes, para carga el PHP:
LoadModule php4_module f:/php/sapi/php4apache.dll
Despues de hacer el LoadModule necesitas cargarlo con el AddModule
- ClearModuleList
- AddModule mod_php4.c
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 mas grande sea, el apache no dara mensaje de timeout aunque tarde mucho en cargar una pagina
MaxKeepAliveRequests 0 --> mejor ponerlo a 0 para ponerlo ilimitado
KeepAliveTimeout 15 --> Numero de segundos que se tiene que esperar un cliente para enviar otra peticion (mejor ponerlo bajo)
MaxRequestsPerChild 0 --> 0 para ilimitado
Port 80 --> puerto por defecto del apache y de cualquier servidor web
ServerAdmin alex@elhacker.net --> tu email
ServerName localhost --> tu ip, o mejor localhost sino tienes ip fija.
DocumentRoot "C:/web" --> donde tienes la web, es decir las paginas que quieres que se vean en el navegador.
<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>
Para que esto se entienda pongo un ejemplo:
Podemos "proteger" la carpeta images (tenemos que tener c:/web/images) para que cuando alguien escriba http://localhost/images) no le muestre el contenido de esa carpeta (sale un Permission Denied), 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 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 aqui lo mismo que en el document root
<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
En DirectoryIndex se definen las paginas que cogera por defecto, es decir:
Si existe c:/web/index.html nos coge por defecto esa pagina, asi que no hace falta poner http://localhost/index.html, sino que basta con poner http://localhost
(que nos llevara 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 tenemos PHP3
AccessFileName .htaccess --> esto es una opcion muy buena que tiene el apache que en un archivo .htaccess podemos configurar varias cosas, como si fuera el httpd.conf
Primero de todo:
<Files .htaccess>
Order allow,deny
deny from all
</Files>
O mejor aún:
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
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>
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
#!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 cgis o pl, 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 Includes):
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.
#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from localhost
#</Location>
#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from localhost
#</Location>
También se le puede decir al apache que cuando vaya a http://localhost/~juan/ apunte al directorio ~juan/public_html
Ejemplo:
UserDir public_html
<Directory /home/*/public_html>
Opciones, etc
</Directory>
Otra cosa excelente es que el Apache puede alojar varias webs y esto se hace con el VirtualHost
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 maquina 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>
Asi en nuestro ordenador tendremos nuestra web en c:/web
y la de nuestro amigo, y las dos estaran en la misma IP y en el mismo servidor web.
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>
PHP
Editaremos el Archivo php.ini
; Resource Limits ;
- max_execution_time = 30 --> máximo tiempo de ejecución de un script php. Si en 30 segunos no obtiene respuesta el script se para.
- memory_limit = 8M --> pos eso
; File Uploads ;
Si queremos enviar ficheros al servidor, aqui lo podemos decir:
- file_uploads = On --> si queremos o no queremos
- upload_tmp_dir = F:\webs\public --> el directorio donde se copiaran los archivos que nos suban
- upload_max_filesize = 1M --> el tamaño maximo que queremos que nos envien.
Bueno instalarlo en Linux, no cambio mucho las rutas:
/usr/local/apache en vez de c:\Archivos de Programas
Te bajas el Apache:
./configure
make
make install
El php:
./configure --with-mysql --with-/usr/local/apache/bin/apxs
ya esta.
Alex B.
webmaster de elhacker.net