Sun ONE Application Server가 Solaris 설치의 일부로 설치되면 일부 문제가 Application Server 시작과 관련됩니다.
모든 응용 프로그램 서버 및 관리 서버는 Solaris 시스템 시작 시 자동으로 시작됩니다. 대다수의 환경에서 모든 인스턴스가 Solaris 시스템 시작 시 자동으로 시작되는 것은 아닙니다. 정의된 인스턴스를 모두 시작하면 역으로 시스템에서 사용 가능한 메모리에 영향을 미칠 수 있습니다.
응용 프로그램 서버 인스턴스 및 관리 서버 인스턴스가 자동으로 시작되면 각 인스턴스에 대한 시작 스크립트가 루트로 실행됩니다. 비 루트 소유의 인스턴스 시작 스크립트를 실행하면 인스턴스 수준 시작 스크립트의 수정을 통해 루트 사용자가 비 루트 사용자의 액세스를 가질 수 있습니다.
Sun ONE Application Server를 설치하는 동안 /etc/init.d/appserv 스크립트 및 /etc/rc*.d/ 디렉토리의 S84appserv와 K05appserv 스크립트에 대한 심볼 링크가 설치됩니다. 이러한 스크립트는 응용 프로그램 서버 설치의 일부로 정의된 모든 응용 프로그램 서버 인스턴스 및 관리 서버 인스턴스에 대해 Solaris 시스템 시작과 종료 시 자동으로 시작 및 종료되도록 합니다.
/etc/init.d/appserv 스크립트에는 다음 코드 섹션이 포함되어 있습니다.
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
asadmin start-appserv 명령을 실행하면 모든 관리 도메인에서 정의된 관리 서버 인스턴스 및 모든 응용 프로그램 인스턴스가 Solaris 시스템 시작 시 시작됩니다. 시스템 시작 및 종료 스크립트가 루트로 실행되므로 각 응용 프로그램 서버 및 관리 서버 인스턴스의 시작 스크립트도 루트로 실행됩니다. 인스턴스 수준 시작 스크립트는 startserv라는 이름을 가지며 instance-dir/bin/startserv에 위치합니다. 인스턴스는 루트 외의 사용자가 소유할 수 있으므로 startserv 스크립트는 루트 사용자로 명령을 실행하는 비 루트 사용자가 수정할 수 있습니다.
인스턴스가 권한이 있는 네트워크 포트를 사용하면 해당 인스턴스의 startserv 스크립트는 루트로 실행되어야 합니다. 그러나 보통 run as user를 인스턴스의 구성에 설정하여 루트 사용자가 처음 인스턴스를 시작한 다음 지정한 사용자로서 해당 인스턴스를 실행하도록 합니다.
해결 방법: 환경에 따라 다음 해결 방법 중 하나를 수행합니다.
사용자 환경이 모든 응용 프로그램 서버 및 관리 서버 인스턴스가 루트로 시작될 필요가 없으면 /etc/init.d/appserv 스크립트의 asadmin start-appserv 및 asadmin stop-appserv 명령의 실행을 주석 처리합니다.
사용자 환경이 하나 이상의 관리 도메인 내에 특정 관리 도메인이나 특정 인스턴스를 시작해야 하는 경우 스크립트를 작성 또는 수정하여 해당 프로세스를 자동화할 수 있습니다. “특정 관리 도메인”에는 각 도메인의 관리 서버 인스턴스 및 모든 응용 프로그램 서버 인스턴스가 포함되어 있습니다.
/etc/init.d/appserv 스크립트를 수정하여 도메인 또는 인스턴스를 시작합니다.
환경의 필요에 알맞은 새 /etc/rc*.d/ 스크립트를 정의합니다.
시작 참고 사항: 특정 응용 프로그램 서버 관리 도메인 또는 특정 응용 프로그램 서버 인스턴스가 자동으로 시작되도록 Solaris 운영 환경 시작 스크립트를 수정할 때 다음을 고려합니다.
특정 도메인 시작 – 루트 사용자로 특정 관리 도메인의 관리 서버 인스턴스 및 모든 응용 프로그램 서버 인스턴스를 시작하려면 다음과 같이 /etc/rc*.d/ 스크립트를 수정합니다.
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
비 루트 사용자로 특정 응용 프로그램 서버 인스턴스 시작 – /etc/rc*.d/ 스크립트를 수정하여 -c 옵션과 함께 su 명령을 사용합니다.
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" ;;
asadmin 명령줄 인터페이스를 통해 사용 가능한 startup 및 shutdown 명령에 대한 자세한 내용은 Sun ONE Application Server 7 Administrator's Guide를 참조하십시오.