解决SELinux导致Apache更改端口后无法启动的问题 - Apache - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > Apache

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

发布时间:2013-11-04 来源:服务器之家

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”;