Registrado: Apr 15, 2004 Mensajes: 261 Ubicación: En la Luna
Publicado: VAsunto: TUTO --> Instalar PHP + Apache + MySQL
Hola:
Esta es solo una aportacion para esta seccion, he aprendido mucho de este manual y pues creo que seria bueno tenerlo AQUI, de antemano les digo que NO SOY EL QUE LO ESCRIBIO, al final doy las reseñas de la persona que lo escribio y el sitio .... Lean y Aprendan esta buenisimo !!
Especial, si usas Windows o Linux .....
Versión 1.15
1) Introducción básica 2) Instalación bajo Windows 3) Configuración avanzada Apache 4) Configuración avanzada PHP 5) Instalación bajo Linux 6) Optimizando 7) Protegiendo ancho de banda Autorización en Apache 9) Apache con una dirección IP dinámica
1)Intro básica: Un servidor web (apache) es un programa que permite que otros ordenadores vean tu web mediante un navegador.
PHP es un lenguaje de progrmación capaz, de entre otras cosas, interactuar con bases de datos (MySQL).
Un sistema gestor de bases de datos (SGBD) es una aplicación que permite manejar bases datos, y bueno bases de datos son cómo archivos dónde guardamos datos ordenadamente y después recuperalos fácilmente.
Este manual también sirve para Apache 1.3.29 y PHP 4.3.4 y MySQL 3.23.58 (y 4.0.17) y posteriores versiones, ya que ni la configuración, ni la sintaxis, no cambian, ni varia en nada.
En el ejemplo se utiliza Apache 1.3.28 + PHP 4.3.2 + MySQL 3.23.56 + ActivePerl 5.8 bajo Windows y después sobre Linux.
Recuerda que la versión estable y en desarollo del MySQL ya no es la serie 3.23.x, sino la 4.0.x. Por suerte, la configuración es idéntica.
Es el Apache msi (Microsoft Installer). Si no te instala el MSI consulta la web de Microsoft para instalar una versión más reciente del Microsoft Installer.
Descarga PHP
Viene en un zip comrpmido, luego veremos que hacemos con él. También existe la versión dónde hay un instalador.
Descarga MysQL http://www.mysql.com/downloads/download.php?file=Downloads/MySQL-3.23/mysql-3.23.56-win.zip&mirror=http%3A//mysql.zadnik.org/
Descarga Perl
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 cambiar en el archivo de configuracuon, y poner aqui la IP)
Server Name --> sino tenemos un dominio pones localhost (luego se puede cambiar y poner aqui la IP)
Mail Adminstrador --> nuestro e-mail
Instalar como un servicio mejor, si es windows 98 será 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
En Linux, por defecto en: /usr/local/apache/conf
Lo podemos editar con cualquier editor de texto, como luego veremos.
Ahora vamos a instalar 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 y entonces nos dejará, ya que sino esta en uso.
El siguiente paso es configurar el php.ini . El php.ini es el archivo de configuración del php, así como el httpd.conf es la del apache.
- 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 módulo, así que lo haremos de esta manera:
Abrimos el httpd.conf y buscamos "Dynamic Shared Object (DSO) Support", que es donde se cargan los módulos:
Lo guardamos y reiniciamos el apache, no el ordenador.
Podemos hacer una pagina info.php que dentro contenga <?php phpinfo(); ?> y luego visualizar esta pagina para ver si se instalado correctamente.
Ahora vamos a ver más módulos del apache que se encuentran por defecto en:
C:\Archivos de programa\Apache Group\Apache\modules
mod_auth_anon: permite a usuarios anónimos acceder a áreas autentificadas. mod_auth_dbm: proporciona autentificación utilizando ficheros DBM. mod_auth_digest: autentificación de usuario utilizando MD5. mod_cern_meta: semántica de etiquetas meta del CERN. mod_expires: cabeceras http expires. mod_headers: personalización de las peticiones http y cabeceras. mod_info: visión comprensiva de la configuración del servidor. mod_mime_magic: determina el tipo de MIME de un fichero. mod_proxy: Servidror HTTP/1.1 proxy/gateway mod_rewrite: proporciona un motor de re-escritura basado en reglas. mod_speling: intenta corregir “faltas” en las URL, ignorando mayúsculas, etc. mod_status: informaicón y rendimiento del apache mod_unique_id: variables del entorno mod_usertrack: registro de actividad de un usuario mod_vhost_alias: Configurar servidores virtuales dinámicamente
Ahora vamos a instalar el MySQL 3.23.56
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:
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 --> 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 -->
SymLinkslfOwnerMatch --> permite al servidor seguir un enlace simbólico si el destino del enlace y el enlace son del mismo propietario.
--> 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:
Podemos "proteger" la carpeta images (tenemos que tener c:/web/images) para que cuando alguien esriba ) 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 si nos enseña el banner.
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.
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 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:
A partir de este momento en 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
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 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>
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 apuntará al directorio del usuario en linux, o sea:
<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:
Donde /juan ya no debe ser un directorio, ni estar lleno, el ex-directorio de nuestro amigo ahora será 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:
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.
<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>
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 y sale un "timeout" como errror.
memory_limit = 8M --> tamaño maximo que puede consumir un script php.
; File Uploads ;
Si queremos enviar ficheros al servidor, aqui lo podemos permitir:
file_uploads = On --> si queremos o no queremos
upload_tmp_dir = F:\webs\public --> el directorio donde se copiarán los archivos que nos suban.
upload_max_filesize = 1M --> el tamaño máximo que queremos que nos envien.
Una caracteristica muy importante, especialmente para hostings, es la posibilidad de no permitir algunas de las funciones de PHP. La razon es muy sencilla: algunas funciones de PHP como system, proc, etc hacen y permiten ejecutar comandos del sistema, lo que puede provocar problemas de seguridad. Por ejemplo, un usuario quizas quiera ejecutar un comando "no peligroso" como uptime, pero otro usuario mal intencionado puede utilizar otros comandos del sistema para extraer informacion comprometida de la maquina: como id, who, cat, etc.
Hosting gratuitos como Lycos, iespana tienen capadas estas funciones por lo comentado arriba, es potencialmente peligroso.
Para no permitir la ejecucion concreta de algunas funciones en PHP (no confundir con comandos) es con:
Otra manera es hacer funcionar el php en safe_mode. Esto se indica en el php.ini y se activa con la opción:
Safe_mode = ON
o sea modo seguro. Muchos hostings gratuitos lo tienen activado por defecto. De esta manera varias funciones están desactivadas y muchas otras comprueban los permisos a la hora de leer ficheros, etc.
Otra manera intersante de progeter el php es con el magic_quotes_gpc:
- Buscamos la directiva magic_quotes_gpc, que quizá este en Off, pues la activamos con On. Esto hace la adición automática del caracter de escape "\" en variables tomadas de GET, POST y Cookies.
magic_quotes_gpc = On ; magic quotes for incoming GET/POST/Cookie data
- Para evitar que en lugar de enviar cadenas mal intencionadas, sean almacenadas en bases de datos o archivos de texto. Debemos activar magic_quotes_runtime.
magic_quotes_runtime = Off ; magic quotes for runtime-generated data.
Se podría decir que hasta ahí tenemos mas o menos asegurado PHP. ¿Fácil, no?.
ya ta. Recuerda que debes haber compilado el apcahe con module=SO, para poder compilar el PHP y la ruta del apxs correcta, sino tambien dara error claro. Yo he puesto la ruta por defecto, si has instalado el apache en otro sitio puedes hacer un "locate apxs" y ver dónde lo tienes.
Puedes editar el php.ini en/etc/php.ini o /usr/local/lib/php.ini
Por defecto PHP usa sendmail para enviar e-mails con la función mail() , pero si queremos usar qmail, tenemos que añadir la ruta del ejecutable:
[mysql.server] #muy importante como siempre ejecutar este proceso con un usuario con pocos privilegios user=mysql #dónde tenemos las bases de datos, por si queremos ponerlas en otra partición, por ejemplo. basedir=/var/lib
El max_connections por defecto es: 150, es mas que suficiente para según que cosas, pero en una máquina grande con muchas bases de datos, puede pasar que en un momento determinado hayan 150 conexiones simualtaneas. Entonces saldrá un error de "Too many connections".
También se pueden cambiar otros valores (variables):
set-variable = variable = nuevovalor
Ejemplo:
set-variable = key_buffer=8M
Una valor muy imporante para optimizar el MySQL es el "query caching". Creando una cache de las consultas podemos mejorar el rendimiento de la cpu y la velociad de las consultas.
Primero debemos asegurarnos que está activado:
mysql> SHOW VARIABLES LIKE 'mysql_query_cache';
have_query_cache | YES
Si está que no:
query_cache_type = 1
Definimos el tamaño de la cache en el archivo /etc/my.cnf
query_cache_size=16M
o
query_cache_size=32M
O más grande si tenemos mucho ram.
También le podemos decir que querys con que tamaño minimo queremos que las guarde en cache:
query_cache_limit = 1M
Las consultas (querys) de más de 1 Mb no se guardarán en la caché.
Variables que conviene mirar:
Querys en caché
mysql> SHOW STATUS LIKE 'Qcache_queries_in_cache';
Número de querys con caché servidas
mysql> SHOW STATUS LIKE 'Qcache_hits';
Memoria libre de la cache para las querys.
mysql> SHOW STATUS LIKE 'Qcache_free_memory';
Más variables a tener en cuenta:
El MySQL lleva 3 archivos de configuración de ejemplo, para equipos pequeños (menos de 512 de ram), equipos medianos (más de 512 de ram) y para equipos grandes (1,2 Gigas de ram). Básicamente repercutirán en el consumo de ram del proceso MySQL, ya que los ejemplos de config varian el tamaño de la caché, de las consultas, etc.
# para equipos con =512 RAM set-variable = key_buffer=256M set-variable = max_allowed_packet=1M set-variable = table_cache=256 set-variable = sort_buffer=1M set-variable = record_buffer=1M set-variable = myisam_sort_buffer_size=64M set-variable = thread_cache=8 # Try number of CPU's*2 for thread_concurrency set-variable = thread_concurrency=8 log-bin server-id = 1
# para equipos con 1 o 2 GB de ram key_buffer = 384M max_allowed_packet = 1M table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M myisam_sort_buffer_size = 64M thread_cache = 8 query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8
Vamos a ver estos valores por otros "no oficiales" pero igualmente válidos y que funcionan mejor:
#equipos con 512 de ram (editar siempre /etc/my.cnf) thread_cache_size=50 key_buffer=40M table_cache=384 sort_buffer_size=768K read_buffer_size=512K read_rnd_buffer_size=512K thread_concurrency=2
#equipos con 1gb de ram (editar siempre /etc/my.cnf) thread_cache_size=80 key_buffer=150M table_cache=512 sort_buffer_size=1M read_buffer_size=1M read_rnd_buffer_size=768K thread_concurrency=2
Para obtener el máximo rendimiento del Servidor web Apache, configurar el httpd.conf de Linux/Unix.
Los creadores del Apache afirman que no está diseñado, o no es su máxina prioridad, el rendimiento, pero aún así es posible configurarlo para obtener un mejor rendimiento. Especialmente es indicado para máquinas con una buena/nuy buena conexión a internet.
Configuración mínima: 256 RAM.
Con esta nueva configuración Apache consumirá más memoria, pero si contamos con bastante memoria (1 GB o 2 GB) no hay problema.
MaxKeepAliveRequests 0
# en comentarios los valores originales #MinSpareServers 5 #MaxSpareServers 10
MinSpareServers 16 MaxSpareServers 30
También podemos poner (pero mejor tener una máquina con un tráfico bestial y 2 GB de ram minímo)
MinSpareServers 100
Pero mejor que tengas mucha ram y una buena cpu. Cada SpareServer será un subproceso del apache, que por lo tanto, consumirá memoria ram.
Número de procesos al arrancar el Apache:
#StartServers 5 StartServers 16
MaxRequestsPerChild 0
Esto es todo, los valores KeepAlive, Timeout, etc, pueden dejarse por defecto.
También el MaxClients 150 (por defecto, puedes ponerle un valor más grande). Piensa que serían 150 conexiones simultaneas.
Los valores 0, indican "Ilimitado", es lo recomendado, si es admitido.
También la opción de "HostNameLookups" es mejor ponerla en "HostNameLookups off" , ya que así evitamos tener que hacer un reverso de DNS de cada visitante que entra y hace un "hit", y aunque existe una caché de DNS para agilizar este proceso, no es recomendable.
Otra cosa que he leído que dicen que para mejorar el rendimiento, bueno, mejor dicho, para no estropearlo, es usar apache (httpd) via tcpd wrappers con el inetd.conf. Si necesitas, por ejemplo, bloquear el acceso a alguien usa un .htaccesss usando un deny from y no usando inetd.conf. Apache es suficientemente seguro y configurable como para depender de tcp wrappers.
Para probar el rendimiento del apache, pueedes hacer un test que lleva incluido el propio apache. Es un ejecutable que se llama "ab" y está en el directorio /bin o /sbin. Este programa simula gran cantidad de tráfico para el Apache y es una muy buena manera de medir el rendimiento de tu apache.
Sino quieres que se muestre la versión del Apache que estás usando:
Busca ServerSignature y lo pones en off:
ServerSignature off
y añades debajo:
ServerTokens ProductOnly
De esta manera la versión de tu Apache será "Apache" a secas, sin decir la versión exacta (Ej. --> Apache 1.3.29).
------------------------------------------------------------- --- Configurando Apache versión httpd-2.0.40 como IIS 5.0. --- --------------------------------------------------------------
1)en el fichero: httpd-2.0.40/include/ap_release.h
Si en el apache-status está todo el rato "L", o sea "Logging", te está diciendo ni más ni menos, que purges (vacies los logs, pero antes analiarlos con Awstats, WebAlizer, etc), ya deben tener un tamaño consdirable, y al apache le cuesta mucho rato loggear, o ya no tiene espacio.
Si en el apache-status hay muchas conexiones "R", o sea "Reading", significa que las dns de tu dominio están haciendo el tonto (han caído temporalmente, o algo parecido).
La mejor manera para proteger el ancho de banda de tu apache es haciendo que nadie pueda linkarte descargas o imágenes. Las técinas de oculstimos en directorios raros o scripts PHP, no son métodos del todo efectivos.
El único requisito previo es tener activado el módulo rewrite.
Vamsos a ver un ejemplo haciendo un .htaccess en el directorio que queramos proteger y añadiendo:
Falta cambiar "site.com" y stop.gif with por tus nombres reales. Al intentar ver una imagen desde otro dominio aparece la imagen stop.gif.
¿verdad que es fácil? Modo mod_write activado y expresiones regulares y marchando.
Hay otras maneras, si tienes un descargas en archivos "zip", puedes proteger estes archivos mediante contraseña. También puedes incluir un readme o un .url dentro del zip.
Otra buena manera de proteger tu ancho de banda (especialmente en las descargas) es utilizando la "Autorización del Apache" que se ve en el punto 8.
Veamos ahora un ejemplo:
Queremos proteger el directorio descargas:
<Directory "/home/pepe/public_html/descargas"> AuthUserFile /home/pepe/htpasswd AuthType Basic AuthName "Escribe un nombre de usuario y contraseña" require valid-user </Directory>
De esta manera para descargar cualquier archivo o documento que haya en la carpeta descargas será necesario introducir un nombre de usuario y contraseña válida. De la misma manera si hay una carpeta dentro de descargas (descargas/otrasdescargas) quedará también automáticamente protegida.
Para aprender a crear el htpasswd consulta el punto 8.
Otra manera pasa por subir las descargas a otro lugar y sin borrarlas de tu maquina incluir este sencillo código:
Redirect permanent /descargas
Todas las descargas se bajarán de "miotraweb.com", aunque estén en nuestra máquina.
<Directory /privado> order deny,allow deny from all allow from ip1 allow from ip2 </Directory>
Autorización del Apache basada en usuario:
Primero crear el usuario con el binario (el binario, el .exe en windows, se encuentra por defecto en la carpeta bin del apache y en linux en /usr/local/apache/bin):
htpasswd -c htuser alex
Te pedirá la contraseña de alex dos veces.
Nos crea el archivo htuser que es donde está la contraseña de alex y tenemos que llamar a ese archivo en el httpd.conf
Ejemplo en Windows:
AuthUserFile "C:\Archivos de programa\Apache Group\Apache2\bin\htuser"
Ejemplos enn Linux: #el password está en el achivo htpasswd AuthUserFile /home/alex/htpasswd AuthUserFile conf/htuser AuthGroupFile conf/htgroup
El arhivo htuser debe estar en conf, y sino le dices la ruta
Lo mejor es poner este archivo de password fuera del httdocs que tengamos, ya que aunque la contraseña está encriptada, es mejor no jugarsela y que algún listillo nos crackee el pass.
Quedaría así:
<Directory /privado> AllowOverride None Options Index #donde está el fichero con lo passwords AuthUserFIle conf/htuser AuthGroupFile conf/htgroup #nombre del recurso AuthName "Privado" #tipo AuthType Basic require user alex pepe requiere group admin # o bien require valid-user </Directory>
Como hacer funcionar Apache cuando tienes una dirección IP dinámica, por ejemplo, una conexión PPP.
He investigado como utilizar dominios virtuales en Apache con una dirección IP dinámica, y estoy tan orgulloso de la solución que he encontrado, que voy a compartirla contigo
** (Nota, esto necesita la última versión de Apache (1.3.12) para funcionar **
Copia el fichero /usr/local/apache/conf/httpd.conf en /usr/local/apache/conf/httpd.conf.template y añade esto al final:
(NO cambies "----REPLACE_THIS_WITH_DYNIP----", ya que debe aparecer tal y como está
------------ [PARTE DE httpd.conf.template ] ------------
Me falta por explicar: - Explicarlo mejor y directivas del apache y falta explicar todos los módulos. - Explicar VHOST basado en IP. -Apache + SSL -Apache + Mod_GZIP -Explicar todas las opciones del php.ini -Explicar tipos de MIME. ________________________________________
Publicado: VAsunto: D e esto solo tengo una sus bueno yo baje el xampplite
loq pasa esq ami la pania q hice si me jala pero solo en mi ciudad como le hago para q almenos funcione en todo mexico,,la pagian q tengo solo la pueden ver mis amigos de mi ciudad,,,=S ayuda plaie
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro