Vietnes pārcelšana uz jaunu VPS: rsync un datubāze
Vietnes pārcelšana uz jaunu serveri sastāv no trim lietām: nokopēt failus, pārcelt datubāzi un pārslēgt domēnu. Ja visu darīsiet pēc kārtas un pārbaudīsiet vietni pirms DNS maiņas, migrācija noritēs gandrīz bez dīkstāves.
Migrācijas plāns
- Sagatavot jauno VPS (tīmekļa serveris, PHP, datubāze).
- Nokopēt vietnes failus ar
rsync. - Pārcelt datubāzi ar dump failu.
- Pārbaudīt vietni jaunajā serverī pēc IP adreses.
- Pārslēgt DNS un sagaidīt izplatīšanos.
1. solis. Jaunā servera sagatavošana
Uzstādiet to pašu vidi, kas ir vecajā serverī (piemēram, LEMP), un izveidojiet tukšu datubāzi ar lietotāju. Iestatiet SSH piekļuvi starp serveriem — ērti ģenerēt atslēgu vecajā serverī un pievienot to jaunajam:
ssh-keygen -t ed25519
ssh-copy-id user@NEW_SERVER_IP
2. solis. Failu kopēšana ar rsync
rsync pārceļ tikai mainītos failus un saglabā tiesības. Palaidiet to no vecā servera:
rsync -avz --progress /var/www/example.com/ \
user@NEW_SERVER_IP:/var/www/example.com/
Karogi: -a — saglabāt tiesības, īpašniekus un simboliskās saites, -z — saspiešana kanālā, -v — detalizēts izvads. Slīpsvītra avota ceļa beigās nozīmē «kataloga saturs».
Lielai vietnei veiciet iepriekšēju sinhronizāciju laikus, bet gala sinhronizāciju — tieši pirms pārslēgšanas, lai panāktu svaigākās izmaiņas.
3. solis. Datubāzes pārcelšana
Vecajā serverī izveidojiet dump failu. MySQL un MariaDB gadījumā:
mysqldump --single-transaction -u root -p app_db | gzip > app_db.sql.gz
Nokopējiet dump failu uz jauno serveri:
rsync -avz app_db.sql.gz user@NEW_SERVER_IP:/tmp/
Jaunajā serverī importējiet to:
gunzip < /tmp/app_db.sql.gz | mysql -u root -p app_db
PostgreSQL komandas ir līdzīgas:
pg_dump -Fc app_db > app_db.dump
# jaunajā serverī:
pg_restore -d app_db --clean app_db.dump
4. solis. Vietnes konfigurācijas labošana
Atjauniniet datubāzes savienojuma rindu lietotnes konfigurācijā (piemēram, wp-config.php, .env) — hosts, datubāzes nosaukums, lietotājs, parole. Pārbaudiet katalogu tiesības:
sudo chown -R www-data:www-data /var/www/example.com
5. solis. Pārbaude pirms DNS pārslēgšanas
Nemainot DNS, pārbaudiet vietni jaunajā serverī, aizstājot domēnu savā datorā failā hosts:
NEW_SERVER_IP example.com
(Linux un macOS sistēmā tas ir /etc/hosts.) Atveriet vietni — ja viss strādā, var pārslēgt domēnu. Pēc pārbaudes rindu no hosts noņemiet.
6. solis. DNS pārslēgšana
Diennakti pirms pārcelšanas samaziniet A ieraksta TTL (piemēram, līdz 300 sekundēm) — tad pārslēgšanās izplatīsies ātrāk. Nomainiet A ierakstu uz jaunā servera IP un sekojiet līdzi:
dig +short example.com
Kamēr DNS atjaunojas pie pakalpojumu sniedzējiem, daļa trafika vēl iet uz veco serveri — tāpēc neizslēdziet to vismaz diennakti.
Kontrolsaraksts pēc pārcelšanas
| Pārbaude | Kā |
|---|---|
| Vietne atveras | pēc domēna, kad DNS nomainīts |
| Datubāze pieslēgta | žurnālos nav savienojuma kļūdu |
| Failu tiesības | chown www-data, augšupielādes strādā |
| SSL | izdot certbot sertifikātu no jauna jaunajā serverī |
| Cron uzdevumi | crontab jāpārceļ manuāli |
Biežākie jautājumi
Kā pārcelt vietni bez dīkstāves?
Sinhronizējiet failus un datubāzi laikus, pārbaudiet vietni caur hosts, tad veiciet gala sinhronizāciju un pārslēdziet DNS. Veco serveri turiet ieslēgtu vēl diennakti.
Kāpēc rsync nesaglabā tiesības?
Palaidiet to ar karogu -a (arhīva režīms) un no lietotāja ar pietiekamām tiesībām; pilnai īpašnieku saglabāšanai var būt vajadzīgs sudo un --numeric-ids.
Vai SSL sertifikāts ir jāpārceļ? Vienkāršāk to izdot no jauna ar certbot jaunajā serverī pēc DNS pārslēgšanas — tas aizņem minūti.
Kāpēc pēc pārcelšanas daļa apmeklētāju redz veco vietni? DNS tiek kešots pie pakalpojumu sniedzējiem atbilstoši TTL. Samaziniet TTL laikus un pagaidiet dažas stundas pēc ieraksta maiņas.
Jaunajam serverim izvēlieties konfigurāciju ar rezervi: skatiet VPS serveru noma, bet CMS vietnēm — WordPress VPS.