我能够安装并运行nginx和passenger,但是无论何时重新启动服务器我都无法启动nginx。要启动nginx进程,只需输入sudo / opt / nginx / sbin / nginx即可。据我了解,我在/etc/init.d中放入ubuntu hardy的所有内容都会执行。有人知道模拟该命令行调用的命令吗?
须藤/ opt / nginx / sbin / nginx
我能够安装并运行nginx和passenger,但是无论何时重新启动服务器我都无法启动nginx。要启动nginx进程,只需输入sudo / opt / nginx / sbin / nginx即可。据我了解,我在/etc/init.d中放入ubuntu hardy的所有内容都会执行。有人知道模拟该命令行调用的命令吗?
须藤/ opt / nginx / sbin / nginx
Answers:
感谢您提供的信息,如果有人想要分步说明。转到/etc/init.d并运行sudo nano nginx-passenger.sh
,然后粘贴以下代码:
#!/bin/bash
# this script starts the nginx process attached to passenger
sudo /opt/nginx/sbin/nginx
保存并退出。通过键入使文件可执行sudo chmod +x /etc/init.d/nginx-passenger.sh
。您可以通过键入sudo /etc/init.d/nginx-passenger.sh
以下命令来测试脚本是否正常运行,它将运行脚本中的所有代码。在继续之前,请验证它是否启动了nginx。
然后sudo update-rc.d nginx-passenger.sh defaults
仍然在/etc/init.d目录中运行。所有这些就绪后,重新启动服务器,现在应该在启动时自动生成ngnix
/etc/init.d只是启动脚本所在的位置。但是拥有脚本不会自动执行任何操作。
初始化系统使用/etc/rc#.d目录中的符号链接到/etc/init.d文件夹中的脚本。符号链接的名称必须以S开头(带有开始选项的情况下运行脚本),以K开头以运行停止选项,后跟优先级编号和脚本名称。
有关更多信息,请参见以下内容
/etc/init.d/README
/etc/rc1.d/README
/etc/rc2.d/README
或者,您可以将要运行的命令放在/etc/rc.local脚本中,该脚本在系统启动并完成执行/etc/rc2.d/文件夹中的所有脚本之后运行。
我假设您已经安装了nginx
如果您正在运行nginx,请使用以下命令停止该过程:
sudo kill
猫/usr/local/nginx/logs/nginx.pid初始化脚本
下面显示的脚本来自Ubuntu 10.04安装,并经过修改以考虑到我们自定义的nginx安装。请创建脚本:
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
执行 由于初始化文件是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将自动启动。
sudo systemctl enable nginx
从/etc/init.d
目录内部使用ubuntu 17.10 。
供参考:我只是按照Linode在http://library.linode.com/frameworks/ruby-on-rails-nginx/ubuntu-10.10-maverick上提供的有关Maverick的说明和脚本进行操作