[error] NSS_Initialize failed

之前有台服务器(CentOS 5.5 x86_64)装完了系统就没碰过(安装过程中默认配置了 apache)。今天下午有空把基本环境配置了一下,顺便 yum update 了一下,reboot 后发现主页访问不了了!service httpd restart,还是不好访问,top 看,3 个僵尸,没在意;再重启服务,ps -ef | grep def,变成了 5 个。
并且全是 httpd 产生的进程,kill -9/kill -15 刚杀完几秒钟又出来了,除非杀死 httpd 的父进程或者 /etc/init.d/httpd stop。查看 error_log,才一会功夫就 60M 了,果真是要没不出问题,一出问题就能撑爆 /var 。

[Thu Apr 14 19:43:05 2011] [error] NSS_Initialize failed. Certificate database: /etc/httpd/alias.
[Thu Apr 14 19:43:05 2011] [error] SSL Library Error: -8038 SEC_ERROR_NOT_INITIALIZED

google 之,发现是 nss_module 出的问题。

简单的说 nss_module 是提供 ssl 服务的模块,继承自 mod_ssl 这个模块。由于我不需要系统 https 服务,最简单的方法如下:

# pwd
/etc/httpd/conf.d
# mv nss.conf nss.conf.bk
改成不是以 .conf 结尾就可以了。

其实这个是 bug:https://bugzilla.redhat.com/show_bug.cgi?id=669963

NSS 数据库需要被 apache 这个用户可读,修改 /etc/httpd/alias/*.db 下面的 user:group:

# chmod g+r /etc/httpd/alias/*.db
# chgrp apache /etc/httpd/alias/*.db

教训:
出问题了注意查看相应服务的日至记录。
不要求新而更新系统,还好没直接跳到 5.6,虽说是稳定版本,但是毕竟是新事物,接下去就用哲学的观点去解释吧。
安装这台机子的时候由于当时时间紧促,就直接在安装系统的时候勾选了 apache 服务,想想以后还不不能这么做,默认安装哪些包都不清楚。

  • http://www.freetstar.com freetstar

    小妞碰到问题了。。。

  • mrseacow

    “不要求新而更新系统”——我现在也是这样认识的

    • http://jaseywang.info jaseywang

      在外面旅游还有时间看博客==