Flera problem berör starten av programservern när Sun ONE Application Server installeras som en del av en Solaris-installation:
Alla programserver- och administrationsserverinstanser startas automatiskt när Solaris-systemet startas. I många miljöer förväntas inte alla instanser starta automatiskt under Solaris-systemets start. Om alla definierade instanser startas kan detta påverka mängden tillgängligt minne negativt.
När programserverinstanser och administrationsserverinstanser startas automatiskt körs startskriptet för var och en av dem som rot. När startskript för icke-rotägda instanser körs kan icke-rotanvändare få tillgång till rotanvändaren genom att startskripten ändras på instansnivå.
Under installationen av Sun ONE Application Server installeras skriptet /etc/init.d/appserv och symboliska länkar till skripten S84appserv och K05appserv i katalogerna /etc/rc*.d/. Dessa skript kan orsaka att alla programserverinstanser och administrationsserverinstanser, som definierats som del av programserverinstallationen, startas och stoppas automatiskt när Solaris-systemet startas och stängs av.
Skriptet /etc/init.d/appserv innehåller följande kodavsnitt:
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
Om du kör kommandot asadmin start-appserv startas administrationsserverinstansen och alla programserverinstanser, som definierats i alla administrativa domäner, när Solaris-systemet startas. Eftersom skripten för systemstart och -stängning körs som rot, körs även startskriptet för varje programserver- och administrationsserverinstans som rot. Startskriptet på instansnivå heter startserv och finns i instance-dir/bin/startserv . Eftersom instanser kan ägas av andra användare än rot kan startskripten ändras av icke-rotanvändaren så att det kör kommandon som rotanvändare.
Om en instans använder en privilegierad nätverksport måste instansens startserv-skript köras som rot. run as user är vanligen angett i instansens konfiguration för att tvinga instansen att köra som den angivna användaren efter att den först har startats av rotanvändaren.
Åtgärd: Använd en av följande lösningar, beroende på den aktuella miljön.
Om miljön inte kräver att alla programserver- och administrationsserverinstanser startas som rot kommenterar du bort körning av kommandona asadmin start-appserv och asadmin stop-appserv i skriptet /etc/init.d/appserv.
Om miljön kräver att vissa administrativa domäner, eller vissa instanser i en eller flera administrativa domäner, startas kan du ändra eller skapa ett skript som automatiserar detta. Tänk på att “vissa administrativa domäner” inkluderar administrationsserverinstansen och alla programserverinstanser i varje domän.
Ändra skriptet /etc/init.d/appserv så att det startar önskade domäner eller instanser.
Definiera nya /etc/rc*.d/-skript som passar miljöns behov.
Tänk på följande: När du ändrar startskript för operativmiljön Solaris så att de automatiskt startar antingen vissa programservrars administrativa domäner eller vissa programserverinstanser, bör du tänka på följande.
Starta en viss domän – Om du vill starta administrationsserverinstansen och alla programserverinstanser för en viss administrativ domän som rotanvändare ändrar du skripten /etc/rc*.d/ enligt följande:
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
Starta en viss programserverinstans som icke-rotanvändare – Ändra skripten /etc/rc*.d/ så att de använder kommandot su med alternativet -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" ;;
Sun ONE Application Server 7 Administrator's Guide innehåller mer information om startup- och shutdown-kommandon som är tillgängliga via kommandoradsgränssnittet för asadmin.