这一期我们来分享几个nginx容易遇到的问题:
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
1 | ryan:~ ryan$ sudo nginx //启动nginx |
错误提醒的多明显。”bind() to 0.0.0.0:80 failed “。
- 我们可以很容易猜到大概意思就是不能使用80端口。
- 再猜一下,80端口可能被占用了。
- 我们先验证下80端口有没有被占用。
- 如果被占用关闭之前的进程,再启动一次nginx.
mac 查看端口是否被占用。
1 | // 查80端口是被什么进程占用 |
window 查看端口是否被占用。
1 | //cmd下运行如下命令 |
Proto Local Address | Foreign Address | State | PID |
---|---|---|---|
TCP | 0.0.0.0:80 | 0.0.0.0:0 LISTENING | 656 |
上面找到了占用80的pid,然后
1 | C:\>Taskkill /PID 656 /F |
当然也可以能过运行1
C:\>tasklist //找到656这个进程所对应的程序名。然后直接通过任务管理器关闭相应的进程就行了。
ps
有时候我们可能已经开启了nginx服务。再次开启nginx服务,毫无疑问会报上面的错误。如果是在生产环境,就不要中断服务了。可以如下操作
1 | sudo nginx -s reload |
如果确实想重启nginx。可以如下操作:
1 | sudo nginx -s stop |
当我们重新配置一个新的nginx服务访问时出现”403 Forbidden“解决方法
当我们在访问 http://localhost 时屏幕显示”403 Forbidden
nginx/1.12.0”。 当然里的前端我们先配置了80端口下的这个服务。
现在我们先来猜问题:
- 403 forbidden => 懂点英文的都会知道。被禁止了。
- 我们再顺着被禁止了去猜。假如我们被禁止进入某一场所,说明我们是没有权限。
- 大概猜到是权限问题。大致会出现两种权限的可能: 我们没有权限访问服务器。我们的服务器没有权限访问网站所对应的文件。
- 再稍稍猜一下。自已配置的服务器怎么会不让自己访问。我们就可以排除第一种可能啦。我们先假设可能是服务器不能访问网站所对应的文件去试试。
修改文件访问权限
1 | shell>chmod-R 755 /usr/local/nginx/html |
重启了下nginx服务器好像真的可以访问。验证了我们的猜想。
我自己遇到过一次改了权限,仍不能访问的情况。
最终发现是文件组受了限制。
1 | //不可访问路径 |
1 | //改变所属的组 |
拓展
按如上的方式修改文件所属的组,细想不是很合理,上面只是说了是权限问题,没有说得足够细,以及为什么要将staff组改成admin组。这里继续补充。
liunx下的用户和用户组
linux是多用户和多任务的系统,很可能存在多人同时使用一台liunx主机工作的情况。为了考虑每个人的隐私权,以及每个人的喜欢的工作环境。因此设计了“用户和用户组”这样的“文件所有者”。正因为此所以某一用户在访问其他用户的文件时为存在权限问题。
上面所讲的内容如何和我们遇到的nginx的问题关联起来。
1 | //linux 命令行下执行 |
Linux 中的 wheel 组和 staff 组 及admin组区别。
The wheel group is used to control those people that can su to the root user (though this is made irrelevant by the sudo command).
All of the users on your system will be in the staff group, so by changing group ownership of files to staff the group permissions will apply to all users. All of the administrators on your system will be in the wheel group, so by changing group ownership of the files to wheel group permissions will apply to all of the administrators, global permissions will apply to any other users.
My advice is that, except for files that you have created, you leave the group ownership and permissions alone. Unix is very particular about file ownership and permissions in certain areas and changing them only leads to trouble.
所有的用户都属于 staff 组,
只有具有管理员性质的用户位于 wheel 组中。
wheel 是一个特殊的用户组,该组的用户可以使用 su 切换到 root,而 staff 组是所有普通用户的集合。
admin组就不用说了,翻译过来就知道了管理员组。
讲到这里可能不用说如何修改上述403的问题都知道如何修改了。
把nginx的启动用户改成root;
1 | user root staff; |
有兴趣的可以去了解一下”/etc/group和/etc/passwd及/etc/shadow文件”主个文件的内容。
今天的分享先到这里了。