Plusieurs problèmes sont liés au démarrage du serveur d'applications lorsque Sun ONE Application Server est installé comme partie intégrante de l'installation de Solaris.
Toutes les instances du serveur d'applications et du serveur d'administration sont démarrées automatiquement au 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. 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 de Sun ONE Application Server, 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 de serveur d'applications et de serveur d'administration est exécuté en tant que superutilisateur, étant donné que les scripts de démarrage et d'arrêt du système sont eux-mêmes exécutés en tant que superutilisateur. 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 le superutilisateur.
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 de serveur d'applications et de serveur d'administration en tant que superutilisateur, 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” inclut l'instance de serveur d'administration et toutes les instances de 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.
Considérations de démarrage : lorsque vous modifiez les scripts de démarrage de l'environnement d'exploitation Solaris de façon à ce qu'ils démarrent automatiquement des domaines d'administration de serveur d'applications spécifiques ou des instances de serveur d'applications spécifiques, prenez en compte 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" ;;
Reportez-vous au Sun ONE Application Server 7 Administrator's Guide pour de plus amples informations sur les commandes startup et shutdown disponibles par l'intermédiaire de l'interface de la ligne de commande asadmin.