Se si installa Sun ONE Application Server nell'ambito di un'installazione di Solaris, l'avvio del server genera diversi problemi:
Tutte le istanze del server di applicazioni e del server di amministrazione vengono avviate automaticamente durante l'avvio del sistema Solaris. In molti ambienti, non tutte le istanze dovrebbero essere avviate automaticamente durante l'avvio del sistema Solaris. L'avvio di tutte le istanze definite può avere un impatto considerevole sulla memoria disponibile sul sistema.
Quando le istanze del server di applicazioni e del server di amministrazione vengono avviate automaticamente, lo script di avvio di ogni istanza viene eseguito come utente root. In questo modo, gli utenti non root possono ottenere l'accesso di utente root mediante la modifica degli script di avvio a livello delle istanze.
Durante l'installazione di Sun ONE Application Server, vengono installati lo script /etc/init.d/appserv e i collegamenti simbolici agli script S84appserv e K05appserv nelle directory /etc/rc*.d/. Questi script fanno sì che tutte le istanze del server di applicazioni e del server di amministrazione definite all'interno dell'installazione di Application Server vengano avviate e arrestate automaticamente durante l'avvio e l'arresto del sistema Solaris.
Lo script /etc/init.d/appserv contiene la seguente parte di codice:
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
L'esecuzione del comando asadmin start-appserv fa sì che l'istanza del server di amministrazione e tutte le istanze del server di applicazioni definite nei domini di amministrazione vengano avviate durante l'avvio del sistema Solaris. Poiché gli script di avvio e di arresto del sistema vengono eseguiti dall'utente root, anche gli script di avvio delle istanze del server di applicazioni e del server di amministrazione vengono eseguiti come tali. Lo script di avvio a livello di istanza è denominato startserv e si trova in instance-dir/bin/startserv. Poiché le istanze possono essere possedute anche da utenti diversi da root, gli script startserv potrebbero essere modificati da tali utenti per abilitare l'esecuzione dei comandi come superutente.
Se un'istanza utilizza una porta di rete privilegiata, lo script startserv di quell'istanza deve essere eseguito come utente root. In genere, tuttavia, viene impostato il parametro run as user nella configurazione dell'istanza per forzarne l'esecuzione da parte dell'utente specificato dopo l'avvio iniziale da utente root.
Soluzione: adottare una delle soluzioni seguenti, in base all'ambiente in uso:
Se l'ambiente non richiede che tutte le istanze del server di applicazioni e del server di amministrazione vengano avviate dall'utente root, commentare l'esecuzione dei comandi asadmin start-appserv e asadmin stop-appserv nello script /etc/init.d/appserv.
Se l'ambiente richiede l'avvio di specifici domini amministrativi o di istanze specifiche all'interno di uno o più domini amministrativi, è possibile modificare o creare uno script per automatizzare questo processo. Si noti che tali specifici domini amministrativi includono l'istanza del server di amministrazione e tutte le istanze del server di applicazioni di ogni dominio.
Usare una delle procedure seguenti:
Modificare lo script /etc/init.d/appserv per avviare i domini o le istanze di interesse.
Definire nuovi script /etc/rc*.d/ in base alle esigenze del proprio ambiente.
Considerazioni sull'avvio: Per modificare gli script di avvio di Solaris in modo da avviare automaticamente domini amministrativi specifici del server di applicazioni o istanze specifiche del server di applicazioni, considerare quanto segue:
Avvio di un dominio specifico – Se si desidera avviare l'istanza del server di amministrazione e tutte le istanze del server di applicazioni di uno specifico dominio amministrativo come utente root, modificare gli script /etc/rc*.d/ come segue:
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
Avvio di un'istanza specifica del server di applicazioni come utente non root – Modificare gli script /etc/rc*.d/ per l'uso del comando su con l'opzione -c.
case "$1" in 'start') su - usera -c "/usr/sbin/asadmin start-instance --domain test-domain instance-a" su - userb -c "/usr/sbin/asadmin start-instance --domain test-domain instance-b" ;; 'stop') su - usera -c "/usr/sbin/asadmin stop-instance --domain test-domain instance-a" su - userb -c "/usr/sbin/asadmin stop-instance --domain test-domain instance-b" ;;
Per maggiori informazioni sui comandi startup e shutdown disponibili tramite l'interfaccia dalla riga di comando di asadmin, vedere il manuale Sun ONE Application Server 7 Administrator's Guide all'indirizzo http://docs.sun.com/db/prod/s1.asse.