我在同一个DigitalOcean Ubuntu机箱上运行我的舞台和制作环境。 我有一切工作,以便每个环境可以部署到自己的目录,运行单独的独angular兽进程与单独的PID文件,Nginxconfiguration了单独的网站启用文件,将每个独angular兽实例与其适当的环境。
我的部署过程正确(重新)启动独angular兽的匹配环境。 问题是当我需要重新启动盒子本身,其中我的/etc/init.d/unicorn只configuration为生产启动。 我不知道在启动时需要做什么来启动生产和分段,害羞的是创build二级/etc/init.d/unicorn-staging和/etc/default/unicorn-staging文件。
这里是我现有的文件供参考。
#!/bin/sh ### BEGIN INIT INFO # Provides: unicorn # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: unicorn initscript # Description: unicorn ### END INIT INFO set -e NAME=unicorn DESC="Unicorn web server" . /lib/lsb/init-functions if [ -f /etc/default/unicorn ]; then . /etc/default/unicorn fi PID=${PID-/run/unicorn.pid} run_by_init() { ([ "${previous-}" ] && [ "${runlevel-}" ]) || [ "${runlevel-}" = S ] } exit_with_message() { if ! run_by_init; then log_action_msg "$1 Not starting." fi exit 0 } check_config() { if [ $CONFIGURED != "yes" ]; then exit_with_message "Unicorn is not configured (see /etc/default/unicorn)." fi } check_app_root() { if ! [ -d $APP_ROOT ]; then exit_with_message "Application directory $APP_ROOT is not exist." fi } set -u case "$1" in start) check_config check_app_root log_daemon_msg "Starting $DESC" $NAME || true if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $UNICORN_OPTS; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; stop) log_daemon_msg "Stopping $DESC" $NAME || true if start-stop-daemon --stop --signal QUIT --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; force-stop) log_daemon_msg "Forcing stop of $DESC" $NAME || true if start-stop-daemon --stop --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; restart|force-reload) log_daemon_msg "Restarting $DESC" $NAME || true start-stop-daemon --stop --quiet --oknodo --pidfile $PID sleep 1 if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $UNICORN_OPTS; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; reload) log_daemon_msg "Reloading $DESC" $NAME || true if start-stop-daemon --stop --signal HUP --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; reopen-logs) log_daemon_msg "Relopening log files of $DESC" $NAME || true if start-stop-daemon --stop --signal USR1 --quiet --oknodo --pidfile $PID; then log_end_msg 0 || true else log_end_msg 1 || true fi ;; status) status_of_proc -p $PID $DAEMON $NAME && exit 0 || exit $? ;; *) log_action_msg "Usage: $0 <start|stop|restart|force-reload|reload|force-stop|reopen-logs|status>" || true exit 1 ;; esac
# Change paramentres below to appropriate values and set CONFIGURED to yes. CONFIGURED=yes # Default timeout until child process is killed during server upgrade, # it has *no* relation to option "timeout" in server's config.rb. TIMEOUT=60 # Path to your web application, sh'ld be also set in server's config.rb, # option "working_directory". Rack's config.ru is located here. APP_ROOT=/var/www/example.com/current # Server's config.rb, it's not a rack's config.ru CONFIG_RB=/var/www/example.com/current/config/unicorn.rb # Where to store PID, sh'ld be also set in server's config.rb, option "pid". PID=/var/www/coderfit.com/shared/tmp/pids/unicorn.pid UNICORN_OPTS="-D -c $CONFIG_RB -E production" PATH=/usr/local/rvm/rubies/ruby-2.2.0/bin:/var/www/example.com/shared/bundle/ruby/2.2.0/bin:/usr/local/sbin:/usr/bin:/bin:/sbin:$ export GEM_HOME=/usr/local/rvm/gems/ruby-2.2.0@example export GEM_PATH=/var/www/example.com/shared/bundle/ruby/2.2.0:/usr/local/rvm/gems/ruby-2.2.0@example:/usr/local/rvm/gems/ruby-2.2.0@global DAEMON=/var/www/example.com/shared/bundle/ruby/2.2.0/bin/unicorn
您可以将/etc/init.d/unicorn复制到/etc/init.d/unicorn_app2 。
编辑unicorn_app2文件:
/etc/default/unicorn更改为/etc/default/unicorn_app2 /run/unicorn_app2.pid更改为/run/unicorn_app2.pid 将/etc/default/unicorn复制到/etc/default/unicorn_app2
编辑/etc/default/unicorn_app2来设置你的第二个应用程序
运行新的服务器service unicorn_app2 start ,也为第二个应用程序设置你的nginx / apache(与新的pid文件)