热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解决SELinux导致Apache更改端口后无法启动的问题

apache更改端口后无法启动显示现象如下:第一次更改端口为:8000[root@cacti-testcacti]#servicehttpdstartStartinghttpd:httpd:Couldnotreliablydeterminetheserversfullyqualifieddomainname,using
apache更改端口后无法启动显示现象如下:第一次更改端口为:8000 [root@cacti-test cacti]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
(13)Permission denied: make_sock: could not bind to address [::]:8000
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:8000
no listening sockets available, shutting down
Unable to open logs
[FAILED]

尝试第二次将端口改为81
[root@cacti-test httpd]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
(13)Permission denied: make_sock: could not bind to address [::]:81
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:81
no listening sockets available, shutting down
Unable to open logs
[FAILED]
Google 一下,发现原来是 SELinux  安全机制的作用。
(很难搞,如果很多牵扯的权限的事情找不到原因,就可以分析是否是它的作用)

解决方法如下:
查看selinux状态:
[root@cacti-test httpd]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted
或者用
[root@cacti-test httpd]# getenforce
Enforcing
关闭selinux状态:(使用无启重启系统的方法)
[root@cacti-test httpd]# setenforce 0            关闭命令
[root@cacti-test httpd]# getenforce              重新查看selinux状态
Permissive  

尝试再次启动apache
[root@cacti-test httpd]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[  OK  ]        成功!!
永久去掉启动失效方法:

[root@xxx ~]# ls -Z /root/
-rw——- root root system_u:object_r:user_home_t anaconda-ks.cfg
-rw-r?r? root root root:object_r:user_home_t install.log
-rw-r?r? root root root:object_r:user_home_t install.log.syslog
其中的“user_home_t”就是SELinux策略属性,而需要httpd能访问必须要是“httpd_user_content_t”属性。
执行一下命令修改你的目录属性
chcon -R -t httpd_user_content_t /dir/ #将/dir目录下所有文件属性设置成 “httpd_user_content_t”
接下来重启httpd
[root@xxx httpd]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
大功告成。
得到一个结论,一般碰到莫名其妙的问题一定要先看错误日志,linux下大部分软件都有自己的日志,这样定位起来问题才会不花冤枉时间。
当然也可以去禁止掉SELinux。
1.立即关闭SELinux。setenforce 0;#重启失效
2.修改配置文件 vim /etc/selinux/config;把SELINUX修改成”enforcing”—>”disable”;

推荐阅读
author-avatar
帅到不行2502875781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有