Luncurkan Nginx saat startup

11

Saya dapat menginstal dan menjalankan nginx, dan penumpang tetapi saya tidak dapat meminta nginx muncul setiap kali saya me-reboot server saya. Untuk memulai proses nginx saya cukup mengetikkan sudo / opt / nginx / sbin / nginx . Dari pemahaman saya apa pun yang saya letakkan di /etc/init.d dengan ubuntu hardy akan dieksekusi. Adakah yang tahu perintah yang akan meniru panggilan baris perintah ini?

sudo / opt / nginx / sbin / nginx


sumber
jika Anda menginstal nginx melalui apt-get install nginx, maka itu "secara otomatis" dimulai pada saat boot (tetapi awalnya tidak otomatis memulai sendiri, aneh ...)
rogerdpack

Jawaban:

10

Terima kasih atas informasinya, jika seseorang ingin petunjuk langkah demi langkah. Buka /etc/init.d dan jalankan sudo nano nginx-passenger.sh, lalu rekatkan dalam kode ini:

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

Simpan dan keluar. Buat file dapat dieksekusi dengan mengetik sudo chmod +x /etc/init.d/nginx-passenger.sh. Anda dapat menguji untuk melihat apakah skrip bekerja dengan mengetik sudo /etc/init.d/nginx-passenger.shini akan menjalankan semua kode dalam skrip. Verifikasi bahwa ia meluncurkan nginx sebelum melanjutkan.

Kemudian jalankan sudo update-rc.d nginx-passenger.sh defaultsketika masih di direktori /etc/init.d. Setelah semua ini terjadi, reboot server Anda dan ngnix sekarang akan secara otomatis muncul pada saat startup

Paulo Freitas
sumber
Terima kasih untuk instruksi langsungnya. Itulah gunanya StackExchange.
Ryan
9

/etc/init.d hanyalah lokasi untuk menjalankan skrip start up. Tetapi memiliki skrip di sana tidak melakukan apa pun secara otomatis.

Sistem init menggunakan tautan simbolik di direktori /etc/rc#.d ke skrip di folder /etc/init.d. Nama tautan simbolik harus dimulai dengan S untuk menjalankan skrip dengan opsi mulai dan K untuk menjalankan opsi berhenti diikuti oleh nomor prioritas dan kemudian nama skrip.

Lihat berikut ini untuk info lebih lanjut
/etc/init.d/README
/etc/rc1.d/README
/etc/rc2.d/README

Atau Anda dapat menempatkan perintah yang ingin Anda jalankan ke skrip /etc/rc.local yang dijalankan setelah sistem melakukan booting dan selesai menjalankan semua skrip di folder /etc/rc2.d/.

Pengaruh 3d
sumber
1
Btw file /etc/init.d/README memerintahkan Anda untuk menggunakan perintah update-rc.d untuk membuat tautan simbolik di /etc/rc?.d sehingga jawaban di atas hanya memberi tahu Anda apa yang sedang dilakukan perintah itu. Dan Anda dapat menjalankan man update-rc.d untuk informasi lebih lanjut tentang perintah update-rc.d.
3dinfluence
heh nampaknya manpage perintah update-rc.d menunjukkan bahwa Anda harus menggunakan sysv-rc-conf atau gelandangan untuk mengelola skrip init yang dijalankan di berbagai level run. Kira saya akan mengajukan bug pada /etc/init.d/README
3dinfluence
Sepertinya sudah diperbaiki pada rilis Ubuntu berikutnya. Halaman manual update-rc.d tidak lagi menyarankan sysv-rc-conf atau bum.
3dinfluence
5

Untuk memulai nginx saat boot: sudo systemctl enable nginx (tidak segera mulai)

Untuk memulai nginx: sudo system start nginx

Ben B
sumber
Ah, jawaban modern (modern pada 2019, yaitu). Selamat datang di situs ButterHub :)
kubanczyk
Terima kasih @kubanczyk :)
Ben B
2

Saya berasumsi Anda telah menginstal nginx

Jika Anda menjalankan nginx maka hentikan proses menggunakan:

  • sudo killcat /usr/local/nginx/logs/nginx.pid

Skrip init

Skrip yang diperlihatkan di bawah ini adalah dari instalasi Ubuntu 10.04 dan telah disesuaikan untuk memperhitungkan instalasi kustom kami dari nginx. Harap buat skrip:

sudo nano /etc/init.d/nginx

Di dalam file kosong tempatkan yang berikut ini:

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

Execute Karena file init adalah skrip shell, ia harus memiliki izin yang dapat dieksekusi.

Kami mengaturnya seperti ini:

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

update-rc Sekarang kita sudah menyiapkan skrip dasar, kita perlu menambahkannya ke level run default:

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

Outputnya akan mirip dengan ini:

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

Sekarang kita dapat memulai, menghentikan, dan memulai kembali nginx sama seperti layanan lainnya:

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

Script juga akan dipanggil pada reboot sehingga nginx akan otomatis dimulai.

Pankaj Sonawane
sumber
1
Saya menemukan dengan ubuntu 17.10 saya harus sudo systemctl enable nginxdari dalam /etc/init.ddirektori.
Erik