启动时启动Nginx

我能够安装并运行nginx和乘客,但是我无法让nginx在我重新启动服务器时出现。 要启动nginx进程,只需键入sudo / opt / nginx / sbin / nginx 。 从我的理解,任何我把/etc/init.d与Ubuntu的哈代将被执行。 有谁知道命令会模仿这个命令行调用?

sudo / opt / nginx / sbin / nginx

/etc/init.d只是启动脚本的位置。 但是有一个脚本不会自动执行任何操作。

init系统将/etc/rc#.d目录中的符号链接用于/etc/init.d文件夹中的脚本。 符号链接的名字需要以S开始,用start选项运行脚本,K运行stop选项,然后是优先级编号,然后是脚本的名称。

有关更多信息,请参阅以下内容
/etc/init.d/README
/etc/rc1.d/README
/etc/rc2.d/README

或者,您可以将要运行的命令放入系统启动后运行的/etc/rc.local脚本中,并在/etc/rc2.d/文件夹中执行完所有脚本。

感谢您的信息,如果有人想要一步一步的指示。 进入/etc/init.d并运行sudo nano nginx-passenger.sh ,然后粘贴这段代码:

 #!/bin/bash # this script starts the nginx process attached to passenger sudo /opt/nginx/sbin/nginx 

保存并退出。 通过inputsudo chmod +x /etc/init.d/nginx-passenger.sh来使文件成为可执行文件。 您可以通过inputsudo /etc/init.d/nginx-passenger.sh来testing脚本是否工作,这将运行脚本中的所有代码。 确认它在继续之前启动nginx。

然后在/etc/init.d目录下运行sudo update-rc.d nginx-passenger.sh defaults 。 一旦所有这一切都到位,重新启动你的服务器,现在应该在启动时自动生成ngnix

我假设你已经安装了nginx

如果你有nginx运行,那么使用下面的命令停止进程:

  • sudo kill cat /usr/local/nginx/logs/nginx.pid

初始化脚本

下面显示的脚本来自Ubuntu 10.04安装,并且已经被修改来考虑我们的nginx的自定义安装。 请创build脚本:

sudo nano /etc/init.d/nginx

在空白文件里面放置以下内容:

 #! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/sbin/nginx NAME=nginx DESC=nginx test -x $DAEMON || exit 0 # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then . /etc/default/nginx fi set -e case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \ --exec $DAEMON echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /usr/local/nginx/logs/$NAME.pid --exec $DAEMON sleep 1 start-stop-daemon --start --quiet --pidfile \ /usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; reload) echo -n "Reloading $DESC configuration: " start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \ --exec $DAEMON echo "$NAME." ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 

执行由于init文件是一个shell脚本,它需要具有可执行的权限。

我们这样设置它们:

 sudo chmod +x /etc/init.d/nginx 

update-rc现在我们已经准备了基本脚本,我们需要将它添加到默认的运行级别:

 sudo /usr/sbin/update-rc.d -f nginx defaults 

输出将类似于这样:

 sudo /usr/sbin/update-rc.d -f nginx defaults Adding system startup for /etc/init.d/nginx ... /etc/rc0.d/K20nginx -> ../init.d/nginx /etc/rc1.d/K20nginx -> ../init.d/nginx /etc/rc6.d/K20nginx -> ../init.d/nginx /etc/rc2.d/S20nginx -> ../init.d/nginx /etc/rc3.d/S20nginx -> ../init.d/nginx /etc/rc4.d/S20nginx -> ../init.d/nginx /etc/rc5.d/S20nginx -> ../init.d/nginx 

现在我们可以像其他服务一样启动,停止和重新启动nginx:

 sudo /etc/init.d/nginx start ... sudo /etc/init.d/nginx stop ... sudo /etc/init.d/nginx restart 

该脚本也将被重新调用,所以nginx将自动启动。

我使用这个脚本来启动一个乘客支持的nginx:

http://library.linode.com/development/frameworks/ruby/ruby-on-rails/nginx-ubuntu-8.04-hardy

检查这个链接:

https://github.com/JasonGiedymin/nginx-init-ubuntu

他们提供了一个在ubuntu中运行的nginx init.d脚本。

作为参考:我只是按照Linode提供的Maverick的说明和脚本http://library.linode.com/frameworks/ruby-on-rails-nginx/ubuntu-10.10-maverick