Tengo un comando para iniciar Apache /etc/rc3.d
que 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.d
encuentra todos los archivos /etc/rc3.d
que comienzan con 'S' y los ejecuta en orden numérico.
Eso te deja con Comenzando desde lo básico:
¿Es
/etc/rc3.d/S75Apache2
el conjunto ejecutable?¿Ese script tiene un '#!' ¿línea? ¿Es correcta la línea (sin bytes que no sean imprimibles, etc.)?
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.Si puede ejecutar ese script como root, inténtelo:
/etc/rc3.d/S75Apache2 start
y/etc/rc3.d/S75Apache2 stop
verifique cuidadosamente si se iniciahttpd
y se detienehttpd
. Como mínimo, ejecute usted mismo el script con los argumentos 'iniciar' y 'detener'. Úseloset -x
para ver qué hace el script en tiempo de ejecución. Comprueba si lo que hace coincide con lo que crees que hace.Lea
/etc/rc3.d/S75Apache2
cuidadosamente.PATH
está 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í.Asegúrese de que
KnnApache2
no exista un script en/etc/rc3.d
. Creo que Solarisinit
se ejecutará (por ejemplo)K76Apache2 stop
cuando pase del nivel de ejecución 3 al nivel de ejecución 5.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 start
con algunos comandos de prólogo, pero si lo ejecutahttp
directamente, asegúrese de que elhttpd
proceso resultante tenga la ID de usuario correcta. Utilicesudo
o 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.