nginx 全新安装配置

nginx 全新安装配置

我刚刚在服务器上安装了 nginx;现在我可以使用

ps aux | grep nginx

它正在以我的用户身份执行(这是正确的吗?还是应该以 root 身份运行?);无论如何,我无法用它做任何事情,例如无法停止它,因为

nginx -s stop

输出:

nginx: [alert] could not open error log file: open() 
"/var/log/nginx/error.log" failed (13: Permission denied)
2017/05/02 04:03:34 [warn] 2482#2482: the "user" directive makes sense 
only if the master process runs with super-user privileges, ignored in 
/etc/nginx/nginx.conf:2
2017/05/02 04:03:34 [notice] 2482#2482: signal process started
2017/05/02 04:03:34 [error] 2482#2482: open() "/var/run/nginx.pid" 
failed (2: No such file or directory)

我已经在 Google 上搜索了这些警告和错误,但我真的无法理解它们;有人可以解释一下吗:

  • 日志文件警告和.pid文件错误的含义
  • nginx 应该以我的用户身份运行还是以 root 身份运行(或其他方式)

更新:

我正在使用 ubuntu 服务器 16.04 (xenial),并且安装了 nginx,并添加了

deb http://nginx.org/packages/ubuntu/ xenial nginx

到 sources.list 然后

sudo apt-get install nginx

更新2

尝试使用“sudo”停止 nginx 仍然导致错误:

nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)

无论如何我也感到困惑为什么

ps aux | grep nginx

显示在我的用户下运行的进程(但无法使用 PID 终止它,并且每次运行命令时 PID 都不同)

更新 3

跑步

nginx -t

输出:

nginx: [alert] could not open error log file: open() 
"/var/log/nginx/error.log" failed (13: Permission denied)
2017/05/02 15:32:53 [warn] 8535#8535: the "user" directive makes sense 
only if the master process runs with super-user privileges, ignored in 
/etc/nginx/nginx.conf:2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2017/05/02 15:32:53 [emerg] 8535#8535: open() "/var/run/nginx.pid" 
failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed

答案1

当您想要启动或停止 nginx 守护进程时,您需要具有 root 权限。以普通用户身份运行命令不起作用。

这几乎是 Linux 中所有守护进程的标准。

答案2

您是如何安装 nginx 的?也许您应该尝试使用存储库包以获得良好的默认配置,否则您可以阅读 nginx 手册以获取更多信息。对我来说,您的问题只是服务器配置错误。您可以指定您正在使用的发行版吗?cat /etc/issue

答案3

您需要以 root 身份运行 Nginx 主进程。然后,您可以配置 Nginx 以您喜欢的用户或组身份运行工作进程 - 这就是错误消息所指的内容。

具体如何操作取决于您的操作系统,您尚未指定。现在您知道问题是什么了,您可以使用 Google 来找出详细信息。

答案4

Nginx 以守护进程的方式运行,应该作为服务来管理,而不是用户进程。在 ubuntu 下,可以使用命令service

  • sudo service nginx start启动 nginx
  • sudo service nginx stop停止 nginx
  • sudo service nginx restart停止然后重新启动 nginx
  • sudo service nginx reload告诉 nginx 在不停止服务的情况下重新加载其配置文件

编辑:并获取状态,sudo service nginx status

相关内容