Plusieurs problèmes sont liés au démarrage du serveur d'applications lorsque Sun ONE Application Server est installé en tant que partie intégrante de l'installation Solaris.
Toutes les instances du serveur d'applications et du serveur d'administration sont démarrées automatiquement lors du démarrage du système Solaris. Dans un grand nombre d'environnements, toutes les instances ne sont pas censées démarrer automatiquement au démarrage du système Solaris. En effet, le démarrage de toutes les instances définies peut avoir une incidence défavorable sur la mémoire disponible sur un système.
Lorsque les instances du serveur d'applications et du serveur d'administration sont démarrées de façon automatique, le script de démarrage de chaque instance est exécuté en tant que superutilisateur (root). L'exécution des scripts de démarrage d'une instance appartenant à un utilisateur non superutilisateur peut permettre à celui-ci d'accéder au superutilisateur par la modification des scripts de démarrage au niveau de l'instance.
Lors de l'installation du serveur d'applications Sun ONE, le script /etc/init.d/appserv et les liens symboliques vers les scripts S84appserv et K05appserv dans les répertoires /etc/rc*.d/ sont installés. Ces scripts provoquent le démarrage et l'arrêt automatiques des instances de serveur d'applications et de serveur d'administration, définies comme faisant partie de l'opération d'installation du serveur d'applications, au démarrage et à l'arrêt du système Solaris.
Le script /etc/init.d/appserv contient la section de code suivante :
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
L'exécution de la commande asadmin start-appserv provoque le démarrage de l'instance de serveur d'administration et de toutes les instances de serveur d'applications, définies dans tous les domaines d'administration, au démarrage du système Solaris. Le script de démarrage de chaque instance du serveur d'applications et du serveur d'administration étant exécuté en tant que superutilisateur, il en va de même pour les scripts de démarrage et d'arrêt du système. Le script de démarrage au niveau de l'instance est appelé startserv et se trouve dans le répertoire instance-dir/bin/startserv. Les scripts startserv peuvent être modifiés par l'utilisateur non superutilisateur dans le cadre de l'exécution de commandes en tant que superutilisateur, étant donné que les instances peuvent appartenir à des utilisateurs autres que les superutilisateurs.
Si une instance utilise le port réseau privilégié, son script startserv doit être exécuté en tant que superutilisateur. Cependant, run as user est normalement défini dans la configuration de l'instance, afin de forcer l’instance à s’exécuter en tant qu’utilisateur spécifié après son démarrage par l'utilisateur root.
Solution : choisissez l'une des solutions proposées ci-dessous, en fonction de votre environnement.
Si votre environnement ne requiert pas le démarrage de toutes les instances du serveur d'applications et du serveur d'administration en tant que root, commentez l'exécution des commandes asadmin start-appserv et asadmin stop-appserv dans le script /etc/init.d/appserv.
Si votre environnement requiert le démarrage de domaines d'administration spécifiques ou d'instances spécifiques sur un ou plusieurs domaines d'administration, vous pouvez modifier ou créer un script pour automatiser ce processus. Notez que specific administrative domains comprend l'instance du serveur d'administration et toutes les instances du serveur d'applications de chaque domaine.
Choisissez l'une des étapes indiquées ci-dessous.
Modifiez le script /etc/init.d/appserv pour démarrer les domaines ou instances d'intérêt.
Définissez les nouveaux scripts /etc/rc*.d/ qui correspondent aux besoins de votre environnement.
Remarques concernant le démarrage : si vous modifiez les scripts de démarrage du logiciel Solaris pour qu'ils démarrent automatiquement des domaines d'administration du serveur d'applications ou des instances du serveur d'applications spécifiques, lisez attentivement ce qui est indiqué ci-dessous.
Démarrage d'un domaine spécifique : si vous souhaitez démarrer l'instance de serveur d'administration et toutes les instances de serveur d'applications d'un domaine d'administration spécifique en tant que superutilisateur, modifiez les scripts /etc/rc*.d/ comme indiqué ci-dessous.
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
Démarrage d'une instance de serveur d'applications spécifique en tant qu'utilisateur non superutilisateur : modifiez les scripts /etc/rc*.d/ afin d'utiliser la commande su avec l'option-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" ;;
Pour de plus amples informations sur les commandes startup et shutdown accessibles depuis l'interface de ligne de commande asadmin, reportez-vous au document Sun ONE Application Server 7 Administrator's Guide à l'adresse http://docs.sun.com/db/prod/s1.asse.