Khởi chạy Nginx khi khởi động


11

Tôi đã có thể cài đặt và chạy nginx, và hành khách nhưng tôi không thể có nginx xuất hiện bất cứ khi nào tôi khởi động lại máy chủ của mình. Để bắt đầu quá trình nginx tôi chỉ cần gõ sudo / opt / nginx / sbin / nginx . Từ sự hiểu biết của tôi, bất cứ điều gì tôi đặt vào /etc/init.d với ubfox hardy sẽ được thực thi. Có ai biết lệnh sẽ bắt chước cuộc gọi dòng lệnh này không?

sudo / opt / nginx / sbin / nginx


nếu bạn cài đặt nginx thông qua apt-get install nginx, thì nó "tự động" bắt đầu vào lúc khởi động (nhưng không tự động khởi động ban đầu, lẻ ...)
rogerdpack

Câu trả lời:


10

Cảm ơn thông tin, nếu ai đó muốn hướng dẫn từng bước. Tới /etc/init.d và chạy sudo nano nginx-passenger.sh, sau đó dán vào mã này:

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

lưu và thoát. Làm cho tập tin thực thi bằng cách gõ sudo chmod +x /etc/init.d/nginx-passenger.sh. Bạn có thể kiểm tra xem liệu tập lệnh có hoạt động hay không bằng cách gõ sudo /etc/init.d/nginx-passenger.shnày sẽ chạy tất cả mã trong tập lệnh. Xác minh rằng nó khởi chạy nginx trước khi tiếp tục.

Sau đó chạy sudo update-rc.d nginx-passenger.sh defaultstrong khi vẫn trong thư mục /etc/init.d. Khi tất cả điều này đã sẵn sàng, hãy khởi động lại máy chủ của bạn và ngnix sẽ tự động xuất hiện khi khởi động


Cảm ơn đã hướng dẫn trực tiếp. Đó là những gì StackExchange dành cho.
Ryan

9

/etc/init.d chỉ là vị trí để các tập lệnh khởi động tồn tại. Nhưng có một kịch bản ở đó không làm gì tự động.

Hệ thống init sử dụng các liên kết tượng trưng trong các thư mục /etc/rc#.d đến các tập lệnh trong thư mục /etc/init.d. Tên của liên kết tượng trưng cần bắt đầu bằng chữ S để chạy tập lệnh với tùy chọn bắt đầu và K để chạy tùy chọn dừng theo sau là số ưu tiên và sau đó là tên của tập lệnh.

Xem phần sau để biết thêm thông tin
/etc/init.d/README
/etc/rc1.d/README
/etc/rc2.d/README

Ngoài ra, bạn có thể đặt lệnh bạn muốn chạy vào tập lệnh /etc/rc.local chạy sau khi hệ thống khởi động và hoàn tất thực thi tất cả các tập lệnh trong thư mục /etc/rc2.d/.


1
Btw tệp /etc/init.d/README hướng dẫn bạn sử dụng lệnh update-rc.d để tạo các liên kết tượng trưng trong /etc/rc?.d để câu trả lời trên chỉ cho bạn biết lệnh đó đang làm gì. Và bạn có thể chạy man update-rc.d để biết thêm thông tin về lệnh update-rc.d.
3dinfluence

Heh trông giống như trang quản lý lệnh update-rc.d gợi ý rằng bạn nên sử dụng sysv-rc-conf hoặc bum để quản lý các tập lệnh init đang chạy ở các cấp độ chạy khác nhau. Đoán tôi sẽ gửi một lỗi trên /etc/init.d/README
3dinfluence

Có vẻ như nó đã được sửa trong bản phát hành Ubuntu tiếp theo. Trang man update-rc.d không còn gợi ý sysv-rc-conf hay bum.
3dinfluence

5

Để bắt đầu nginx khi khởi động: sudo systemctl enable nginx (không khởi động ngay lập tức)

Để bắt đầu nginx: sudo system start nginx


Ah, câu trả lời hiện đại (hiện đại như năm 2019, đó là). Chào mừng đến với trang web ButterHub :)
kubanczyk

Cảm ơn @kubanchot :)
Ben B

2

Tôi giả sử bạn đã cài đặt nginx

Nếu bạn có nginx đang chạy thì dừng quá trình sử dụng:

  • sudo killmèo /usr/local/nginx/logs/nginx.pid

Kịch bản ban đầu

Kịch bản hiển thị bên dưới là từ bản cài đặt Ubuntu 10.04 và đã được điều chỉnh để tính đến cài đặt nginx tùy chỉnh của chúng tôi. Vui lòng tạo tập lệnh:

sudo nano /etc/init.d/nginx

Trong tập tin trống đặt như sau:

#! /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

Thực thi Vì tệp init là tập lệnh shell, nó cần phải có quyền thực thi.

Chúng tôi đặt chúng như vậy:

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

update-rc Bây giờ chúng ta đã chuẩn bị kịch bản cơ sở, chúng ta cần thêm nó vào các mức chạy mặc định:

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

Đầu ra sẽ tương tự như sau:

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

Bây giờ chúng tôi có thể bắt đầu, dừng và khởi động lại nginx giống như với bất kỳ dịch vụ nào khác:

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

Kịch bản cũng sẽ được gọi khi khởi động lại để nginx sẽ tự động bắt đầu.



1
Tôi tìm thấy với Ubuntu 17.10 tôi phải sudo systemctl enable nginxtừ trong /etc/init.dthư mục.
Erik



0

Để tham khảo: Tôi chỉ theo các hướng dẫn và kịch bản cho Maverick được cung cấp bởi Linode tại http://library.linode.com/frameworks/ruby-on-rails-nginx/ubuntu-10.10-maverick


Chào mừng bạn đến với Lỗi Máy chủ! Mặc dù điều này về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
freiheit
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.