我知道这是一个已知的错误,但我不知道如何解决这个问题,因为我做了大量的谷歌搜索,然后最终回到堆栈以获得一些真正的解决方案:
以下是配置:
首先我通过以下方式安装nginx:
sudo apt-get install nginx
lsb_release -rd
Description: Ubuntu 16.04.2 LTS
Release: 16.04
apt-cache policy nginx-core
nginx-core:
Installed: 1.10.3-0ubuntu0.16.04.2
Candidate: 1.10.3-0ubuntu0.16.04.2
Version table:
*** 1.10.3-0ubuntu0.16.04.2 500
500 http://sg.mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/main amd64 Packages
500 http://sg.mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 Packages
100 /var/lib/dpkg
/status
1.9.15-0ubuntu1 500
500 http://sg.mirrors.cloud.aliyuncs.com/ubuntu xenial/main amd64 Packages
我的nginx服务配置如下:
nano /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
我的nginx.conf文件如下: nano /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
当我启动nginx服务器时,我的网页上出现502错误,并且nginx的状态为:
sudo service nginx status
sudo: unable to resolve host iZt4ndf6hh48rtirr7qry9Z
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2017-10-15 16:34:10 CST; 4h 42min ago
Process: 2682 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 2703 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 2700 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2706 (nginx)
CGroup: /system.slice/nginx.service
├─2706 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
└─2707 nginx: worker process
Oct 15 16:34:10 iZt4ndf6hh48rtirr7qry9Z systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 15 16:34:10 iZt4ndf6hh48rtirr7qry9Z systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
Oct 15 16:34:10 iZt4ndf6hh48rtirr7qry9Z systemd[1]: Started A high performance web server and a reverse proxy server.
现在我在google上搜索并发现pid bug,但我尝试解决该错误但我无法这样做。
感谢阅读和宝贵的时间。
答案 0 :(得分:4)
这是由于https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864中讨论的竞争条件而发生的。
如文档所述,解决方法是在下面运行以创建覆盖文件
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
systemctl daemon-reload
systemctl start nginx