initd 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #! /bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: FastCGI servers for Django
  4. # Required-Start: networking
  5. # Required-Stop: networking
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: S 0 1 6
  8. # Short-Description: Start FastCGI servers with Django.
  9. # Description: Django, in order to operate with FastCGI, must be started
  10. # in a very specific way with manage.py. This must be done
  11. # for each DJango web server that has to run.
  12. ### END INIT INFO
  13. #
  14. # Author: Guillermo Fernandez Castellanos
  15. # <guillermo.fernandez.castellanos AT gmail.com>.
  16. #
  17. # Version: @(#)fastcgi 0.1 11-Jan-2007 guillermo.fernandez.castellanos AT gmail.com
  18. #
  19. #### SERVER SPECIFIC CONFIGURATION
  20. DJANGO_SITES="backlog"
  21. SITES_PATH=/var/www
  22. RUNFILES_PATH=$SITES_PATH/run
  23. HOST=127.0.0.1
  24. PORT_START=8008
  25. RUN_AS=sig
  26. FCGI_METHOD=threaded
  27. #### DO NOT CHANGE ANYTHING AFTER THIS LINE!
  28. set -e
  29. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  30. DESC="FastCGI servers"
  31. NAME=$0
  32. SCRIPTNAME=/etc/init.d/$NAME
  33. #
  34. # Function that starts the daemon/service.
  35. #
  36. d_start()
  37. {
  38. # Starting all Django FastCGI processes
  39. PORT=$PORT_START
  40. for SITE in $DJANGO_SITES
  41. do
  42. echo -n ", $SITE"
  43. if [ -f $RUNFILES_PATH/$SITE.pid ]; then
  44. echo -n " already running"
  45. else
  46. start-stop-daemon --start --quiet \
  47. --pidfile $RUNFILES_PATH/$SITE.pid \
  48. --chuid $RUN_AS --exec /usr/bin/env -- python \
  49. $SITES_PATH/$SITE/manage.py runfcgi \
  50. method=$FCGI_METHOD \
  51. host=$HOST port=$PORT pidfile=$RUNFILES_PATH/$SITE.pid
  52. chmod 400 $RUNFILES_PATH/$SITE.pid
  53. fi
  54. let "PORT = $PORT + 1"
  55. done
  56. }
  57. #
  58. # Function that stops the daemon/service.
  59. #
  60. d_stop() {
  61. # Killing all Django FastCGI processes running
  62. for SITE in $DJANGO_SITES
  63. do
  64. echo -n ", $SITE"
  65. start-stop-daemon --stop --quiet --pidfile $RUNFILES_PATH/$SITE.pid \
  66. || echo -n " not running"
  67. if [ -f $RUNFILES_PATH/$SITE.pid ]; then
  68. rm -f $RUNFILES_PATH/$SITE.pid
  69. fi
  70. done
  71. }
  72. ACTION="$1"
  73. case "$ACTION" in
  74. start)
  75. echo -n "Starting $DESC: $NAME"
  76. d_start
  77. echo "."
  78. ;;
  79. stop)
  80. echo -n "Stopping $DESC: $NAME"
  81. d_stop
  82. echo "."
  83. ;;
  84. restart|force-reload)
  85. echo -n "Restarting $DESC: $NAME"
  86. d_stop
  87. sleep 1
  88. d_start
  89. echo "."
  90. ;;
  91. *)
  92. echo "Usage: $NAME {start|stop|restart|force-reload}" >&2
  93. exit 3
  94. ;;
  95. esac
  96. exit 0