Si vas a copiar

.. y pegar este post en tu web o blog personal, por favor te pido que coloques el link del post de donde lo copiastes:

Fuente:

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

Apache error: winnt_accept: Asynchronous AcceptEx failed.

19 de abril de 2013 No hay comentarios.:
Si tienes Apache instalado en Windows y te encuentras con este error en el error.log:

[warn] (OS 996)El evento superpuesto de E/S no es un estado señalado. : winnt_accept: Asynchronous AcceptEx failed.

Tambien puede tener problemas cargando paginas, por ejemplo Firefox muestra este error, no siempre lo muestra pero cada cierto tiempo (a mi me paso)

La conexión al servidor fue reiniciada mientras la página se cargaba

Existe una solucion provisional ya que todavia no se sabe la verdadera causa del error

Quizas sea el firewall o antivirus asi que chequea eso primero
El problema mas relacionado con este error es el DHCP, problemas con las IPs dinamicas

Segun en la documantacion de Apache, AcceptEx() es una API de Microsoft WinSock v2 que provee en ciertas circuntancias buenos resultados por encima de la API de BSD accept(). Algunos programas para Windows, como antitirus o firewall, tienen bugs que interfieren con la operacion de AcceptEx()

 

Solucion:


Esta solucion es para evitar el uso de AcceptEx() usando la directiva Win32DisableAcceptEx. Esta opcion esta disponible a partir de la version 2.0.49 de Apache


  1. Edita el archivo httpd.conf
  2. Busca esta linea en el archivo: EnableMMAP
  3. Veras que esta comentada
  4. Descomentala
EnableMMAP off
EnableSendfile off

Win32DisableAcceptEx
Luego reinicia Apache

NOTA: si tienes problemas despues de haber habilitado la opcion Win32DisableAcceptEx, intenta dejandolo sin Win32DisableAcceptEx:

EnableMMAP off
EnableSendfile off


FUENTE (ingles)


Publicado en tttony.blogspot.com

Restringir la entrada de usuarios a ciertos archivos con .htaccess en Apache

5 de diciembre de 2012 No hay comentarios.:
Si deseas restringir el acceso a usuarios a ciertos archivos o carpetas, puedes hacerlo con el archivo .htaccess

Primero crea los usuarios con sus respectivas contraseñas, para esto usaremos la utilidad: htpasswd.exe que esta en la carpeta bin del Apache, tambien es valido para Linux

htpasswd.exe -csb .htpasswd tttony test
htpasswd.exe -sb .htpasswd prueba test

NOTA: en el segundo comando no es necesario crear de nuevo el archivo ya que fue creado con el primer comando
 Aqui tienes una utilidad online para crear usuarios y aqui la documentacion de la utilidad htpasswd.exe pero esta en ingles

Con este comando se creara un archivo llamado .htpasswd(aunque puedes colocarle el nombre que quieras) en el directorio bin pero preferiblemente muevelo a un directorio no accesible desde la web, es decir, fuera del directorio htdocs

Aqui esta el contenido del archivo .htaccess

#
# Acceso restringido a archivos a ciertos usuarios
#

# Directorio del archivo .htpasswd
AuthUserFile directorio/inaccesible/desde/la/web/.htpasswd

# Una descripcion
AuthName "Area restringida, solo acceso a usuarios"
AuthType Basic

# El archivo privado.php es solo accedido por el usuario tttony
<Files ~ "^privado.php$">
 Require user tttony
</Files>

# Mientras que los archivos que no son privado.php
# son accedidos por el usuario prueba
<Files ~ !"^privado.php$">
 Require user prueba
</Files>


En este caso el archivo privado.php solo es accedido por el usuario tttony y al acceder te pedira la contraseña



Publicado en tttony.blogspot.com

PHP y las URLs amigables con el mod_rewrite de Apache

13 de diciembre de 2008 No hay comentarios.:
Aqui estoy despues de tanto tiempo sin escribir por aca, esta vez les dare instrucciones de como usar el modulo: mod_rewrite del servidor Apache pero en primer lugar para poder usar este modulo hay que hacer unas modificaciones:

Las pruebas las hare con el siguiente sistema:

Windows XP SP3 [Apache Server 2.0.63] [PHP 5.2.6]

Aqui esta la guia oficial del modulo mod_rewrite el problema es que esta en ingles.


El modulo mod_rewrite cuando esta activado puedes usar reglas en expresiones regulares tanto para esta url:

http://midominio.com/index.php?s=categorias&ss=ropa&id=franelas

como esta:

http://midominio.com/categorias/ropa/franelas


Las dos son validas pero la segunda es mucho mejor.


Antes que nada para poder usar el mod_rewrite debemos configurar Apache de esta manera:

1. Editar el archivo httpd.conf del directorio conf de Apache la direccion del archivo mas o menos seria:

C:\Archivos de programa\Apache Group\Apache2\conf

Puedes abrir el archivo con el bloc de notas y busca esta sentencia en el archivo:

AllowOverride None

La cambias a:

AllowOverride All

De esta manera ahora se tendra acceso al archivo .htaccess del servidor


2. Activar el modulo mod_rewrite ya que en esta version no viene activada por defecto ahora en ese archivo busca esta linea que contenga:

#LoadModule rewrite_module modules/mod_rewrite.so

Quitale el (#) numeral para que cargue el modulo mod_rewrite.so:

LoadModule rewrite_module modules/mod_rewrite.so

3. Reiniciar el Apache.


Puedes hacer una prueba para ver si Apache lee el archivo .htaccess antes de enviar la URL, puedes reproducir un error escribiendo lo que quieras en el archivo .htaccess por ejemplo en el directorio principal C:\Archivos de programa\Apache Group\Apache2\htdocs creas un archivo .htaccess de la siguiente manera:

--> Click derecho en el directorio --> Nuevo --> Documento de texto

Luego abres el archivo con el Bloc de notas escribes cualquier cosa y luego Menu Archivo --> Guardar como...

Nombre: .htaccess
Tipo: Todos los archivos

Click en Guardar

Para ver si Apache accede al archivo .htaccess ve a la direccion:

http://localhost/


Y te aparecera el error: "Internal Server Error"



Ahora pasamos a hacer pruebas con PHP vamos a crear un archivo index.php en este directorio:

C:\Archivos de programa\Apache Group\Apache2\htdocs

Escribe esto en el archivo index.php:


<?php

print_r($_GET);

?>


Ahora editar el archivo .htaccess antes guardado en:

C:\Archivos de programa\Apache Group\Apache2\htdocs

Escribe esto en el archivo .htaccess:

Options +FollowSymLinks -Indexes

# activar el re-escrito de las URLs
RewriteEngine On

# Si la URL NO es un archivo
RewriteCond %{REQUEST_FILENAME} !-f
# Si la URL NO es un directorio
RewriteCond %{REQUEST_FILENAME} !-d

# Entonces enviar la URL amigable al archivo index.php
RewriteRule ^(.*)$ index.php?query_string=$1 [L]


Aqui puedes descargarte una chuleta del mod_rewrite en formato PNG o PDF esta en ingles, a ver si me animo y hago uno en español.

Haz una prueba y escribe esto en el navegador:

http://localhost/esto/es/una/url/amigable/que/se/extiende/bastante/mas/y/mas

Vera algo como esto en la salida del archivo index.php

Array
(
[query_string] => esto/es/una/url/amigable/que/se/extiende/bastante/mas/y/mas
)



Viendo estos ejemplo tanto del contenido del .htaccess, index.php y la salida en el navegador ya se va teniendo una idea de lo que hace el modulo mod_rewrite de Apache, si el modulo no estuviese activado Apache te lanzaria un error intento esto para reproducir el error, en el archivo .htaccess cambia esto:

RewriteEngine On

Por esto:

RewriteEngine Off

Escribe en el navegador:

http://localhost/esto/es/una/url/amigable/que/se/extiende/bastante/mas/y/mas

Y como veras te lanzara un error 404 Not Found.


Para saber que URL le esta llegando al archivo index.php tienes que parsear la URL de esta manera:



<?php

// ejemplo: http://midominio.com/ropa/franelas/quicksilver-html
$url = explode( "/", $_SERVER['REQUEST_URI'] ); // separar el array con / slash
$seccion = $url[0]; // ropa
$subseccion = $url[1]; // franelas
$contenido = $url[2]; // quicksilver-html

?>


NOTA: este post se actualizara periodicamente. Ultima actualizacion: 22/02/09



Publicado en tttony.blogspot.com

Instalar Apache, PHP, MySQL en Windows XP/7

25 de enero de 2008 52 comentarios:
Antes de empezar con el tutorial les voy a recomendar una serie de programas/herramientas que te ayudaran a facilitar la instalacion de Apache + php + MySQL + phpMyAdmin

WAMP
(Apache + MySQL + php)

AppServ
(Apache + php + MySQL + phpMyAdmin)


Apache + php + MySQL + phpMyAdmin, entre otros...
(100% recomendado te ahorras todos los otros procedimientos descritos mas abajos y ademas es portable)

 

Tutorial para la instalacion de Apache, MySQL y PHP


Requisitos:

Windows XP, Windows 7 (x32/x64)

NOTA: la version PHP 5.3 requiere Apache 2.2 asi que no lo bajen, ya que Apache 2.2 viene con una configuracion predeterminada muy distinta que la version 2.0.59 el cual uso en este tutorial, es por eso que recomiendo encarecidamente usar XAMPP


PHP 5.2.5 (click aqui para una nueva version, baja la version que venga en un archivo .zip la version VC6 x86 Thread Safe

Apache Server 2.0.59 (click aqui para la nueva version hasta ahora es la 2.2.8)

NOTA IMPORTANTE: debido a que en versiones reciente de Apache la configuracion no es la misma, recomiendo que usen la version 2.0.59 que la pueden descargar de aqui


MySQL 5.0.7 (click aqui para un nueva version hasta ahora es la 5.0.45) te recomiendo que te bajes (Windows Essentials (x86 o x64 segun sea tu caso))


Bueno teniendo todo eso empecemos a instalar y a configurar:
-----------------------------------------------------------------------------------------------



Instalar php

NOTA IMPORTANTE: es recomendable que extraer los archivos de php en un directorio como: C:\php5

Entra en el directorio antes de php ej: C:\php5 y renombra el archivo php.ini-recommended a php.ini, ese el archivo de configuracon de php, ahora toca configurarlo

Abre el archivo php.ini con el Bloc de notas y luego:

Busca el valor: doc_root

Decirle a php donde esta carpeta principal del servidor Apache:

doc_root = "C:\Archivos de programa\Apache Group\Apache2\htdocs"


Decirle a php donde esta carpeta de las extensiones:

extension_dir = "C:\php5\ext"


Para que la extension de MySQL funcione en php debes quitarle el (punto y coma ";") que tiene al principio:

Asi esta:

;extension=php_mysql.dll


Dejarlo asi:

extension=php_mysql.dll


Bien eso es lo esencial en el archivo php.ini y si quieres usar otras extensiones solo quitas el (punto y coma ";") que tiene al principio y reinicias Apache para que tenga efecto.

Muy bien hasta aqui ya hemos instalado el php pero nos hace falta un ultimo paso y es el siguiente:

Agregar el directorio de php a una Variable de entorno:

Windows XP
Click derecho en MiPC --> Propiedades --> Pestaña: Opciones avanzadas --> click en el boton: Variables de entorno

Luego abajo en variables del sistema busca y modifica la variable Path

Windows 7
Click derecho en MiPC --> Propiedades --> En la parte izquierda haz click en: Configuracion avanzada del sistema --> Pestaña: Opciones avanzadas --> click en el boton: Variables de entorno

Luego abajo en variables del sistema busca y modifica la variable Path


En el valor de la variable situate al final del valor que tenga escrito y escribes:

;C:\php5
NOTA: es importante que tenga el punto y coma ; antes de la C

Luego click en Aceptar

Listo ahora php esta instalado

-----------------------------------------------------------------------------------------------




Instalar Apache


Es muy sencilla la instalacion no requiere de mucha tecnica solo dejas que lo instales y finalizalo, al finalizar se ejecutara como servicio automaticamente, luego abres tu navegador y escribes en la barra de direcciones:

http://localhost


y debe aparecerte una pagina que te dice:

¡Funcionó! ¡El Servidor de Red Apache ha sido instalado en ese sitio!.

subir imagenes

Muy bien ahora tienes un servidor Web en tu casa donde por los momentos solo podras alojar paginas .html

Ahora configuremos el Apache para que ejecute scripts .php, primero nos iremos al directorio de Apache mas o menos como este: C:\Archivos de programa\Apache Group\Apache2 (Si es la version 2.0.x) luego abres la carpeta conf y edita el archivo httpd.conf con el "Bloc de notas" y al final de este archivo coloca esto:


# NOTA: es importante saber que todos los directorios que coloque en este archivo NO deben de tener el slash invertido \ sino el slash normal / el de dividir


# Coloca esta linea si usas apache 2.0.x
LoadModule php5_module "c:/php5/php5apache2.dll"
# o coloca esta linea si usas apache 2.2.x (gracias a hmst27)
LoadModule php5_module "c:/php5/php5apache2_2.dll"
# Decirle a Apache que tipo de archivos debe manejar php
AddType application/x-httpd-php .php

# Decirle a Apache el directorio donde esta el archivo php.ini
PHPIniDir "C:/php5"


Reinicia el Apache para que los cambios tengan efecto

Ahora prueba un script hecho en php y veras que se ejecuta por ej crea un archivo llamado: phpinfo.php y escribe esto en el archivo:



<?php

// Informacion sobre php
phpinfo();

?>



Y lo guardas en el directorio de Apache que puede ser este: C:\Archivos de programa\Apache Group\Apache2\htdocs abres tu navegador y escribes en la barra de direcciones:

http://localhost/phpinfo.php




Y debera mostrarte la informacion de php, ahora tienes instalado el php

-----------------------------------------------------------------------------------------------



Instalar MySQL

Este el menos complicado y mas facil de instalar solo bajate la ultima version y al final de la instalacion te pedira que configures el MySQL a tu gusto trata de no cambiar esta configuracion y dejala como esta, recuerda que debes escribir un nombre de usuario y una contraseña el cual te servira para conectarte a MySQL, en caso de que no te funcione puedes volver a configurarlo solo tiene que ir al:

Menu inicio --> Programas --> MySQL --> MySQL Server 5.0 --> MySQL Server Instance Config Wizard


Es recomendable no cambiar el puerto, dejenlo en 3306
Recomiendo codificacion utf8, para no tener problemas con caracteres raros

Para saber si MySQL está bien instalado puedes usar estas herramientas aqui y otras utilidades, el MySQL Query Browser es bueno para saber si esta bien instalado el servidor MySQL, ingresas tu nombre y contraseña que previamente en la instalacion creastes, desde alli puedes hacer consultas en MySQL o creas un archivo llamado por ej: connection.php(lo guardas el en htdocs del directorio de Apache) y pegas esto:


<?php

/*
 * Probar conexion con MySQL
 */

$link =  mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('No pudo conectarse: ' . mysql_error());
}
echo 'Conectado  satisfactoriamente';
mysql_close($link);

?>


Luego abres tu navegador y escribes:


http://localhost/connection.php



Tambien te recomiendo instalar phpMyAdmin para crear, borrar, editar: base de datos, tablas, etc...



NOTA: este articulo se actualizara periodicamente. Ultima actualizacion 10/11/12



Publicado en tttony.blogspot.com

Configuracion del VirtualHost del Apache para WindowsXP SP2

5 de septiembre de 2007 No hay comentarios.:
Esto es un pequeño tutorial de como configurar el VirtualHost del Apache en WindowsXP SP2

Cuando se trabaja en proyectos web es recomendable tener un virtual host para hacer sus practicas en casa o en el trabajo, esto ayuda a tener todo bien organizado, por ejemplo, tienes tres proyectos webs: tienda de ropa, restaurante, empresa computadoras.

Teniendo el Apache instalado en el directorio tendrias que crear un directorio por proyecto:

...../htdocs/tienda-ropa/
...../htdocs/restaurante/
...../htdocs/empresa/

El acceso seria mas o menos este desde el navegador:

http://localhost/tienda-ropa/
http://localhost/restaurante/
http://localhost/empresa/

Como ven es algo largo es por eso que con los virtual host se hara algo mas profesional que quedaria asi:

http://tienda-ropa/
http://restaurante/
http://empresa/


¿Que es VirtualHost? [ingles]

Es un metodo que servidores como Servidores Web usan para hostear mas de un dominio en una misma maquina, alguna veces con la misma direccion IP


Lo que se necesita:

Windows XP SP2
Apache 2.0.59 (la ultima version aqui hasta hoy es la version 2.2.4)


Ok vamos al grano por pasos: (si sigues paso a paso todo te saldra bien de lo contrario no se que pueda pasar)

1. Ve a este directorio: C:\WINDOWS\system32\drivers\etc tiene que haber un archivo llamado: hosts (solo hosts sin extension) si no lo tienes crea uno pero recuerda SIN EXTENSION pero si lo tienes entonces abrelo con el NOTEPAD o BLOC DE NOTAS, borra su contenido y escribe esto algo como esto:


#localhost
127.0.0.1 localhost
#tttony page
127.0.0.1 www.tttony.com
#tttony blog
127.0.0.1 blog.tttony.com
#Pruebas (ESO MISMO)
127.0.0.1 www.tttony-pruebas.com


Como veras aqui se pueden alojar varios dominios con una misma IP.

Precisamente asi tengo el mio por los momentos solo lo tengo para pruebas en casa si quieres cambias a tu gusto. Lo guardas y recuerda SIN EXTENSION.


2. Ahora nos tocara hacer unos cambios en el archivo httpd.conf del directorio del Apache mas o menos este C:\Archivos de programa\Apache Group\Apache2\conf

Abrelo con el BLOC DE NOTAS:

Busca: NameVirtualHost coloca esto:

NameVirtualHost *:80

Si tiene el signo # (NUMERAL) delante significa que no esta activo solo quitalo para activarlo mas abajo escriba esto:


Ahora ve hasta el final del archivo y agrega esto:

#----------------------------------------------------------------------------------------
# HOSTING VIRTUALES - INICIO
#----------------------------------------------------------------------------------------

#localhost predeterminado
<virtualhost *:80>
# RECUERDA COLOCAR TU DIRECTORIO ENCERRADO ENTRE COMILLAS
# Y SIN EL SLASH AL FINAL # AH Y TAMBIEN RECUERDA QUE TODOS LOS DIRECTORIOS
# QUE COLOQUES QUE EN EL ARCHIVO NO DEBEN TENER EL
# SLASH INVERTIDO \
# CAMBIALO POR EL OTRO /

DocumentRoot "C:/Archivos de programa/Apache Group/Apache2/htdocs"
ServerName localhost:80

</virtualhost>

#tttony page
<virtualhost *:80>

DocumentRoot "C:/Archivos de programa/Apache Group/Apache2/htdocs/www/tttony.com"
# NOMBRE DEL SERVER
ServerName www.tttony.com

</virtualhost>


#tttony Blog
<virtualhost *:80>

ServerAdmin blog@blog.tttony.com
DocumentRoot "C:/Archivos de programa/Apache Group/Apache2/htdocs/www/tttony.com/blog"
ServerName blog.tttony.com

</virtualhost>


#Pruebas (ESO MISMO)
<virtualhost *:80>

ServerAdmin pruebas@tttony-pruebas.com
DocumentRoot "C:/Archivos de programa/Apache Group/Apache2/htdocs/www/tttony-pruebas.com"
ServerName www.tttony-pruebas.com

</virtualhost>

#----------------------------------------------------------------------------------------
# HOSTING VIRTUALES - FINAL
#----------------------------------------------------------------------------------------





A ver explicare un poco que es lo que se hace aqui:

El localhost es para el dominio predeterminado

Todos son creados con la misma IP (recuerda que esto es solo una prueba y que nadie puede acceder a tu PC por eso tienen la IP 127.0.0.1) si quieres apacecer en internet ya tienes que hacer otras cosillas como por ej: Registrar un Dominio para que te redireccione a tu server, pero eso es otra cosa y no lo estare tratando aqui.

Siguiendo el tema... ves que puedes crear practicamente un Hosting con esto... es facil aunque no tanto... detras de todo eso existen muchas otras que hacer y cuidar.

Si tienes mas dudas puede consultar aqui esta en español y ciertos temas en ingles.


Ultima actualizacion: 26/02/09


Publicado en tttony.blogspot.com

Buscar en el Blog



PUBLICIDAD