原文 http://blog.163.com/sujoe_2006/blog/static/335315120111158576591/
病状:启动报“My unqualified host name unkown...Sleeping for retry...”错误警告,并进入睡眠等待。只有crtl+c后才继续加载后续信息,直至login.
#vi /etc/rc.conf
修改hostname为你的真实域名/任意域名,只要满足域名规则即可,保存,退出。
需要说明的是,如果你的freebsd中安有apache,并同时打开了ServerName选项,那么,如果你的hostname无效,将导致apache无法启动,报错为:“Failed to enable the 'httpready' Accept Filter“
原因是freebsd无法获取域名的IP地址。
解决方法是:
1,如有真实域名,可修改hostname为你的真实域名,并修改/usr/local/etc/apache22/httpd.conf中的ServerName为:
ServerName www.yourdomain.com:80
2,无真实域名,那么hostname为任意域名,并注释掉/usr/local/etc/apache22/httpd.conf中的ServerName,保存,退出即可!
关于错误“Failed to enable the 'httpready' Accept Filter”的解决方法:
#kldload accf_http
修改/boot/defaults/loader.conf中的
accf_data_load="NO"
accf_http_load="NO"
为:
accf_data_load="YES"
accf_http_load="YES"
保存!
经测试,如hostname为无效域名,那么,系统启动后,apache无法启动。原因是apache无法获取到域名对应ip,即使ServerName 设为127.0.0.1也不行,只能手工启动apache。
网上有人提出:httpd.conf 里注析掉 unique_id_module,但这样会造成模块应有的功能缺失。不推荐!
模块unique_id_module的功能:
This module provides an environment variable with a unique identifier for each request.
(为每个请求生成唯一的标识以便跟踪)
-------------------------------------------------------------------------------------
网上找到的可行方案:
若为FreeBSD定义的hostname无法在网络上生效,则apache无法正常启动。
"[alert] (EAI 8)hostname nor servname provided,or not known:mod_unique_id:unable to find IPv4 address of "phpstone.my.domain" Configuration Failde"
"[alert] (EAI 8)hostname nor servname provided,or not known:mod_unique_id:unable to find IPv4 address of "phpstone.my.domain" Configuration Failde"
临时的解决办法1:定义hostname为localhost,定义httpd.conf的ServerName 127.0.0.1:80(我用这个方法能成功启动apache,但是这样定义会在安装mysql的时候出点小问题,这里仅是提供下尝试的方法)
临时的解决办法2:定义hostname为任意域名如example.com,注释掉ServerName这一项。我在FreeBSD 7.0-RELEASE-p1,apache-2.2.8上测试能成功启动无此经警告提示
假定你没有固定ip和域名的话,最好的还是安装个花生壳程序弄个动态域名并将其作为hostname
假定你没有固定ip和域名的话,最好的还是安装个花生壳程序弄个动态域名并将其作为hostname
-------------------------------------------------------------------------------------
综上所述,本人认为最可行的方法是:
1、有真实域名,使用真实域名
2、无真实域名,任意域名,并注释掉ServerName