Nginx'i root olmayan bir kullanıcı olarak çalıştır


17

Ubuntu 10.04 Lucid Sunucuma nginx kurmak için bu işlemi izledim http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid

Ben nginx başlatmak için bir init komut dosyası oluşturma ve sonra /etc/init.d/nginx start çağıran noktadan sonra kayboldum. Bunu yaptığımda aşağıdaki hatayı aldım:

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)

Bunu çalıştırabilmemin tek yolu, kullanmak sudove işlem olarak çalışır root, yani istemediğim şeydir.

Ben chownbütün dizin ( chown -R nginx:nginx /opt/nginx) ve ben de chmod -R 755dizin var.

Yönergeyi userCS3 tarafından önerilen şekilde eklemek de bana bu hatayı veriyor, ancak ek bir satırla.

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)

Herhangi bir fikir?


and I've also chmod -R 755 the directory as wellBunu yapmaya devam edin ve sonunda bunun için bir fiyat ödersiniz. İnternette kaç kişinin olduğuna şahit olmak, bunu herhangi bir sorunu "düzeltmek" için ilk çağrı noktası olarak öneriyor. Eğer moronic bir şey yaparsanız Unix dostça geri bildirim vermeyecektir.

Yanıtlar:


11

Her şeyden önce, init betiklerinin çalıştırılması gerekiyor

sudo /etc/init.d/name

root olarak giriş yapmadığınızda (giriş yapan kullanıcı sudo etkin olduğunda)

İkinci olarak, sudo /etc/init.d/nginx start ==> komutunu çalıştırdığınızda, ana nginx işlemini, nginx.conf kullanıcı yönergesinde (ör. Www-data) belirttiğiniz kullanıcı olarak kök ve çalışan işlemler olarak tetikler.

Sudo /etc/init.d/nginx start verirken nginx kapsamındaki tüm işlemlerinizin root tarafından yürütülüp yürütülmediğini onaylayabilir misiniz?

ile

ps aux | grep [n]ginx

Örneğin.

resim açıklamasını buraya girin

Öneri: Ubuntu 10.04 LTS, nginx ekibinden mükemmel ubuntu paket desteğine sahiptir. Peki, nginx içindeki özel modül için gereksiniminiz yoksa neden kaynaktan yüklemeyi zahmet ediyorsunuz?

Buraya danışın

İkili paket zaten çok ihtiyaç duyulan modüller ile geliyor

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

Sahip olduğum işçi işleminin bir kimliği değil, bir kimliği var. Nginx kullanıcı kimliği olma ihtimali var mı? Ubuntu için oldukça yeniyim. Apt paketinin tüm bu bayrakların açık olduğunu bilmiyordum. Bunu nasıl buldun?
John

nginx.conf dosyasında belirttiğiniz kullanıcının var olup olmadığını kontrol ettiniz mi? Resmi repo bu Nginx'e sahip değil! Lütfen belirtilen URL'den PPA kullanın
kaji

8 karakter sınırını aşan farklı bir kullanıcı adı kullandım. Bu yüzden Kullanıcı Kimliği gösteriliyor, değil mi?
John

evet bu bir senaryo
kaji

1
nginx -V senin cevabın
Kaji

1

Ekle kullanıcı direktifi iç nginx.conf

Referans: http://wiki.nginx.org/CoreModule#user


Üzgünüm, daha spesifik olabilir misiniz? Bunu zaten boşuna yaptım.
John

1 ile 1024 arasındaki bağlantı noktaları arasında herhangi bir şey çalıştırmak için root ayrıcalıkları gerekir. Kullanıcı yönergesi, güvenlik nedenlerinden dolayı nginx'in kök olmayan kullanıcı olarak çalışmasını sağlar.
Shyam Sundar CS

Ayrıca, günlüklerin açılması ve yazılması için, çalıştırmaya çalıştığınız kullanıcıya nginx dizini oluşturulmalıdır.
Shyam Sundar CS

1

Bununla ilgili 5 kopekim

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

.. özel sağlanan yapılandırmada veya "-g" seçeneğiyle geçersiz kılmanız gereken tüm diğer yolları size gönderir.


Aşağıdaki komut, çıktıdaki tüm satırları gösterir ve 'yol' terimini içerenleri vurgular:nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
Mart'ta

0

Benim durumumda nginx.conf dosya eksik bir dosya vardı:

error_log /var/log/nginx/error.log uyar;

Oldu: error_log uyar;

Bu yüzden yanlışlıkla /var/log/nginx/error.log başvurusunu sildim ve bu da izin reddedildi hata iletisine neden oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.