上线的环境还是使用了国内最喜欢用的CentOS系统,这次升级了CentOS7.2(其实还是不够新),装了docker。软件现在走docker的形式进行部署。我看了很多dockerhub上的,其实都是用debian作为基础操作系统。不过我们自己制作的docker其实也是基于CentOS7.2的。说真的,在docker下,Ubuntu/debian应该有不少先天的优势。一来内核比较新,支持的特性会相对多一些。而CentOS7虽然也是最新的,但是内核还是3.10。结果就是在使用docker的时候,出现了导致httpd会自己退掉的问题。
在docker-entrypoint.sh直接运行了httpd:
/usr/sbin/httpd
由于已经将配置文件改成我们自己的了。这样运行其实是后台运行的,我们用monit来监控运行情况。
结果上线后出现了以下的错误:
(17)File exists: AH01762: Failed to create shared memory segment on file /run/httpd/authdigest_shm.7 (17)File exists: AH01760: failed to initialize shm - all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled AH00020: Configuration Failed, exiting
结果httpd就自己退掉了,如果手动进入docker内部手动启动,其实是可以成功运行的。后来一查,是因为docker启动后,并不会创建/run/httpd
因此在执行之前,加入以下一些处理:
rm -rf /run/httpd/ mkdir -p /run/httpd/ /usr/sbin/httpd
删除原有的,再次创建,保证/run/httpd目录的存在后,再运行httpd,即可解决该问题。
转载请注明: 转载自elkPi.com
本文链接地址: CentOS7 docker httpd运行错误问题