2014년 4월 3일 목요일

Auto-start with Sage Notebook



* 참조
http://whatwant.tistory.com/497
https://groups.google.com/forum/#!topic/sage-notebook/ZckZXywGB-k
http://www.sagemath.org/download-linux.html

* 환경
Ubuntu Server 12.04
Sage 6.1.1 (깔린 장소는 /usr/lib/sagemath/ )

* 과정 설명
Sage Notebook이 설치된 서버컴퓨터를 껐다 켰을 때 마다 자동으로 Sage Notebook 서버가 실행되도록 스크립트화 한다.
옛날 DOS의 Autoexec.bat 파일에 해당된다고 할 수 있는 것이 /etc/rc.local 파일이다.
따라서 이 파일을 편집해서 Sage Notebook의 실행 쉘스크립트 명령어가 실행되도록 하면 된다.
Sage Notebook의 실행 쉘스크립트 명령어는 역시 편집기로 적절하게 작성해 둔다.


1.  /etc/rc.local  파일 편집

이 스크립트는 각 멀티유저의 실행레벨의 제일 마지막에 실행된다.
실행이 성공하면 제일 마지막의 "exit 0"에 의해 0 값을 내놓고, 실행 실패할 경우에는 다른 값을 내 놓는다.
또한 실행 실패할 경우에는 첫째줄의 "#!/bin/sh -e"의 -e 옵션에 의해서 중간에 멈추거나 하지 않고 그냥 이 스크립트는 강제로 종료된다.  실행에 실패하더라도 일단 다음 과정으로 넘어가서 부팅이 완료되도록 하기 위해서이다.
본 스크립트가 실행 가능하도록 하기 위해서는 실행 비트들(execution bits)을 변경해 주면 된다.
본 스크립트는 우분투를 막 설치한 직후의 원래 디폴트 상태로는 아무 명령도 없으므로 아무것도 하지 않는다.
따라서 아래와 같이 이런 식으로 써서 내용을 변경해 준다.

#!/bin/sh -e
/home/share/powertrain/sage/start-sage.sh
exit 0


2. /home/share/powertrain/sage/start-sage.sh 파일 편집

이제 설정한 쉘스크립트를 새로 생성해서 편집한다.

#!/bin/sh
su -c 'nohup /usr/lib/sagemath/sage -c "notebook(secure=true,interface=\"\", port=443, timeout=36000, server_pool=[\"sagecalc@localhost\"], accounts=True)" 2> /home/share/powertrain/sage/log/log2.txt > /home/share/powertrain/sage/log/log1.txt &'


"su -c"는 루트 권한으로 다음에 이어지는 단따옴표 안의 명령어를 실행하라는 뜻이다.
"nohup 명령어 &" 구문은 백그라운드로 실행하되 백그라운드 상태에서 멈추지 않고 계속 명령어로 실행된 프로그램이 구동되도록 해 주는 것이다.
"sage -c"는 sage 프로그램을 실행하되 다음에 이어지는 겹따옴표 안의 명령어를 실행하라는 뜻이다.
"notebook(~)" 함수명령어 괄호 안의 옵션들의 뜻은 다음과 같다.

secure=true 옵션은 OpenSSL https 프로토콜로 웹서비스가 이루어진다.
interface='' 옵션은 localhost이외에도 모든 네트워크 인터페이스로 연결할 수 있게 한다.  즉 외부로 서비스할 때 이렇게 해 줘야 한다.
port=8888 옵션은 기본 포트인 8080을 다른 서비스가 점유하고 있을 때 빈 포트를 써준다.
timeout=36000 옵션은 아이들 상태로 방치된 워크시트 세션이 정해준 시간(초)이 지나면 자동으로 종료되도록 한다.  사용자가 로그아웃 하지 않거나 기타등등의 이유로 방치된 워크시트가 있을 경우 자동적으로 정리해 주는 역할을 한다.
server_pool=["sage1@localhost"] 옵션은 워크시트 프로세스가 각각의 사용자마다 따로 실행되도록 특정해 준다.  (참고로 따옴표 앞에 \를 붙인 이유는 스트링으로 취급하기 위해서이다.)
accounts=True 옵션은 세이지 웹사이트 서비스에서 자신이 스스로 자신의 아이디를 만들 수 있도록 메뉴를 제공해 준다.

2> /home/share/powertrain/sage/log/log2.txt  > /home/share/powertrain/sage/log/log1.txt
구문은 리디렉션을 이용해서 로그파일을 만들어주는 것이다.


* 방화벽 관련 참조
http://kimsee.tistory.com/66






댓글 없음:

댓글 쓰기