Я выполнил этот процесс для установки nginx на свой Ubuntu 10.04 Lucid Server. http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid
Я заблудился после того, как создал сценарий инициализации для запуска nginx, а затем вызвал /etc/init.d/nginx start. Когда я это сделал, я получил следующую ошибку:
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
'd весь каталог (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)
Любые идеи?
Прежде всего, предполагается запускать сценарии инициализации.
sudo /etc/init.d/name
когда вы не вошли в систему как root (когда вошедший в систему пользователь включен sudo)
Во-вторых, когда вы запускаете sudo /etc/init.d/nginx start ==>, он запускает главный процесс nginx в качестве корневого, а рабочие процессы в качестве пользователя, указанного в вашей пользовательской директиве nginx.conf (например, www-data)
Можете ли вы подтвердить, что весь ваш процесс под nginx запускается от имени root при выполнении sudo /etc/init.d/nginx start?
с участием
ps aux | grep [n]ginx
например.
Предложение: Ubuntu 10.04 LTS имеет отличную поддержку пакетов ubuntu от команды nginx. Итак, зачем беспокоиться об установке из исходников, если у вас нет требований к настраиваемому модулю внутри 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.conf
Мои 5 копеек по этому поводу
nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path
.. даст вам все другие пути, которые вы должны переопределить в настраиваемой конфигурации или с параметром "-g".
В моем случае в nginx.conf отсутствовала ссылка на файл:
error_log /var/log/nginx/error.log предупреждать;
Стало: error_log warn;
Поэтому я случайно удалил ссылку /var/log/nginx/error.log, которая вызвала сообщение об ошибке с отказом в разрешении.