Sau khi cài đặt nginx với hỗ trợ Hành khách trong '/ opt', tại sao nó không bắt đầu từ 'init.d'?


15

Tôi đã xem qua một hướng dẫn http://craiccomputing.blogspot.com/2010/10/pasbah-3-nginx-and-rvm-on-mac-os-x.html và mọi thứ đều ổn. Không có lỗi.

Nginx with Passenger support was successfully installed.

The Nginx configuration file (/opt/nginx/conf/nginx.conf)
must contain the correct configuration options in order for Phusion Passenger
to function correctly.

This installer has already modified the configuration file for you! The
following configuration snippet was inserted:

  http {
      ...
      passenger_root /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.14;
      passenger_ruby /home/alex/.rvm/wrappers/ruby-1.9.3-p194/ruby;
      ...
  }

After you start Nginx, you are ready to deploy any number of Ruby on Rails
applications on Nginx.

Tuy nhiên tôi không thể bắt đầu nó.

alex@ubuntu:~$ sh -x /etc/init.d/nginx start
sh: 0: Can't open /etc/init.d/nginx

sudo /etc/init.d/nginx start
sudo: /etc/init.d/nginx: command not found

Thư mục opt/nginxtồn tại và có tập tin trong đó. Localhost:80cũng không hoạt động.

Bất kỳ đề xuất?

Câu trả lời:


3

Cách thông thường để cài đặt nginx là thông qua apt-get(hoặc Synaptic hoặc SW Center) và điều đó không đưa bất cứ thứ gì vào /opt, AFAIK. Trong trường hợp đó, bạn có thể dừng / khởi động nó bằng cách phát hành:

sudo service nginx start|stop|restart (etc)

Nếu bạn nginxcài đặt chính nó /opt, tôi nghi ngờ nó sẽ chạm vào /etc/init.dthư mục ...


1
Nó nói 'nginx: dịch vụ không được công nhận'
Alex Malex

1
sudo apt-get install nginx
ish

1
Tại sao? trước đây đã nói 'Nginx với hỗ trợ Hành khách đã được cài đặt thành công.'
Alex Malex

2
Bạn đang làm theo hướng dẫn dành cho Mac , trong đó nói rõ ràng bắt đầu nginxtrực tiếp sudovà dừng lại killall, sau đó bạn hỏi tại sao nó không được cài đặt như một dịch vụ!?
ish

2
Tôi tin rằng OP đang hỏi về nginx + hành khách, không phải vanilla nginx.
10962

20

Cách thông thường để cài đặt Rails + NGINX + Thiết lập hành khách + RVM thường liên quan đến nginx được đặt trong / opt / nginx, nhưng thực tế nó không tạo ra tệp khởi động init.d. Bài đăng trên blog này cho thấy cách bạn có thể dễ dàng lấy một từ Linode :

wget -O init-deb.sh https://www.linode.com/docs/assets/660-init-deb.sh
sudo mv init-deb.sh /etc/init.d/nginx
sudo chown root:root /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults

Đối với hậu thế, đây là kịch bản từ Linode:

#! /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=/opt/nginx/sbin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/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 /opt/nginx/logs/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \
                --exec $DAEMON
        echo "$NAME."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /opt/nginx/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
          echo -n "Reloading $DESC configuration: "
          start-stop-daemon --stop --signal HUP --quiet --pidfile     /opt/nginx/logs/$NAME.pid \
              --exec $DAEMON
          echo "$NAME."
          ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
            exit 1
            ;;
    esac

    exit 0

Một điều cần chú ý: nếu bạn đã thay đổi vị trí nginx.pid của mình (mặc định là / opt / nginx / log, tôi đã đổi tên của tôi thành / var / run), bạn sẽ cần thay đổi nó trong tệp này. Gần đầu, chỉ cần khai báo nó như một biến:

PIDPATH=/var/run/$NAME.pid

Và thay thế bất cứ nơi nào có đường dẫn đến pid bằng $ PIDPATH. (Ngay cả khi bạn đang giữ đường dẫn gốc, điều này làm cho tập lệnh dễ đọc hơn).


1

Tôi khuyên bạn nên sử dụng PPA của Brightbox được đề cập trong Wiki của Brightbox . Điều này cho phép tất cả các dịch vụ bình thường xử lý như service nginx starthoặc /etc/init.d/nginx startngoài hộp.

Điều này hoạt động tốt cho tôi chính xác (12.04 LTS).


1
Lời khuyên tốt. Lưu ý: URL của tệp init đã được chuyển vĩnh viễn sang https://www.linode.com/docs/assets/660-init-deb.sh.
Teemu Leisti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.