歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Resin在GNU/Linux上的服務自動啟動

Resin在GNU/Linux上的服務自動啟動

日期:2017/3/3 16:40:34   编辑:關於Linux

內容摘要:

將resin-version/contrib/init.resin.in復制到/etc/rc.d/init.d/resin。修改resin中的一些設置:JAVA_HOME RESIN_HOME USER 等。用/sbin/chkconfig resin on將RESIN服務在啟動級別345設置成自啟動。在慢速CPU的機器上啟動時,需要加入一個15秒的延時幫助JAVA啟動。我最習慣的設置服務自動啟動的方式是在rc.local裡加類似一下的腳本:

  #sshd
  /usr/local/sbin/sshd
  
  #proftpd
  /usr/local/sbin/proftpd
  
  #apache
  /home/apache/bin/apachectl start
  
  #mysql
  /home/mysql/bin/safe_mysqld --port=3306 &
  
  #start oracle8i listener first
  su - oracle -c 'lsnrctl start'
  
  #start oracle8i
  su - oracle -c 'dbstart'

但配置RESIN的自動啟動的時候確遇到了不少麻煩,主要是JAVA_HOME等環境變量在系統初始化過程中是讀不到的。通過一些資料http://www.caucho.com/support/resin-interest/0112/0151.html了解到將RESIN配置成一個可配置的服務需要以下幾個步驟:

設置好JAVA_HOME環境變量後將RESIN解包到/home/resin下,執行編譯腳本:

  %tar zxf resin-version.tar.gz
  #mv resin-version /home/resin
  %cd /home/resin/
  %./configure
  %make
  #make install

將make install生成的$RESIN_HOME/contrib/init.resin復制到/etc/rc.d/init.d/resin並且:

chmod +x resin
  cp contrib/init.resin /etc/rc.d/init.d/resin
  chmod +x /etc/rc.d/init.d/resin

修改resin中的一些設置:JAVA_HOME RESIN_HOME USER等。

將resin服務在不同的啟動級中設置成自啟動:

  #/sbin/chkconfig resin reset

從中還學到了不少關於用chkconfig管理服務啟動的知識。其實/etc/init.d/resin這個腳本之所以可以用chkconfig來配置主要是有以下的注釋:

  # chkconfig: 345 85 15
  # description: Resin is a Java Web server.

這個注釋表示resin服務在運行級別345下自動啟動(/etc/rc.d/下 rc3.d rc4.d rc5.d都用相應鏈接到init.d/resin),啟動的優先級是85,停止的優先級是15。這樣就能自動在相應的rc#.d/生成 S##resin和K##resin了。原先感覺GNU/Linux下的rc.d/下的文件很亂,不如FREEBSD的簡潔。有了CHKCONFIG還是讓我對下面的文件管理簡化了很多。用/sbin/chkconfig resin on將RESIN服務設置成自啟動服務後,在GNU/Linux的setup界面的system services設置中也可以對RESIN服務進行設置了。

如果讓RESIN作為80端口的服務需要用ROOT權限,而且隨服務器自啟動就不能使用httpd.sh了,而需要一個可執行文件來實現,這個可執行在./configure ; make; make install後,這個可執行文件會生成在$RESIN_HOME/bin/下,resin文件實際是一個執行wrapper.pl的轉向。

在慢速機器上的RESIN啟動

RESIN是一個JAVA應用,啟動過程中需要消耗大量的CPU資源。因此在一些比較慢的機器上或者按照以上的配置有時候會很奇怪的啟動不起來,在stderr.log中顯示:"can't connect to parent",這個問題可以通過在服務啟動後加上一個15秒的延時解決:

  在/etc/init.d/resin: 43行左右:
  if test -n "$USER"; then
  su - $USER -c "$EXE -pid $PID start $ARGS"
  else
  $EXE -pid $PID start $ARGS
  fi
  #服務啟動後,加上一個15秒的延時解決
  sleep 15

參考資料

RESIN的安裝:

http://www.caucho.com/download/install.pdf

用紅帽子的chkconfig管理Init腳本

http://www.cioworld.net/linux/069.htm

Copyright © Linux教程網 All Rights Reserved