你好,游客 登录 注册 搜索
背景:
阅读新闻

用start-stop-daemon启动Nginx

[日期:2012-11-14] 来源:Linux社区  作者:sheismylife [字体: ]

在前面学习Ubuntu apt-get install nginx 创建的nginx启动脚本中,看到start-stop-daemon的用法,见 http://www.linuxidc.com/Linux/2012-11/73449.htm 。

迅速查了一下手册(用man start-stop-daemon)。这个程序用来启动和关闭系统级别的进程。

下面我用该命令启动我自己编译的nginx程序:

start-stop-daemon --start --quiet --pidfile /opt/nginx.pid --exec /home/chenshu/nginx/bin/nginx  -- -c /home/chenshu/nginx/etc_nginx/nginx.conf 

注意,这里都使用绝对路径,相对路径会有问题。

  1. --pidfile 指定了保存进程id的文件 /opt/nginx.pid
  2. --exec 指定了可执行程序
  3. -- 之后加上传递给nginx的参数 -c /home/chenshu/nginx/etc_nginx/nginx.conf

单独运行nginx的时候,还可以指定 -t参数用于测试-c 参数指定的配置文件是否正确。

由于我要将所有的nginx程序,日志,配置都放在/home/dist/carrier/nginx目录下,因此对应的修改启动脚本/etc/init.d/nginx

由于没有找到办法指定error log的位置. 因此现在绕过的方法是 编译nginx的时候使用--prefix=/home/dist/carrier/nginx参数。

这里用到了之前没有用的DAEMON_OPTS变量,传递-c参数。注意,必须用双引号。

  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: nginx
  4. # Required-Start: $local_fs $remote_fs $network $syslog
  5. # Required-Stop: $local_fs $remote_fs $network $syslog
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: starts the nginx web server
  9. # Description: starts nginx using start-stop-daemon
  10. ### END INIT INFO
  11. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  12. CARRIER_HOME=/home/dist/carrier
  13. DAEMON=$CARRIER_HOME/nginx/bin/nginx
  14. PID_FILE=$CARRIER_HOME/nginx/nginx.pid
  15. CONFIG_FILE=$CARRIER_HOME/nginx/conf/nginx.conf
  16. DAEMON_OPTS="-c $CONFIG_FILE"
  17. NAME=nginx
  18. DESC=nginx
  19. # Include nginx defaults if available
  20. if [ -f /etc/default/nginx ]; then
  21. . /etc/default/nginx
  22. fi
  23. test -x $DAEMON || exit 0
  24. set -e
  25. . /lib/lsb/init-functions
  26. test_nginx_config() {
  27. if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1; then
  28. return 0
  29. else
  30. $DAEMON -t $DAEMON_OPTS
  31. return $?
  32. fi
  33. }
  34. case "$1" in
  35. start)
  36. echo -n "Starting $DESC: "
  37. test_nginx_config
  38. # Check if the ULIMIT is set in /etc/default/nginx
  39. if [ -n "$ULIMIT" ]; then
  40. # Set the ulimits
  41. ulimit $ULIMIT
  42. fi
  43. start-stop-daemon --start --quiet --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS || true
  44. echo "$NAME."
  45. ;;
  46. stop)
  47. echo -n "Stopping $DESC: "
  48. start-stop-daemon --stop --quiet --pidfile $PID_FILE --exec $DAEMON || true
  49. echo "$NAME."
  50. ;;
  51. restart|force-reload)
  52. echo -n "Restarting $DESC: "
  53. start-stop-daemon --stop --quiet --pidfile $PID_FILE --exec $DAEMON || true
  54. sleep 1
  55. test_nginx_config
  56. # Check if the ULIMIT is set in /etc/default/nginx
  57. if [ -n "$ULIMIT" ]; then
  58. # Set the ulimits
  59. ulimit $ULIMIT
  60. fi
  61. start-stop-daemon --start --quiet --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS || true
  62. echo "$NAME."
  63. ;;
  64. reload)
  65. echo -n "Reloading $DESC configuration: "
  66. test_nginx_config
  67. start-stop-daemon --stop --signal HUP --quiet --pidfile $PID_FILE --exec $DAEMON || true
  68. echo "$NAME."
  69. ;;
  70. configtest|testconfig)
  71. echo -n "Testing $DESC configuration: "
  72. if test_nginx_config; then
  73. echo "$NAME."
  74. else
  75. exit $?
  76. fi
  77. ;;
  78. status)
  79. status_of_proc -p $PID_FILE "$DAEMON" nginx && exit 0 || exit $?
  80. ;;
  81. *)
  82. echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
  83. exit 1
  84. ;;
  85. esac
  86. exit 0
linux
相关资讯       Nginx  start-stop-daemon  Nginx启动 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述���款