2

我用 CentOS 操作系统在 Google Compute Engine 中创建了一个 Google 实例,然后我安装了 Cpanel。我的问题是 WHM/Cpanel,它需要一个主机名是FQDN 主机名,专门用于更新 Cpanel,否则它将失败。

我的问题是,在更改主机名后,实例在重新启动操作系统或重置/停止/启动实例后恢复为旧主机名。

我以前检查过大多数问题,但我尝试了大多数解决方案都没有运气。重启后它不断变化,我尝试了以下所有方法以及更多:

在以下位置创建 sh 脚本:

/etc/dhcp/dhclient-exit-hooks.d/

更改主机名

/etc/hostname

编辑文件

/etc/dhclient.conf

然后在其中添加我的网络接口:

supersede host-name "host.domain.com"

最后crontab

@reboot hostname="host.domain.com"; sed -i "s/.*Google.*//" /etc/hosts; hostname "$hostname"

但重启后,主机名会变回实例名。即使在重新启动后,是否还有其他解决方法可以永久更改我的主机名。?

谢谢

4

4 回答 4

0

这在运行 Ubuntu 16.04 的 GCE 实例中对我有用:

1:打开/etc/hostname( sudo nano /etc/hostname) 并将主机名更改为新的。

2:打开/etc/hosts( sudo nano /etc/hosts)。第一行可能是:

127.0.0.1 localhost

将您的新主机名添加到该行的末尾,因此它应该如下所示:

127.0.0.1 localhost <new_hostname>

3:打开/etc/rc.local( sudo nano /etc/rc.local)。在 line 之前exit 0,添加另一行:

hostname <new_hostname>

4:就是这样!主机名已永久更改。您可以通过运行bash或重新启动实例来打开新的 bash shell。

于 2019-04-04T09:35:46.153 回答
0

这对我有用,我希望我的主机名是一个子域,即:server1.example.com:

1:更改/etc/hosts file添加:

127.0.0.1       localhost.localdomain   localhost
192.168.1.100   server1.example.com     server1

2:更改etc/hostname文件(如果不存在,则创建它):仅添加子域部分,即:server1

3:更改/etc/dhcp/dhclient.conf添加:

supersede host-name "server1.example.com";

4:创建一个cron jobrun sudo crontab -e然后添加:

@reboot hostnamectl set-hostname server1.example.com

5:sudo reboot

于 2018-08-08T11:04:49.247 回答
0

您可以创建一个类似的 crontab 条目,但您可以使用hostnamectl在启动时设置主机名,而不是使用帖子中的行。

我已经使用 Google 的 Centos7 和 Debian9 映像对此进行了测试,并且两者都适用。但是,我发现使用 Centos,我必须在命令执行之前添加延迟(见下文)。

例如,打开 crontab:

sudo crontab -e

然后为 Centos 输入这一行:

@reboot sleep 15 && hostnamectl set-hostname YOUR_HOSTNAME

对于 Debian,这很有效:

@reboot hostnamectl set-hostname YOUR_HOSTNAME

我没有对 crontab Centos 计时进行太多实验(您可能可以使用低于 15 秒的数字),但根据我的经验,单独使用 @reboot 似乎并没有在启动时启动更改。

于 2018-04-15T15:19:35.153 回答
0

自动更改主机名而不重启的问题通过在“/etc/dhcp/dhclient-exit-hooks.d/”中创建一个“.sh”可执行文件来解决它,例如:下面我们创建文件“set_my_hostname.sh”,您可以创建具有任何名称的 sh 文件:

cd /etc/dhcp/dhclient-exit-hooks.d/
nano set_my_hostname.sh

然后在文件里面放:

hostname hosting.domain.com

保存文件并使其可执行:

chmod +x set_my_hostname.sh

并修复,重启后主机名自动更改,创建一个 cronjob 以延迟重启
(感谢neilH的帮助):

sudo env EDITOR=nano crontab -e

然后添加这一行:

@reboot sleep 20 && hostnamectl set-hostname "hosting.domain.com"
于 2018-05-02T11:06:03.467 回答