我是 Linux 的菜鸟,但对 PHP、MySQL、OOP、Java、Eclipse 等有丰富的经验。我以前曾多次尝试涉足 Linux 领域,但每次遇到困难都会打退堂鼓。现在看来这种情况又发生了。如能得到任何帮助,我将不胜感激。
我预订了一个小型 Centos 6.9 VPS 并尝试安装 NGINX,这个简单的事情花了我两天时间,打开了几十个浏览器搜索选项卡,仍然没有在浏览器中看到“NGINX 正在工作”屏幕。我尝试了几个不同的教程,但看起来最完整的是:
[https://www.atlantic.net/community/howto/configure-nginx-on-a-centos-6-server/][1]
我按照建议运行了更新。我安装了 MariaDB 而不是 MySQL。我正在使用 puTTY 和 SSH Explorer。
nginx -t 报告成功。
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
我可以 ping 服务器 IP。
如果我尝试重新启动 NGINX,我会收到一个我无法理解的权限错误,因为我是以 root 用户身份执行所有操作的:
$ service nginx restart
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed [root@centos6:/etc/nginx/conf.d ]
这是一个致命的错误吗?
下一个问题:如果我一步一步地执行此操作,并且仅尝试通过 IP 访问服务器,请问有人能用最简单的术语告诉我如何更改默认配置文件吗?我尝试了一些教程,但遗憾的是仍然没有成功。有些教程没有对配置文件进行任何更改,应该可以正常工作,但实际上却不行。有些教程主要使用域名进行配置更改,我没有域名(这将是下一步),但仍然不起作用。我可以运行其他命令来了解发生了什么吗?
添加所需信息谢谢先生:
我的目标是尝试让 WP Multisite 正常工作,但我认为我只期望看到成功屏幕是合理的。不,抱歉,我使用了 Yum 安装,但开箱即用。我只是想知道它怎么能知道我的 IP 地址?配置不需要这个吗?抱歉,我问了这么多菜鸟问题。
nginx.conf 的内容与安装时相同:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
}
Contents of error log as requested:
2017/04/25 13:35:17 [emerg] 2563#0: bind() to 0.0.0.0:8000 failed (13: Permission denied)
2017/04/25 13:41:40 [emerg] 2606#0: bind() to 0.0.0.0:8000 failed (13: Permission denied)
2017/04/25 15:13:41 [emerg] 14498#0: open() "/var/run/nginx.pid" failed (13: Permission denied)
2017/04/25 15:14:41 [emerg] 14513#0: open() "/var/run/nginx.pid" failed (13: Permission denied)
2017/04/25 16:41:46 [emerg] 14591#0: open() "/var/run/nginx.pid" failed (13: Permission denied)
Additional info.
Contents of /etc/nginx/conf.d/default.conf (unchanged from installer)
#
# The default server
#
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
答案1
安装nginx非常简单:
- 使用包管理器安装 nginx
- 在防火墙中打开正确的端口
对于 1,只需执行以下操作:yum install nginx
。对于 2,您可以执行以下操作:
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo /etc/init.d/iptables save
默认情况下,nginx 会响应来自任何主机名或 IP 的任何请求。
答案2
好了,伙计们,我终于让它工作了!多亏了上面的调试帮助,很明显问题不是出在 NGINX 而是 IPTABLES。但作为一个新手,我不知道哪里出了问题,我只知道它没有工作。
问题原因:显然,CENTOS 6 默认 IPTABLES 配置文件末尾包含一条阻止所有流量的规则。在此之后添加另一条规则以打开端口 80 毫无作用。这解释了为什么它不起作用。
解决方案:这篇文章解释了整个事情:
http://www.binarytides.com/open-http-port-iptables-centos/
从该文章中粘贴,以防它消失:
默认 IPTABLES 配置:
[root@dhcppc2 ~]# iptables --line -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 273 22516 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 271 36456 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 172 packets, 24494 bytes)
num pkts bytes target prot opt in out source destination
[root@dhcppc2 ~]#
在第 5 行正确插入新的 80 端口规则的命令:
# iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
生成的配置文件:
[root@dhcppc2 ~]# iptables --line -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 291 23868 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW,ESTABLISHED
6 286 38524 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 4 packets, 608 bytes)
num pkts bytes target prot opt in out source destination
[root@dhcppc2 ~]#
再次感谢所有提供帮助的人。