다음 명령을 사용하여 메인라인 nginx 1.13.9를 설치했습니다.제공속도CentOS 7.4에서. yum localinstall
기업 지배구조가 그렇게 하도록 강요하기 때문에 이 rpm을 사용해야 합니다 .
내 문제는 systemctl start nginx
항상 다음과 같은 결과가 나온다는 것입니다.
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
Journalctl은 다음과 같이 말합니다.
Mar 07 08:57:05 myhost nginx[19466]: nginx: [emerg] open() "/var/opt/nginx/config/nginx.conf" failed (13: Permission denied)
(여기서 볼 수 있는 것은 또 다른 회사의 일입니다. conf 파일을 등 아래에 둘 수 없으며 변경하기 위해 루트 권한이 필요하지 않은 디렉토리에 보관해야 합니다)
nginx.conf에 설정된 권한은 다음과 같습니다.
-rw-r--r--. 1 nginx nginx 241 Mar 7 09:17 nginx.conf
나는 nginx.conf를 절대 최소값으로 줄였고 로그 파일, pid 등을 권한이 확실히 부여된 디렉토리에 넣어 보았습니다. 오류 로그에는 아무 것도 포함되어 있지 않습니다.
다음은 축소된 nginx.conf입니다.
user nginx nginx;
pid /tmp/nginx.pid;
error_log /tmp/error.log debug;
events {
}
http {
default_type application/octet-stream;
charset UTF-8;
server {
listen 8080;
location / {
root /tmp/;
}
}
}
약간 수정된 nginx.service
정의는 다음과 같습니다.
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /var/opt/nginx/config/nginx.conf -g "error_log /tmp/error.log debug;"
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
(nginx.conf를 읽기 전에 nginx가 실패할 경우를 대비하여 error_log를 강제로 시도하고 있음을 알 수 있습니다)
이렇게 하면 정말 효과가 좋습니다 sudo -u nginx /usr/sbin/nginx -c /var/opt/nginx/config/nginx.conf -g "error_log /tmp/error.log debug;"
. 간단한 경고에도 불구하고 프로세스는 정상적으로 시작됩니다.
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /var/opt/nginx/config/nginx.conf:1
나는 이것이 어리석은 실수임에 틀림없다고 확신하지만 어떤 실수인지는 모릅니다.
답변1
이 문제는 제가 저지른 두 가지 실수로 인해 발생했습니다.
- 디렉터리 권한이 올바르지 않습니다.
- 그룹 멤버십이 누락되었습니다.
디렉터리 중 하나가 누락되어 x
프로세스가 경로를 통과할 수 없습니다. 나는 chmod g+X
그것을해야만했다. 이 외에도 nginx 그룹에 nginx 기술 사용자(내 시나리오에서는 기본 nginx가 아님)를 추가해야 했습니다.