एक गैर-रूट उपयोगकर्ता के रूप में nginx चलाएं


17

मैंने अपने Ubuntu 10.04 ल्यूसिड सर्वर http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid पर nginx स्थापित करने के लिए इस प्रक्रिया का पालन किया

Nginx शुरू करने के लिए एक init स्क्रिप्ट बनाने के बिंदु के बाद मैं खो गया, और फिर /etc/init.d/nginx प्रारंभ को कॉल कर रहा हूं। जब मैंने ऐसा किया, तो मुझे निम्नलिखित त्रुटि मिली:

Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:17:27 [emerg] 859#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)

एक ही तरीका है कि मैं इसे चला सकता हूँ अगर मैं उपयोग करता हूँ sudoऔर यह इस प्रक्रिया को चलाता है root, जो कि मैं नहीं चाहता।

मैंने chownपूरी निर्देशिका ( chown -R nginx:nginx /opt/nginx) की है और chmod -R 755साथ ही मैंने निर्देशिका भी की है।

userनिर्देशानुसार जोड़ना CS3 भी मुझे यह त्रुटि देता है, लेकिन एक अतिरिक्त पंक्ति के साथ।

Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:48:34 [warn] 1606#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /opt/nginx/conf/nginx.conf:2
2012/03/16 18:48:34 [emerg] 1606#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)

कोई विचार?


and I've also chmod -R 755 the directory as wellऐसा करते रहें और आप अंततः इसके लिए एक कीमत अदा करेंगे। यह देखने के लिए डरावना है कि इंटरनेट पर कितने लोग हैं जो किसी भी समस्या को "ठीक" करने के लिए कॉल के पहले पोर्ट के रूप में यह सुझाव दे रहे हैं। यदि आप कुछ नैतिक करते हैं तो यूनिक्स मित्रवत प्रतिक्रिया नहीं देगा।

जवाबों:


11

सबसे पहले, init स्क्रिप्ट्स को चलाया जाना चाहिए

sudo /etc/init.d/name

जब आप रूट के रूप में लॉग इन नहीं होते हैं (जब लॉग-इन उपयोगकर्ता sudo सक्षम होता है)

दूसरे, जब आप sudo /etc/init.d/nginx start ==> चलाते हैं, तो यह मास्टर nginx प्रक्रिया को रूट और वर्कर प्रक्रियाओं के रूप में निकालता है, जैसा कि उपयोगकर्ता आपके nginx.conf उपयोगकर्ता निर्देश (जैसे। Www-data) में निर्दिष्ट करता है।

क्या आप इस बात की पुष्टि कर सकते हैं कि sudo /etc/init.d/nginx जारी करते समय रूट द्वारा चलाई जा रही nginx के तहत आपकी सभी प्रक्रिया शुरू होती है?

साथ में

ps aux | grep [n]ginx

जैसे।

यहां छवि विवरण दर्ज करें

सुझाव: Ubuntu 10.04 LTS में नगीनक्स टीम से उत्कृष्ट ubuntu पैकेज का समर्थन है। तो, स्रोत से स्थापित करने में परेशान क्यों करें यदि आपके पास nginx के अंदर कस्टम मॉड्यूल की आवश्यकता नहीं है?

यहाँ परामर्श करें

बाइनरी पैकेज पहले से ही बहुत अधिक आवश्यक मॉड्यूल के साथ आता है

nginx version: nginx/1.0.12
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.0.12/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.0.12/debian/modules/nginx-upstream-fair

कार्यकर्ता प्रक्रिया में मेरे पास एक आईडी है, एक नाम नहीं है। किसी भी मौका है कि nginx उपयोगकर्ता आईडी है? मैं Ubuntu के लिए बहुत नया हूँ। मैं नहीं जानता था कि उपयुक्त पैकेज में ये सभी झंडे थे। आपको यह कैसे पता चलेगा?
जॉन

क्या आपने यह जांचा है कि आपके द्वारा अपने nginx.conf में निर्दिष्ट उपयोगकर्ता मौजूद है या नहीं? आधिकारिक रेपो में यह नग्नेक्स नहीं है! कृपया निर्दिष्ट URL से PPA का उपयोग करें
kaji

मैंने एक अलग उपयोगकर्ता नाम का उपयोग किया है जो 8 वर्ण सीमा से अधिक लंबा है। इसलिए उपयोगकर्ता आईडी दिखाई जा रही है, है ना?
जॉन

हाँ, यह एक दृश्य है
काजी

1
nginx -V आपका उत्तर है
काजी

1

Nginx.conf के अंदर उपयोगकर्ता निर्देश जोड़ें

संदर्भ: http://wiki.nginx.org/CoreModule#user


क्षमा करें, क्या आप अधिक विशिष्ट हो सकते हैं? मैं पहले से ही कोई फायदा नहीं हुआ है।
जॉन

1 से 1024 के बीच कुछ भी चलाने के लिए रूट विशेषाधिकारों की आवश्यकता होती है। उपयोगकर्ता का निर्देश यह सुनिश्चित करता है कि नगीनक्स धर्मनिरपेक्ष कारणों के लिए गैर रूट उपयोगकर्ता के रूप में चलता है।
श्याम सुंदर सीएस

इसके अलावा, लॉग को खोलने और लिखे जाने के लिए, nginx निर्देशिका को उस उपयोगकर्ता के लिए chown'd किया जाना चाहिए जिससे आप चलाने की कोशिश कर रहे हैं।
श्याम सुंदर सीएस

1

इस बारे में मेरा 5 कोपेक

nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path

.. आपको अन्य सभी रास्ते मिलेंगे, जिन्हें आपको कस्टम प्रदान किए गए कॉन्फ़िगरेशन या "-जी" विकल्प के साथ ओवरराइड करना चाहिए।


निम्न आदेश आउटपुट से सभी पंक्तियों को दिखाता है, और 'पथ' शब्द से उन पर प्रकाश डालता है:nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
isedwards

0

मेरे मामले में मेरे nginx.conf में एक फ़ाइल संदर्भ गायब था:

error_log /var/log/nginx/error.log चेतावनी;

बन गया: error_log चेतावनी;

इसलिए मैंने आकस्मिक रूप से /var/log/nginx/error.log संदर्भ को हटा दिया, जिसके कारण अनुमति अस्वीकृत संदेश त्रुटि का कारण बना।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.