我们经常会在linux上遇到不同的问题,例如我明明设置了足够的权限,但还是提示权限不足。或者我明明配置好了httpd.conf的目录,访问localhost还是无法,又或者apache无法启动等等原因。
太多太多,我将我的发现和解决方法全部记在这里的,欢迎大家补充。
所有的操作都需要root权限。
1.
给网站根目录下的项目足够的权限.
su chmod -R 777 ./
2.
有些系统默认是开启SeLinux的,关掉它。
修改/etc/sysconfig/selinux文件:SELINUX=enforcing为SELINUX=disabled(要重启) 或直接在命令行下输入 : setenforce 0(不用重启)
3.
(如果你系统默认没有开启SeLinux可以跳过这一步)
chcon -R -h -t httpd_sys_content_t /home/konakona/www
把目录或文件的策略类型改成 httpd_sys_content_t 。
4.
打开httpd.conf,将“ServerName www.example.com:80”前的#去掉。
“<Directory>”中的地址必须与 “DocumentRoot”一致。
DocumentRoot “/home/konakona/www”
<Directory “/home/konakona/www/”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
(代码1)
如果以上步骤完成后,还算无法打开,那么继续下面的。
1.
httpd.conf:
检查所有 “Allow from “处,改为 “Allow from all”(允许所有来源访问)
“AllowOverride All” 全部改成 “AllowOverride None”。
所有“Order ” 以及其后面的参数(整句话)改为”Order allow,deny”。
在仔细检查一下其他<Directory>的里面的设置,除了目录名不用改以外,都可以参考代码1<Directory></Directory>里边的代码,嫌麻烦,也可以全部copy过去。
2.
执行命令
strace -p apache id
这个是监视apache进程的,也是一个同事告诉我的,但不知道为什么,运行完着这个命令以后就可以打开http://localhost了……(在此之前,我上面的工作都做全了的)
。。。但是上面这个方法成功是上周6的事!现在是礼拜一!启动apache后看到的竟然是apache默认页面!!!可是我早已删除了aapche默认的www了啊!而httpd.conf指向的目录是我的项目,里边有什么东西我最清楚不过了。
难道有2个apache?
检测命令有2个,一个是进程查看:
ps -aux
如果apache用户的目录是相同的,则没问题,如果不相同,则说明安装了2个apache。
一个是占用端口查看:
netstat -ap | grep http
一般来说,只有3行信息,如果超过了,说明还有其他占用http服务。
你可以通过输入:
httpd version
来查看当前运行的apache的版本,来决定到底卸载那一个。
如果这样还不行……留言给我!
发表回复