rc.local配置nginx开机自启动遇到的一些问题

最近使用rc.local配置nginx开机自启动程序遇到了不少问题,在万能的网友帮助下(查资料),终于历经千辛万苦(资料不完整或者有问题),终于完美解决,特做此记录分享,以免时间长了会忘记,再次犯同样错误,同时也希望对遇到类似问题的网友有所帮助。

  • 检查rc.local权限

使用rc.local前先检查rc.local是否有+x权限

[root@localhost ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 5月  23 2019 /etc/rc.local -> rc.d/rc.local
[root@localhost ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 662 9月  22 14:58 /etc/rc.d/rc.local

如果没有权限,则会导致rc.local无法执行,执行命令:chmod +x /etc/rc.d/rc.local 即可;

  • 配置开机启动项目
touch /var/lock/subsys/local
/usr/sbin/nginx

在这个案例中,配置到rc.local中,按理说到这里,保存退出,即可大功告成,重启后发现,nginx根本没有启动,以为是rc.local不执行,于是查看了下系统启动日志,发现并不是,而是nginx启动报错(权限被拒),错误日志如下:

rc.local: nginx: [emerg] bind() to 0.0.0.0:9080 failed (13: Permission denied)

报上错误的原因有两个种情况:

  1. 端口号小于1024:

           运行的账号不是root就会报这个错误,需要切换到root,即开机启动项目配置改为:

touch /var/lock/subsys/local
sudo /usr/sbin/nginx

    2. 端口号大于1024:

        检查一下selinux是否开启了。如果开启了关闭selinux试试,如果关了selinux能正常说明端口可能与selinux的端口冲突了或http_port_t中没有开放对应的端口,检查http_port_t:

[root@localhost ~]# semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988

发现我nginx配置里面的9080段端口确实没有开放,增加端口:

semanage port -a -t http_port_t  -p tcp 9080

如果添加端口报如下错误:

ValueError: 已定义端口 tcp/9080

但是semanage port -l | grep http_port_t 检查的却看不到该端口存在,应该就是另一个服务具有TCP端口9080的已定义状态;

此时就需要使用修改端口命令:

semanage port -m -t http_port_t  -p tcp 8080

如果没有semanage命令,安装:https://blog.csdn.net/runsnail2018/article/details/81185653

再次检查端口:

[root@localhost ~]# semanage port -l | grep http_port_t
http_port_t                    tcp      9080 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988

重启系统,nginx自启动成功。

评论 2 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

信椿哥

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值