7 votos

Apache 2.2 en Windows Server: no se inicia después de intentar cambiar la letra de unidad de todos los datos y registros de

Puedo administrar un servidor web que se ejecuta en Windows Server 2008 de 64 bits de host virtual. Todo el servicio se está ejecutando el software de forma independiente, y no como parte de un AMPLIFICADOR de la pila. La unidad de datos tiene casi llena y mi administrador de sistemas ha proporcionado una nueva unidad virtual con más espacio. Mi tarea es copiar todo lo de la vieja de volumen para el nuevo volumen.

A la hora de crear el volumen, me aseguré de que fue creado con el mismo tipo de volumen, sistema de archivos, tamaño de bloque, etc. Dejé de todos los servicios (Apache, MySQL, ambos de los cuales ejecución de C: pero cuyos datos se encuentran en D:, incluidos los registros), y copiar todos los archivos.

A partir de aquí, he probado con dos enfoques diferentes para la obtención de los servicios que dependen del volumen de nuevo, y olvidarse de los viejos. MySQL no tiene problemas en ambos sentidos, pero Apache no se puede iniciar como un servicio mediante cualquiera de los métodos. He aquí lo que aparece en el registro de sucesos del Sistema:

El Apache2.2 terminó con el error específico del servicio de función Incorrecta

No aparece nada en error.log.

Primero, he intentado simplemente cambiando las letras de unidad. Tomé el viejo D: y lo cambió a algo arbitrario, y asignado D: para el nuevo volumen. Esto produjo el error anterior. Traté de reiniciar el servidor con la nueva unidad de designaciones, "por si acaso", pero el mismo error. Porque no entiendo bien el Windows puntos de montaje, he cambiado las letras de unidad a lo que eran originalmente, y confirmó que el servicio de Apache comienza muy bien.

Segundo, he intentado simplemente la actualización de todos los Apache y MySQL archivos de configuración. Cada aparición de "D:" (mayúsculas y minúsculas) fue cambiado a F: (la nueva letra de unidad). Sé que los archivos de configuración de bien, así que yo sé que he encontrado cada ocurrencia. El error anterior ocurrió de nuevo, exactamente de la misma manera. Con el fin de obtener el servidor web en funcionamiento de nuevo, he revertido todos los cambios, y de los servicios que se inició correctamente.

Algo más de información que se reunieron:

  • httpd.exe se ejecuta correctamente cuando comenzó no como un servicio, desde la línea de comandos. No hay errores de sintaxis.
  • Incluso si se ejecuta desde la línea de comandos, Apache no se inicia como un servicio (httpd.exe -k runservice).
  • El problema es que probablemente no es uno de permisos de acceso a archivos. Me irregular marcada de lugares clave (un par de directorios, los archivos de registro), y los permisos eran idénticos. Sin embargo, hice la prueba de forma exhaustiva.

Una cosa que yo no probado es intentar mover uno solo de los datos y la ubicación de los registros a la nueva unidad, y dejar el otro como es. Yo no creo que era probable que para hacer una diferencia.

... Que dijo, yo en realidad no sé lo que está pasando aquí. Yo no puedo pensar en ninguna razón por la que Apache estaría fallando para que se ejecute como un servicio cambiando la ubicación de los archivos de registro y de datos.

Yo aprecio mucho cualquier sugerencia o consejo sobre este asunto. Estoy feliz de investigar más a fondo en respuesta a las sugerencias. Si alguno de ustedes piensa que vale la pena intentar mover sólo uno de los elementos (registros o datos) como se ha mencionado, voy a probar eso. Del mismo modo, si alguno de ustedes creo que he sido demasiado apresurado el descuento de permisos, voy a hacer un examen más exhaustivo.

Cualquier y todas las contribuciones son bienvenidas! He agotado todas mis ideas.

3voto

nmjk Puntos 178

Al día siguiente, dentro del tiempo asignado ranura para deshabilitar el servidor principal de la funcionalidad, fui a probar algo nuevo y tuvo un nuevo pensamiento que terminó de resolver el problema! Los detalles son como sigue, en el contexto de las medidas que tomó.

Empecé por repetir el segundo enfoque de la pregunta original. Me paré de servicios, re-copiado todos los archivos (para la captura de modificaciones en el último día), y editado el Apache y MySQL archivos de configuración a la nueva unidad (F:). Me confirmó que el Apache se produce el mismo error. Ya que tenía los archivos de configuración abierta, me decidí a probar lo que no probé inicialmente (y debe tener):

  • Puedo restablecer los archivos de configuración por lo que fueron de vuelta a su estado original, apuntando a la unidad (D:).
  • He actualizado únicamente las referencias a los archivos de registro a la nueva unidad (F:) y prueba el servicio de Apache -- el mismo error que antes.
  • Me devolvió el archivo de registro de referencias a D: y actualizado los datos de las referencias a F: -- ¡FUNCIONÓ! De nuevo, yo realmente debería haber intentado esto ayer. Lo que he aprendido de este paso fue que se trataba de los archivos de registro que fueron el problema.
  • Dado que sólo hay dos archivos (access.log y error.log), he forzado el permiso de cambios: añadido/quitado readonly (sólo en el caso), se aseguraron de que el usuario de apache había recursiva acceso de escritura a través de los directorios, y a los propios archivos.
  • Actualizado el archivo de registro de referencias a F: -- el mismo error que antes.
  • En una corazonada, he cambiado el nombre de los dos archivos de registro (una técnica común para la rotación de archivos de registro) y el intento de iniciar el servicio, esperando que las nuevas versiones de los nombres de archivo originales aparecería -- lo hicieron! El servicio se inició con éxito! La victoria!!!

Lo que he aprendido: en realidad, yo no estoy del todo seguro. Si yo no hubiera sido tan minucioso con varios pasos de mi investigación, yo sospecho problemática identificadores de archivo o algo, pero no puedo ver cómo eso sería posible pasado de un reinicio. Sin embargo, me han confirmado el valor de no demasiado rápido descartando posibilidades, mientras que la solución de un problema. Como he mencionado en la pregunta, yo no creo que hoy en día la línea de investigación era probable que para hacer una diferencia, y yo todavía no sé por qué lo hizo! Pero usted no puede discutir con los resultados.

Conclusión: mi problema ha sido resuelto, pero no sé por qué. Si alguien tiene una teoría, por favor, ¡compártelo!

2voto

Massood Khaari Puntos 111

No tengo idea de por qué cambiar la letra de unidad causa el problema. Pero el error The service terminated with service-specific error Incorrect function en los Servicios de Windows es generalmente debido a la escasez de memoria RAM física.

Compruebe los Requisitos Mínimos del Sistema en Apache docs y, si es necesario, trate de cerrar los programas innecesarios.

1voto

user193130 Puntos 101

Me encontré con el mismo problema con mod_wsgi usando WSGIPythonHome. De nmjk la respuesta, me decidí a comprobar los permisos y se dio cuenta de que el usuario de Apache no tenía permisos para la WSGIPythonHome directorio. Después de agregar los permisos adecuados, Apache inicia normalmente.

Tal vez vale la pena chequear los permisos para todas las rutas especificadas por la configuración y los comentarios fuera de línea por línea de las configuraciones que contienen una ruta de acceso para averiguar qué está causando el problema.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: