Metin2 server files kurulumu, boş bir VPS'i çalışan bir oyun sunucusuna dönüştüren ilk ve en kritik adımdır. Bu rehberde sıfırdan başlayarak dosyaları sunucuya yüklemeyi, doğru izinleri vermeyi, MySQL veritabanlarını içe aktarmayı, CONFIG ve my.cnf ayarlarını yapmayı ve db ile game (core) süreçlerini ilk kez başlatmayı adım adım anlatıyorum. Çoğu klasik server files paketi FreeBSD üzerinde derlenmiş ikili dosyalarla geldiği için örneklerimi FreeBSD tabanlı bir kurulum üzerinden veriyorum.
Gereksinimler ve doğru işletim sistemi seçimi
Başlamadan önce elinizde olması gerekenler:
- Root erişimli bir VPS (eski server files genellikle FreeBSD ve 32-bit ikililer ister; sürümü server files'ın istediğine göre seçin).
- SSH ve SFTP istemcisi: PuTTY + WinSCP ya da FileZilla.
- Bir MySQL/MariaDB sunucusu (genelde pakette kurulu gelir veya ports ile kurarsınız).
- Bir veritabanı istemcisi: HeidiSQL veya Navicat.
- Server files arşivi (genelde
.tar.gz) ve eşleşen istemci (client).
En sık yapılan hata, ikili dosyalarla uyumsuz bir OS mimarisi kullanmaktır. FreeBSD için derlenmiş bir game binary'sini Linux'ta çalıştıramazsınız; mimari ve sürüm eşleşmesi şarttır.
Dosyaları sunucuya yükleme
Server files arşivini doğrudan sunucuya yüklemek, her dosyayı tek tek SFTP ile atmaktan çok daha hızlıdır. SSH ile bağlanıp arşivi hedef dizine açın:
cd /usr/home
mkdir -p metin2 && cd metin2
# Arşivi WinSCP/FileZilla ile bu dizine yükleyin, sonra:
tar -xzvf serverfiles.tar.gz
Tipik bir dizin yapısı şöyle görünür:
/usr/home/metin2/db/— veritabanı çekirdeği (db core),conf.txt/usr/home/metin2/game/— oyun çekirdeği (game core), kanal klasörleri (channel1,channel2...)/usr/home/metin2/share/— ortak veri (proto, mob, item)
Yükleme bittiğinde dosya sahipliğini düzeltmeyi unutmayın; root ile açtıysanız sunucuyu çalıştıracak kullanıcıya devredin:
chown -R metin2:metin2 /usr/home/metin2
MySQL veritabanlarını içe aktarma
Metin2 birden çok veritabanı kullanır. En yaygın şema şu dört tabandan oluşur:
- account — hesaplar, giriş bilgileri
- player — karakterler, item, quest, lonca verisi
- common — yasaklı kelimeler, gm listesi, ayarlar
- log — oyun içi loglar
Önce boş veritabanlarını oluşturup ardından .sql dökümlerini içe aktarın. Komut satırından:
mysql -u root -p -e "CREATE DATABASE account; CREATE DATABASE player; CREATE DATABASE common; CREATE DATABASE log;"
mysql -u root -p account < account.sql
mysql -u root -p player < player.sql
mysql -u root -p common < common.sql
mysql -u root -p log < log.sql
Komut satırıyla uğraşmak istemiyorsanız HeidiSQL veya Navicat ile SSH tüneli açıp her .sql dosyasını ilgili veritabanına "Run SQL File / Execute" diyerek aktarabilirsiniz. İçe aktardıktan sonra common.gmlist tablosuna kendi hesabınızı GM olarak eklemeyi unutmayın; aksi halde oyun içi komutlara erişemezsiniz.
Bir test hesabı oluşturmak için account.account tablosuna satır ekleyin. Çoğu server files şifreyi password() fonksiyonuyla saklar:
INSERT INTO account.account (login, password, social_id, email)
VALUES ('test', password('1234'), '1111111', 'test@local');
conf.txt, CONFIG ve my.cnf ayarları
Doğru ağ ayarları olmadan istemci sunucuya bağlanamaz. Üç dosya kritiktir.
db/conf.txt — db core'un MySQL'e nasıl bağlanacağını belirler. Kullanıcı adı, şifre ve veritabanı isimlerini kendi kurulumunuza göre düzenleyin:
SQL_ACCOUNT: localhost account root SIFRE
SQL_PLAYER: localhost player root SIFRE
SQL_COMMON: localhost common root SIFRE
SQL_HOTBACKUP: localhost log root SIFRE
PLAYER_SQL_DIRECT: 1
game/<kanal>/CONFIG — her kanalın IP, port ve kanal numarasını tutar. BIND_IP alanına VPS'in genel (public) IP adresini yazın; 127.0.0.1 bırakırsanız dışarıdan kimse bağlanamaz:
HOSTNAME: ch1
CHANNEL: 1
BIND_IP: 11.22.33.44
PORT: 13001
P2P_PORT: 14001
DB_ADDR: 127.0.0.1
DB_PORT: 15000
my.cnf — MySQL'in dinleme adresi ve performans ayarları. Veritabanı yereldeyse bind-address = 127.0.0.1 bırakın; küçük VPS'lerde innodb_buffer_pool_size değerini RAM'inize göre makul tutun. Ayrıca client tarafındaki serverinfo.py dosyasında IP/port'un sunucudaki CONFIG ile birebir aynı olduğundan emin olun.
İzinler ve ilk açılış
İkili dosyalar çalıştırılabilir olmadan başlamaz. db ve game binary'lerine çalıştırma izni verin:
cd /usr/home/metin2
chmod +x db/db
chmod +x game/channel1/game
# varsa başlatma scriptleri:
chmod +x *.sh
Başlatma sırası önemlidir: önce db core, sonra game core. db core çekirdeği MySQL bağlantısını açıp portu dinlemeye başlamadan game core ona bağlanamaz.
# 1) db core'u başlat
cd /usr/home/metin2/db
./db &
# 2) birkaç saniye bekleyip game core'u başlat
cd /usr/home/metin2/game/channel1
./game &
Çıktıyı izlemek için tail -f syserr ve tail -f syslog dosyalarına bakın. Süreçlerin gerçekten ayakta olup olmadığını ise ps aux | grep -E 'db|game' ve sockstat -4 -l (dinlenen portlar) ile doğrulayın. Bu noktada istemcinizi sunucu IP'sine yönlendirip test hesabıyla giriş yapabilirsiniz.
Sık Sorulan Sorular
Sunucu açılıyor ama istemci bağlanamıyor, neden?
Neredeyse her zaman ağ ayarı kaynaklıdır. CONFIG içindeki BIND_IP hâlâ 127.0.0.1 olabilir, istemcideki serverinfo.py yanlış IP/port gösteriyor olabilir ya da güvenlik duvarı 13001/15000 gibi portları kapatıyordur. Sunucuda sockstat -4 -l ile portların gerçekten dinlendiğini doğrulayın.
db core "can't connect to MySQL" hatası veriyor.
db/conf.txt içindeki kullanıcı adı, şifre veya veritabanı isimleri yanlıştır. MySQL'e elle mysql -u root -p account ile bağlanmayı deneyin; bağlanamıyorsanız sorun core'da değil, MySQL kullanıcısı veya izinlerindedir.
Linux VPS'imde FreeBSD server files çalışır mı?
Hayır. FreeBSD için derlenmiş ikili dosyalar Linux çekirdeğinde doğrudan çalışmaz. Ya server files'ın istediği FreeBSD sürümünü kurun ya da Linux için derlenmiş bir paket kullanın; mimari ve sürüm eşleşmesi zorunludur.
Kurulumda takıldınız mı? Metin2 server files kurulumu, quest/Lua düzenlemesi ve VPS optimizasyonu konusunda yıllardır çalışıyorum. Sunucunuzu sıfırdan ayağa kaldırmak veya mevcut kurulumunuzu sağlamlaştırmak için benimle iletişime geçin.