我有一个运行多个网站的网络服务器。
当我 ssh 登录时,它给了我一个标签名[电子邮件保护],这是违反直觉的,使得这些标签看起来像是在我的本地主机上。
我想更改主机名,但我想确保它不会破坏任何其他东西。
那么该主机名字符串用于什么目的?我如何确保它不会影响任何正常运行的系统?
答案1
我相信唯一应该直接访问 /etc/hostname 的是启动脚本 /etc/init.d/hostname.sh。
您的 apache 配置可能依赖于主机名。设置 apache 时,您是否在配置中使用了 IP 地址,还是使用了 /etc/hostname 中的名称。
如果您设置了邮件服务器,它也可能使用 /etc/hostname 中的名称。虽然 localhost.localdomain 是 /etc/hostname 中的内容,但我怀疑您的电子邮件系统已经部分损坏。
我认为更改文件应该相当安全。更改文件,运行 /etc/init.d/hostname.sh,然后重新启动您正在运行的任何服务,如 apache。如果存在问题,修复应该只是对几个配置文件进行微小的编辑。
如果您真的非常谨慎,您可以将生产系统复制到虚拟机中,在虚拟机中进行更改,然后查看会出现什么问题。如果您还没有测试环境,现在可能是设置测试环境的好时机。
答案2
虽然主机名是在 /etc/hostname 中定义的,但许多进程将使用 DNS 和/或 hosts 文件来确定主机名。因此,您可以尝试查看 /etc/hosts,并检查 /etc/resolv.conf 中列出的名称服务器,以查看已定义的内容。
答案3
您遇到的问题可能出在 /etc/hosts 中。这是查找地址的地方。那里应该有一个用于服务器 IP 地址的条目。后备方法是使用环回地址 localhost@localdomain。
看http://www.faqs.org/rfcs/rfc1178.html有关命名主机的最佳实践。/etc/hostname 用于在启动期间填充内核中的名称。将非限定名称放入 /etc/hostname 并运行“sudo /etc/init.d/hostname start”。还使用 /etc/hosts 中的接口地址在 /etc/hosts 中为您的主机名添加一个条目。
邮件服务器应使用 /etc/mailname 来确定其名称。这应是一个完全合格的地址,例如 myhost.example.com。
答案4
根据 /etc/nssswitch.conf 文件中的配置,您可以在调用其他系统(通常是 DNS)之前使用它进行域名解析。
hosts: files dns
这表明它应该首先使用本地文件(/etc/hosts),然后查询 DNS。
因此,通常情况下,系统会先通过 /etc/hosts 路由所有主机名查询,然后再查询 DNS。