बूटगार्ड को सिस्टमड के साथ शुरू करें


18

मैंने सिर्फ डेबियन 8 सर्वर पर nginx 1.9 स्थापित किया है। nginx ठीक काम कर रहा है, जब मैं इसे चलाने के लिए कहता हूं, लेकिन यह बूट पर nginx को स्वचालित रूप से लोड करने के लिए प्रतीत नहीं होगा।

मैंने इंटरनेट पर अनुशंसित कई init स्क्रिप्ट की कोशिश की है, लेकिन अभी तक कुछ भी काम नहीं किया है। इसलिए अब मैं इसे व्यवस्थित रूप से समझने की कोशिश कर रहा हूं।

~$ systemctl status nginx
● nginx.service
   Loaded: masked (/dev/null)
   Active: inactive (dead)
~$ sudo systemctl try-restart nginx
Failed to try-restart nginx.service: Unit nginx.service is masked.
~$ sudo systemctl reload nginx
Failed to reload nginx.service: Unit nginx.service is masked.
~$ sudo systemctl reload nginx
Failed to reload nginx.service: Unit nginx.service is masked.

दुर्भाग्य से, मुझे नहीं पता कि "सेवा नकाबपोश है" का मतलब क्या है, और मुझे नहीं पता कि यह नकाबपोश क्यों है।

जब मैं दौड़ता हूं

sudo nginx

सर्वर ठीक चलता है। तो, मैं nginx सेवा unmasking में देखा।

~$ sudo systemctl unmask nginx.service
Removed symlink /etc/systemd/system/nginx.service.

ठीक है, अब मैं systemctl का उपयोग करके nginx शुरू कर सकता हूं। इसलिए मैंने यह देखने के लिए जाँच की कि क्या रिबूटिंग अपने आप नाज़िनक्स को लोड कर देगा। लेकिन यह ऐसा करने में विफल रहता है, और मुझे नहीं पता कि यहां से कहां जाना है।

क्या कोई मुझे नगनेक्स को बूट पर स्वचालित रूप से चलाने में मदद कर सकता है?


6
systemctl enable nginx...
jasonwryan

जवाबों:


21

आप सक्षम, प्रारंभ और मुखौटा संचालन को भ्रमित करते हैं।

  • systemctl start, systemctl stop: शुरू होता है प्रश्न में (बंद हो जाता है) इकाई तुरंत ;
  • systemctl enable, systemctl disable: चिह्न (unmarks) के लिए यूनिट बूट समय पर स्वत: प्रारंभ (एक यूनिट-विशिष्ट तरीके से, अपने में वर्णित [Install]खंड);
  • systemctl mask, systemctl unmask: अनुमति नहीं देता है (अनुमति देता है) प्रश्न में इकाई शुरू करने के लिए सभी और किसी भी प्रयास को (या तो स्वयं या किसी अन्य इकाई की एक निर्भरता, डिफ़ॉल्ट बूट लक्ष्य की निर्भरता भी शामिल है)। ध्यान दें कि सिस्टमड में ऑटोस्टार्ट के लिए अंकन को डिफ़ॉल्ट बूट लक्ष्य से इकाई में एक कृत्रिम निर्भरता जोड़कर कार्यान्वित किया जाता है, इसलिए "मास्क" ऑटोटार्टिंग को भी रोक देता है।

तो, ये सभी अलग-अलग ऑपरेशन हैं। इनमें से आप चाहते हैं systemctl enable

रेफरी: systemctl (1)

अधिक: लेन्नर्ट पोइटरिंग (2011-03-02)। "ऑफ द थ्री लेवल ऑफ ऑफ"व्यवस्थापकों के लिए systemd । 0pointer.de।


मैं बस nginx को बूट पर लोड करना चाहता हूं। मैंने सोचा कि systemctl मुझे यह पता लगाने में मदद कर सकता है कि ऐसा क्यों नहीं हो रहा है।
j0h

@ j0h: मेरे जवाब को फिर से पढ़ें। मैंने वर्णन किया है कि यह ऑटोस्टार्ट क्यों नहीं करता है और इसे ऑटोस्टार्ट करने के लिए क्या करना चाहिए। संकेत: अंतिम वाक्य।
intelfx

लिंक एक 404 पृष्ठ पर पुनर्निर्देशित करता है, और मैंने nginx को सक्षम करने के लिए systemctl का उपयोग किया है। जब मैंने रिबूट किया, तब भी यह नहीं चल रहा था। शायद मैं nginx.service को व्यवस्थित करने की कोशिश करूं
j0h

1
@ j0h: मेरा मतलब वाक्य है, संदर्भ नहीं। (BTW, टूटी हुई लिंक के लिए खेद है - अभी तय।) और हाँ, इसे एक बार फिर से पढ़ें, आपको बूट पर कुछ शुरू करने के लिए systemctl enable(नहीं systemctl start) की आवश्यकता है ।
11:30 बजे intelfx

2

स्वीकृत उत्तर में लिंक को ठीक करें ताकि यह सही पृष्ठ पर पुनर्निर्देशित हो। लेकिन यहाँ एक प्रासंगिक सा है:

sudo systemctl enable nginx.service
sudo systemctl start nginx.service
sudo systemctl status nginx.service

जहां /lib/systemd/system/nginx.serviceकुछ ऐसा दिखता है:

# Stop dance for nginx
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

`

क्वांट के बजाय TEG का प्रयोग करें Ngin को बासी यूनिक्स सॉकेट छोड़ने से रोकने के लिए और अगली शुरुआत में विफल होने के लिए ( trac.nginx.org/nginx/ticket/753 )
खतरा89

2

Heres ने मेरे लिए क्या काम किया: https://web.archive.org/web/20150328063215/https://longhandpixels.net/blog/2014/02/install-nginx-debian-ubuntu

मैंने अधिकांश दस्तावेज़ों को नजरअंदाज कर दिया, जो कि नगणक्स के अन्य संस्करणों को संकलित करने के लिए विशिष्ट था, और "इसे ऑटिफ़ार्ट" बना दिया।

मैंने वहां निर्देशों का पालन किया, और अब जब मैं रिबूट करता हूं, तो नग्नेक्स 1.9 चल रहा है।

मैं निश्चित रूप से सभी की मदद, और अंतर्दृष्टि की सराहना करता हूं। आप सभी को धन्यवाद!


4
कृपया उत्तर के रूप में लिंक को न छोड़ें: प्रासंगिक जानकारी जोड़ें ताकि उत्तर किसी बाहरी संसाधन पर निर्भर न हो ...
jasonwryan

4
वास्तव में अब बाहरी संसाधन समाप्त हो गया है ... इसे web.archive पर देखें: web.archive.org/web/20150328063215/https://longhandpixels.net/…
फिर से लिखा गया।

1

nginx संसाधनों से https://www.nginx.com/resources/wiki/start/topics/examples/systemd/

echo "
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
" > /lib/systemd/system/nginx.service
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.