Ai compilat, ai testat, totul merge pe serverul de test. Acum urmează momentul cel mai delicat: să pui noul `game` sau `db` pe serverul cu jucători. Un fișier compilat e doar un fișier. Ce face diferența între o actualizare liniștită și o seară pierdută este **ordinea pașilor**: verifici că e fișierul corect, oprești corect, faci copie, înlocuiești, testezi și ai pregătită calea de întoarcere.
sha256 e aceeași ca pe test, oprești serverul, faci copie la binarele vechi, le înlocuiești, pornești și testezi. Dacă ceva nu merge, pui copia înapoi.Nivel: Avansat. Ce trebuie să știi înainte: compilarea game și compilarea db, oprirea și restartul, backup și modificări sigure cu rollback.
Cuvinte pe care le vei întâlni
| Cuvânt | Ce înseamnă |
|---|---|
| Deploy | Punerea unei versiuni noi pe serverul real. |
| Rollback | Întoarcerea la versiunea veche, care mergea. |
| Link simbolic | Un „scurtătură” spre alt fișier. În pachetul verificat, fiecare core are un link game spre share/bin/game. |
| Manifest | O fișă cu ce pui pe server: nume fișier, dată, amprentă, ce s-a schimbat. |
Înainte de orice: fișa versiunii
Scrie în jurnalul de modificări, pentru fiecare fișier:
2026-11-02 game sursa: /usr/home/sursa (copie din 2026-11-01)
sha256: a1b2... (exemplu)
schimbare: mesajul comenzii /who tradus
testat pe serverul de test: login, drop, cufar, NPC, schimbare canal, relogDacă nu poți completa rândul „testat”, nu e momentul pentru deploy.
Pasul 1: Află unde stau binarele la tine
În pachetul verificat, core-urile nu au fiecare copia lor de game, ci un link spre același fișier:
cd /usr/home/game
ls -l auth/auth channel1/game1/game db/dbCe ar trebui să vezi: săgeți spre fișierul real, de exemplu game -> ../../share/bin/game și db -> ../share/bin/db. Asta înseamnă: înlocuiești un singur fișier, share/bin/game, și toate core-urile îl folosesc.
Dacă la tine nu vezi săgeți, fiecare folder are propria copie. Atunci trebuie să le înlocuiești pe toate. Le găsești cu find /usr/home/game -name game -type f.
Pasul 2: Urcă fișierul și verifică amprenta
Cu WinSCP, urcă fișierul în /usr/home/build pe serverul live (nu direct peste share/bin). Asigură-te că transferul e în modul Binary, nu Text. Apoi:
sha256 /usr/home/build/game-2026-11-02Ce ar trebui să vezi: exact aceeași amprentă pe care ai notat-o pe serverul de test. Dacă diferă măcar un caracter, fișierul s-a stricat la transfer sau ai urcat alt fișier. Nu continua.
Pasul 3: Anunță și oprește corect
Anunță jucătorii din timp (vezi mentenanța fără pierderi) și fă un backup al bazei de date. Apoi oprește serverul cu scriptul lui (în pachetul verificat, sh close.sh din folderul principal) și așteaptă să se închidă tot:
ps -ax -o pid,comm | grep -wE "game|db|auth"Ce ar trebui să vezi: nimic. -o pid,comm afișează doar numărul și numele fiecărui proces, iar grep -w caută numele întregi, ca să nu prindă și MySQL. Cât timp mai apar procese, așteaptă. db salvează datele la oprire și are nevoie de câteva secunde.
De ce nu înlocuiești fișierul cu serverul pornit? Sistemul refuză să scrie peste un program care rulează (eroarea Text file busy). Și chiar dacă ai reuși printr-un ocoliș, ai avea core-uri vechi și noi amestecate.
Pasul 4: Copie, apoi înlocuire
cd /usr/home/game/share/bin
cp -p game game.bak-2026-11-02
cp /usr/home/build/game-2026-11-02 game
ls -l game game.bak-2026-11-02- Prima comandă păstrează vechiul
game(cu-p, păstrează și permisiunile). - A doua pune noul fișier în locul lui.
- A treia îți arată ambele. Permisiunile (primele caractere, de tipul
-rwxr--r--) trebuie să fie la fel. Dacă noul fișier nu arex(dreptul de a rula), îl adaugi cuchmod u+x game. Nu folosi niciodatăchmod 777.
Pentru db faci la fel, cu fișierul db.
Pasul 5: Pornește și verifică
Pornește serverul cu scriptul obișnuit (în pachetul verificat, sh start.sh; scriptul pornește singur db primul, apoi auth, apoi canalele). Apoi:
- Verifică procesele:
ps -ax -o pid,comm | grep -wE "game|db|auth". - Citește
syserrdindb,authși din câteva canale. - Intră în joc și fă testul scurt: login, monstru, cufăr, NPC, schimbare de canal, relogare.
Ce ar trebui să vezi: toate core-urile pornite, fără erori noi, iar jocul se comportă ca pe serverul de test.
Rollback: cum revii în două minute
Dacă ceva nu e în regulă, nu încerca reparații pe loc, cu jucătorii conectați:
cd /usr/home/game
sh close.sh
cp -p share/bin/game.bak-2026-11-02 share/bin/game
sh start.shOprești, pui copia înapoi, pornești. Apoi analizezi liniștit problema pe serverul de test. Dacă între timp ai schimbat și baza de date, rollback-ul trebuie să includă și ea, după planul din restaurarea unui backup.
Greșeli des întâlnite
- Urci direct peste
share/bin/game. Dacă transferul se întrerupe, rămâi cu un fișier stricat și fără copie. - Pui
gamenou cudbvechi (sau invers), din surse diferite. Cele două trebuie să vină din aceeași sursă dacă ai atins ceva comun. - Nu verifici amprenta. Un transfer în modul Text strică binarul fără să-ți spună.
- Uiți de un core cu copie proprie. Un canal rămâne pe versiunea veche și apar diferențe greu de explicat.
- Ștergi backup-urile vechi prea repede. Păstrează măcar ultimele două versiuni care au mers.
Întrebări frecvente
Trebuie să opresc tot serverul pentru un game nou?
În pachetul verificat, da: toate core-urile folosesc același fișier. Fă-o într-o fereastră de mentenanță anunțată.
Pot pune binarul și să repornesc mai târziu?
Nu poți scrie peste un program pornit, iar o versiune pusă „pentru mai târziu” e ușor de uitat. Fă totul într-un singur pas controlat.
Clientul trebuie schimbat și el?
Doar dacă modificarea schimbă ce își trimit serverul și clientul. Vezi protocolul game–client.
Ce urmează
Treci la compilarea questurilor cu qc. Toate lecțiile sunt în lista tutorialelor Metin2.
Server Metin2 gata de joc
Găzduire Metin2 în România, cu instalare de serverfiles, bază de date MySQL și protecție Anti-DDoS inclusă.