El script de inicio no se ejecuta después de reiniciar en Solaris

El script de inicio no se ejecuta después de reiniciar en Solaris

Tengo un comando para iniciar Apache /etc/rc3.dque no se ejecuta cuando se reinicia el servidor. El guión se llama S75Apache2. Alguien ha especulado que esto se debe a que el enlace tiene una "A" mayúscula en el nombre y podría funcionar si se le cambia el nombre a S75apache2.

¿Alguien puede confirmarlo? He buscado documentación pero no encuentro una respuesta. Realmente no puedo probar esto sin reiniciar el servidor nuevamente (lo cual preferiría no hacer).

Respuesta1

Los scripts de inicio de Solaris son una molestia. La A mayúscula no importa, hay un script que /etc/rc.dencuentra todos los archivos /etc/rc3.dque comienzan con 'S' y los ejecuta en orden numérico.

Eso te deja con Comenzando desde lo básico:

  1. ¿Es /etc/rc3.d/S75Apache2el conjunto ejecutable?

  2. ¿Ese script tiene un '#!' ¿línea? ¿Es correcta la línea (sin bytes que no sean imprimibles, etc.)?

  3. Si es un script bash o ksh, ejecútelo como ksh -n /etc/rc3.d/S75Apache2 start. Eso te dirá si tiene errores de sintaxis.

  4. Si puede ejecutar ese script como root, inténtelo: /etc/rc3.d/S75Apache2 starty /etc/rc3.d/S75Apache2 stop verifique cuidadosamente si se inicia httpdy se detiene httpd. Como mínimo, ejecute usted mismo el script con los argumentos 'iniciar' y 'detener'. Úselo set -xpara ver qué hace el script en tiempo de ejecución. Comprueba si lo que hace coincide con lo que crees que hace.

  5. Lea /etc/rc3.d/S75Apache2cuidadosamente. PATHestá escasamente poblado en el momento del arranque, y es posible que su secuencia de comandos no sepa dónde están algunos ejecutables en el momento del arranque, pero podría hacerlo cuando se ejecute después del arranque. Trate de no asumir demasiado: es posible que no existan los archivos que usted cree que existen, cosas así.

  6. Asegúrese de que KnnApache2no exista un script en /etc/rc3.d. Creo que Solaris initse ejecutará (por ejemplo) K76Apache2 stopcuando pase del nivel de ejecución 3 al nivel de ejecución 5.

  7. Asegúrese de que el script cambie la ID de usuario de forma adecuada. Probablemente esto no sea importante para Apache, dado que su script probablemente solo llame apachectl startcon algunos comandos de prólogo, pero si lo ejecuta httpdirectamente, asegúrese de que el httpdproceso resultante tenga la ID de usuario correcta. Utilice sudoo algo en el guión para hacerlo bien.

Respuesta2

Resulta que HABÍA un error en el script de inicio: la variable LD_LIBRARY_PATH no estaba configurada correctamente. Definir eso en el script solucionará el problema.

Para referencia futura, hay un archivo de registro que contiene mensajes de inicio que contenían el error que llevó a resolver nuestro problema. El archivo es:

/var/svc/log/milestone-multi-user-server:default.log

Encontré una referencia a esto en el archivo /etc/rc3.d/README. ¡Otro día, otra pepita de conocimiento!

Respuesta3

¿Ha desarrollado su propio Apache (es decir, lo ha compilado a partir del código fuente) o simplemente está utilizando el Apache que viene preinstalado con Solaris 10?

Bueno, realmente no importa, si estás en Solaris 10 (o posterior) como dicesNo deberías utilizar scripts de inicio de Solaris en absoluto., deberías utilizar SMF. (Sí, técnicamente los scripts de inicio todavía son compatibles, pero como usted señala, son una molestia y SMF es mucho mejor)

Para iniciar (ahora, y también automáticamente después de reiniciar) el servidor web Apache 2.2 que viene preinstalado con Solaris 10, simplemente haga esto:

svcadm habilitar /red/http:apache2

Si ha implementado su propio Apache, entonces necesita crear un manifiesto SMF, importar el manifiesto y listo. Simplemente busque en Google "SMF Solaris" y encontrará muchas recetas.

información relacionada