记录一次apache服务器启动报错和解决方法

问题描述:
在liunx系统上安装软件时需要较大的权限,一般用户是不能随便安装的。为了省事,在安装lamp环境时,整个过程都是以root身份安装各种软件的。
最后整个环境是安装成功,但是像apache这样的服务器如果以root用户的身份运行存在较大的风险,对整个系统也存在较大的安全隐患。
所以决定添加一个系统用户用来运行apache服务器,就给系统添加了一个名为www的用户。

接着是修改apache的配置文件,将运行用户改为www,如下图所示

接着将apache下的htdocs和logs目录的属主和属组都改为了www,因为apache服务器在运行时会访问htdocs和往logs目录中写入日志记录,所以就给了www用这两个目录的rwx权限,如下图所示

本以为做了以上配置和更改后,使用www用户身份可以正常启动apache服务器,没想到还是报错了,如下图所示

对于上面图片出现的报错的一些说明:
前面的两行信息可以不用管,主要提示服务器没有一个合格的域名,由于这是测试环境可以不管。通过第三行和第四行可以明显的看到是权限的问题,大概意思就是服务器启动时绑定80端口失败,
开始一直找不到原因,以为是防火墙和selinux的问题,但是关掉防火墙和selinux后问题还没有解决。后来网上找资料,看到以为网友的文章,他遇到的问题和我的类似,只不过他是通过一个普通用户调用脚本
启动httpd服务器,也是报类似的错误,文章中提到httpd的执行需要root权限,就是这句话启发我了。因为不管是通过apachectl还是脚本去调用httpd启动,最终都是都是要执行httpd这个可执行文件,所以
这时候就要看执行脚本或启动apachectl的那个普通用户对httpd这个文件有没有执行权限。


所以就进入到/usr/local/apache2/bin/目录下修改一下httpd的权限,执行命令
chmod u+s httpd

修改后文件权限如下图所示

这里对图片中权限位中拥有者的权限做一下说明,rws这是表示当一个没有权限操作该文件的普通用户(就像该实例中的www用户)执行该文件或对文件做其他的受限制性操作时,身份会临时切换为该文件的拥有者身份,
身份切换为拥有者身份后就想做什么就做什么,不受文件权限限制了,注意这个身份切换只是临时的,只在该进程执行的过程中生效,一旦执行完脚本或进程结束,身份有切换为普通用户了。

经过上面的权限修改后,www用户就可以正常启动apache服务器了。

posted on 2017-10-29 21:39  iaknehc  阅读(1390)  评论(0编辑  收藏  举报

导航