EQVPS
ТаблоЗапочни

Как да смените името на сървъра и часовата зона на VPS

Преименувайте сървъра си и сверете часовника му с вашата часова зона в Ubuntu, Debian и Windows Server — без предупреждението на sudo след самото hostnamectl и с проверка на cron, логовете и синхронизацията на времето след промяната. Всяка стъпка е проверена на нашите образи.

Новият сървър носи името, което сте написали при поръчката, а часовникът му е на UTC. И двете се сменят лесно. Преименуването има една уловка: обичайната команда оставя стар ред в /etc/hosts и в Ubuntu sudo се оплаква от него преди всяка команда. Това ръководство оправя двете неща в Ubuntu и Debian и показва командите за Windows Server. Минахме всяка стъпка на собствените си образи.

Нужен ви е потребител със sudo. Ръководството за настройка на Ubuntu създава такъв.

1. Проверете текущото име и време

hostnamectl
timedatectl

Новият ни сървър с Ubuntu 24.04 показа като постоянно име това от поръчката, както и Time zone: Etc/UTC, System clock synchronized: yes и NTP service: active. При Debian 12 и 13 беше същото. Синхронизацията на часовника вече работи, така че не е нужно да инсталирате NTP.

2. Сменете името на сървъра

Изберете кратко име или пълно, ако ще съвпада с DNS запис, който управлявате, например web1.example.com:

sudo hostnamectl set-hostname web1.example.com

Името се сменя веднага, но /etc/hosts все още свързва 127.0.1.1 със старото. В Ubuntu това се видя веднага:

sudo: unable to resolve host web1.example.com: No address associated with hostname

hostname -f се проваляше по същия начин. Debian намери името по друг път и не показа предупреждение, но неговият /etc/hosts беше също толкова остарял. Поправете файла и на двете:

sudo sed -i 's/^127\.0\.1\.1 .*/127.0.1.1 web1.example.com web1/' /etc/hosts
grep 127.0.1.1 /etc/hosts
hostname -f

След това sudo замълча, hostname -f изведе web1.example.com, а hostname -s — web1.

Коментарът в началото на /etc/hosts казва, че файлът се управлява от cloud-init и промените ви може да се изгубят. На нашите образи cloud-init го записва само при първото зареждане на сървъра. Рестартирахме, а после накарахме cloud-init да приеме следващото зареждане за нова инсталация. Името и нашият ред в /etc/hosts оцеляха и двата пъти.

Името на сървъра съществува само на самия сървър. Ако други машини трябва да го намират по това име, добавете и DNS запис: как да насочите домейн към VPS обяснява това. За пощенски сървър има значение и обратният запис: вижте настройката на обратен DNS.

3. Сменете часовата зона

Изведете списъка със зоните и изберете своята. Нашият сървър имаше 497:

timedatectl list-timezones | grep -i tokyo
sudo timedatectl set-timezone Asia/Tokyo
timedatectl

Самият часовник не се премества. Променя се само как се показва времето и как се четат местните разписания. Ето какво видяхме след прехода от UTC към Asia/Tokyo:

КаквоСлед промяната
date, journalctlВеднага токийско време
cronВеднага токийско време: задача за 09:48 се изпълни в 09:48:01 JST, без рестарт
/var/log/syslog (Ubuntu)Записваше време по UTC, докато не рестартирахме rsyslog
/etc/timezone (Ubuntu)Все още Etc/UTC

Затова рестартирайте услугата за логове и всичко дълготрайно, което извежда време, например приложението си:

sudo systemctl restart rsyslog

Debian 12 и 13 не инсталират rsyslog. Логовете им са само в journal, а той сам следва новата зона.

Някои стари програми четат зоната от /etc/timezone, а не от системната настройка. Ако някоя от тях още показва UTC, запишете там същото име и рестартирайте програмата:

echo Asia/Tokyo | sudo tee /etc/timezone

Преди да превключите, прегледайте crontab. Ред 0 3 * * *, писан за 03:00 UTC, вече ще се изпълнява в 03:00 токийско време, тоест девет часа по-рано в реално време.

4. Windows Server

В Windows Server 2022 отворете PowerShell като администратор. Преименуването изисква рестарт:

Rename-Computer -NewName web1 -Restart

Имената на компютри в Windows са ограничени до 15 знака, затова тук използвайте краткото име.

За часовата зона намерете идентификатора и го задайте. Прилага се веднага, без рестарт:

Get-TimeZone -ListAvailable | Where-Object Id -like '*Tokyo*'
Set-TimeZone -Id 'Tokyo Standard Time'
Get-TimeZone

Щом вече сте влезли, моментът е подходящ да защитите RDP.

Кой план

Името и часовата зона не струват нищо, така че става всеки план: Nano за $3/месец за малък Linux сървър, Windows-Small за $11/месец за Windows Server 2022. Всички планове са на страницата VPS, а плащането е в USDT, USDC или ETH в мрежите Base, Ethereum или Polygon.

Въпроси

Ще върне ли cloud-init старото име след рестарт?

Не и на нашите образи. Зададохме ново име с hostnamectl, рестартирахме, а после накарахме cloud-init да приеме следващото зареждане за съвсем нова инсталация. Името остана и двата пъти, както и промяната ни в /etc/hosts. Преинсталирането дава чиста система с първоначалното име.

Защо sudo пише „unable to resolve host“ след преименуването?

hostnamectl сменя името, но не и /etc/hosts, където 127.0.1.1 все още сочи към старото име. В Ubuntu тогава sudo извежда „unable to resolve host“ преди всяка команда. Сменете старото име с новото на реда 127.0.1.1 и предупреждението изчезва.

Сървърът ми да е на UTC или на местно време?

UTC е по-сигурният избор: часовете в логовете на различни сървъри съвпадат и няма скокове при смяната на часа. Минете на своята зона, ако искате задачите на cron и часовете в логовете да са по вашето време. И двата варианта работят и можете да ги сменяте когато пожелаете.

Трябва ли да настройвам NTP?

Не. Нашите образи на Ubuntu и Debian синхронизират часовника със systemd-timesyncd от първото зареждане. Изпълнете timedatectl и потърсете реда „System clock synchronized: yes“.

Ще повреди ли смяната на зоната задачите ми в cron?

Cron веднага започва да работи по новата зона. На нашия сървър с Ubuntu 24.04 задача за 09:48 токийско време се изпълни в 09:48:01 токийско време, без рестарт на cron. Но проверете задачите, писани за UTC: сега те ще се изпълняват в този час по вашето местно време.

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.