เรียกใช้ Nginx เมื่อเริ่มต้น


11

ฉันสามารถติดตั้งและเรียกใช้ nginx และผู้โดยสารได้ แต่ฉันไม่สามารถให้ nginx เกิดขึ้นทุกครั้งที่ฉันรีบูตเซิร์ฟเวอร์ เพื่อเริ่มต้นกระบวนการ Nginx ฉันเพียงแค่พิมพ์sudo / จากความเข้าใจของฉันสิ่งที่ฉันใส่ใน / etc / init.d กับ Ubuntu แข็งแกร่งจะถูกดำเนินการ ไม่มีใครรู้คำสั่งที่จะเลียนแบบการเรียกบรรทัดคำสั่งนี้?

sudo / opt / nginx / sbin / nginx


ถ้าคุณติดตั้ง nginx ผ่าน apt-get install nginx มันจะ "เริ่มต้น" โดยอัตโนมัติเมื่อเริ่มต้นระบบ (แต่จะไม่เริ่มโดยอัตโนมัติในตอนแรก, แปลก ... )
rogerdpack

คำตอบ:


11

ขอบคุณสำหรับข้อมูลถ้ามีคนต้องการคำแนะนำทีละขั้นตอน ไปที่/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 ตอนนี้จะเกิดโดยอัตโนมัติเมื่อเริ่มต้น


ขอบคุณสำหรับคำแนะนำโดยตรง นั่นคือสิ่งที่ StackExchange มีไว้สำหรับ
Ryan

10

/etc/init.d เป็นเพียงตำแหน่งสำหรับสคริปต์เริ่มทำงาน แต่การมีสคริปต์มันไม่ได้ทำอะไรโดยอัตโนมัติ

ระบบ init ใช้ลิงก์สัญลักษณ์ในไดเร็กทอรี /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/ ให้เสร็จสิ้น


1
Btw ไฟล์ /etc/init.d/README แนะนำให้คุณใช้คำสั่ง update-rc.d เพื่อสร้างลิงก์สัญลักษณ์ใน /etc/rc?.d ดังนั้นคำตอบข้างต้นจะช่วยให้คุณรู้ว่าคำสั่งนั้นทำอะไร และคุณสามารถเรียกใช้ man update-rc.d สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง update-rc.d
3dinfluence

heh ดูเหมือนว่า manpage คำสั่ง update-rc.d แนะนำว่าคุณควรใช้ sysv-rc-conf หรือ bum เพื่อจัดการสคริปต์ init ที่กำลังรันในระดับการรันต่างๆ เดาว่าฉันจะยื่นข้อผิดพลาดใน /etc/init.d/README
3dinfluence

ดูเหมือนว่ามันจะถูกแก้ไขแล้วใน Ubuntu รุ่นถัดไป หน้า man update-rc.d ไม่แนะนำ sysv-rc-conf หรือ bum อีกต่อไป
3dinfluence

5

วิธีเริ่ม nginx เมื่อบู๊ต: sudo systemctl enable nginx (ไม่เริ่มทันที)

ในการเริ่ม nginx: sudo system start nginx


อาคำตอบที่ทันสมัย ​​(ทันสมัย ​​ณ ปี 2019 นั่นคือ) ยินดีต้อนรับสู่เว็บไซต์ ButterHub :)
kubanczyk

ขอบคุณ @kubanczyk :)
เบ็น B

2

ฉันสมมติว่าคุณติดตั้ง nginx แล้ว

หากคุณใช้งาน nginx ให้หยุดกระบวนการโดยใช้:

  • sudo killcat /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

ดำเนินการ เนื่องจากไฟล์ init เป็นเชลล์สคริปต์จึงจำเป็นต้องมีสิทธิ์ในการปฏิบัติการ

เราตั้งค่าให้เป็นดังนี้:

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

อัปเดต -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 จะเริ่มต้นโดยอัตโนมัติ



1
ฉันพบกับ Ubuntu 17.10 ฉันต้องไปsudo systemctl enable nginxจากภายใน/etc/init.dไดเรกทอรี
Erik



0

สำหรับการอ้างอิง: ฉันเพิ่งทำตามคำแนะนำและสคริปต์สำหรับ Maverick ที่ Linode จัดหาให้ที่ http://library.linode.com/frameworks/ruby-on-rails-nginx/ubuntu-10.10-maverick


ยินดีต้อนรับสู่ Server Fault! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรจะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Freiheit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.