Linux Adanmış Sunucu Hizmeti

Bu makalede Linux üzerinde Garry's Mod sunucu hizmetini sağlamak üzerine kapsamlıca bilgilendirme sağlanacaktır.

**Bu makale Debian ve türevleri (Ubuntu, ChromiumOS, Mint, vb.) için yazılmıştır bu nedenle diğer yayınlarda çevirme işlemi yapmanız gerekebilir.**

# Dikkat

* Valve, Ubuntu 12.04 32-bit'i ana geliştirme alanı olarak kullanmaktadır. Bu, Ubuntu Server 12.04 32-bit'i kullanmanız halinde daha az kötü sürpriz ile karşılaşabileceğiniz anlamına gelir. Tabii ki geriye-uyumlu olduğu sürece Ubuntu'nun daha yeni bir sürümünü kullanabilirsiniz.

* Bu rehber Debian-tabanlı dağıtımlar göz önünde bulundurularak yazılmıştır- Valve'nin kullandığı sistem ile aynı sistemi kullanırsanız kolaylaştırabilirsiniz (fazladan uyumluluk kütüphanesi yüklemenize gerek kalmayacaktır).

# Gereksinimler

Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olunuz:

* Sunucuyu çalıştıracak bir kulanıcı (/home/steam ana kütüphanesi ile 'steam' önerilir)
* Yüklemek istediğiniz içerik için yeterli disk kapasitesi
* 'steam' kullanıcısı (*su - steam*) olarak çalışan bir açık komut-satırı terminali ya da steam ile giriş yapılmış bir SSH oturumu.
* Basit Linux komut-satırı kullanımı tecrübesi.

# SteamCMD'yi Yüklemek

Aşağıdaki script SteamCMD'yi indirecek, dizinden çıkaracak ve güncelleyecektir. SteamCMD, Garry's Mod'u indirme ve güncellemede gereklidir.

`cd ~
mkdir bin
cd bin
wget http://media.steampowered.com/client/steamcmd\_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh +login anonymous +quit`

## 64-bit Sistemler

Eğer "\*/linux32/steamcmd: No such file or directory" hatasını alırsanız, bu büyük ihtimalle gerekli olan 32-bit kütüphanelerine sahip olmadığınızdan kaynaklanmaktadır. Bunu onarabilmekte gerekli bilgiyi edinebilmek için buraya gidiniz: https://developer.valvesoftware.com/wiki/SteamCMD#32-bit\_libraries\_on\_64-bit\_Linux\_systems

# Garry's Mod'u Yüklemek

Aşağıdaki script, tek komutla Garry's Mod'un en son sürümünu indirecektir.

Önce, ana kütüphaneye gidelim.

`cd ~`

Sonra, script'i indirmemiz gerekmektedir:

`wget http://pastebin.com/raw/CRmMbJQA -O ./update_gmod.sh`

Bu dosyayı çalıştırmadan önce, 'çalıştırma' hakları vermemiz gereklidir. Bu aşağıdaki komutla gerçekleştirilir.

`chmod +x ./update_gmod.sh`

Düzgünce çalıştırmadan önce dos formatından unix formatına dönüştürmemiz gerekmektedir:

`dos2unix ./update_gmod.sh`

Şimdi, sunucuyu güncelleyelim

`./update_gmod.sh`

Sunucu gerekli içeriği indirecektir. Steam, işlemin ilerleme oranını indirme süresince size gösterecektir.

# İçerik eklemek

Tabii ki TF2 ve CS:S ve diğer oyunların içeriğini kullanabilmek isteyebilirsiniz. Yukarıdaki scripti kullanarak bu bu işlemi basitleştirilebilir.

Ancak, indirme süresinden kazanmak istediğimizden, tüm bu içeriği ayrı bir klasöre koyacağız, böylece 5 adet sunucumuz da olsa içerik güncellemesi durumunda sadece bir defa güncelleme yapmamız yeterli olacaktır.

Şimdi yukarıda bahsedilen scripti düzenleyeceğiz. Aşağıdaki satırı "*Add any additional servers here*" denilen kısma ekleyiniz. Şimdi, TF2'yi ekleyeceğiz.

`update_server 232250 "content/tf2"`

Şimdi, *update\_gmod.sh* 'yi çalıştırdığımızda script, Garry's Mod'u (yukarudaki adımdan indirdiğimizden) doğrulayacak (ve gerekiyorsa güncelleyecek) ve Team Fortress 2'yi *~/content/tf2* 'ye yükleyecektir..

Sunucular için ID listesi için, Valve Geliştirici Topluluğu sayfasına bakabilirsiniz. Teorik olarak, herhangi bir oyunu ID'sini kullanarak indirebileceğinizi unutmayınız fakat bu adanmış sınıcılarla steam hesabınıza giriş yapmanıza gerek kalmamaktadır.

# Sunucuyu başlatmak

Sunucuyu başlatmak için, her sunucunun kök kütüphanesinde bulunan, srcds\_run adı verilen dosya çalıştırılır. Aşağıdaki komut, gm\_flatgrass haritasında 12 slotluk bir sunucu başlatır.

`~/server_1/srcds_run -game garrysmod +maxplayers 12 +map gm_flatgrass`

Script (srcds\_run) sunucuyu ayakta tutacaktır, çökerse, linux'u yeniden başlatsanız da yeniden başlamayacaktır ve terminali kapatırsanız sunucu kapanacaktır. Bunu bu makalede daha sonra düzelteceğiz.

# Sunucuyu güncellemek

To update the server, or to update the content, we simply call our download script. You need to make sure your servers are off, or else the update will fail.

Update our scripts by just calling this (from the home directory)

`./update_gmod.sh`

# Yeniden başlatma ardından sunucuyu ayakta tutmak

Sunucuyu ayakta tutmak için crontab'ı kullanacağız. Crontab'a sunucu yüklendiğinde srcds\_run'u çalıştıracak bir girdi ekleyeceğiz.

Crontab'ı açınız

`crontab -e`

Şimdi, bu satırı sona ekleyiniz

`@reboot /home/steam/server_1/srcds_run -game garrysmod +maxplayers 12 +map gm_flatgrass`

Şimdi dosyayı kaydediniz. Genellikle crontab, nano'da açılır bu nedenle komutlar, tekrar, "Ctrl+O", "↵ Enter", "Ctrl+X" olabilecektir.

Şimdi, linux sunucusunun yeniden başlatılmasının ardından, Garry's Mod Sunucusu oyomatik olarak başlayacaktır.

## Ek notlar

Elbette sunucunuzu ayakta tutmanın daha etkin yolları mevcuttur, ancak başladıktan sonra çabucak karmaşık hale geldiğinden burada bahsedilmemektedir. Daha fazla bilgi için Google üzerinden arama yapabilir ya da Facepunch'a sorabilirsiniz.

# Sorun giderme

## 32-bit ikili değerleri

Eğer Linux'un 32-bit bir sürümünü çalıştırıyorsanız, SteamCMD sadece 32-bit'i desteklediğinden, 32-bit ikili değerlerine ihtiyacınız bulunmaktadır.

Şu hata mesajını alırsanız:

`./steamcmd.sh: line 29: /home/$USER/Steam/linux32/steamcmd: No such file or directory`

o halde büyük ihtimalle 64-bit bir sistem kullanmaktasınız ve 32-bit kütüphanelerinizde eksiklik durumu bulunmaktadır.

Bunu yapabilmek için **ia32-libs**'i yüklemeniz gerekmektedir. Bunu yapabilmek için de aşağıdaki kodu çalıştırmanız gerekmektedir:

`dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs
or
apt-get install lib32ncurses5 lib32z1`

Paket büyüktür (~200MB) ve birçok bağımlılıkları bulunmaktadır bu nedenle biraz sürebilir.

Diğer linux dağıtımları için Valve wiki makalesine bakınız.

## 'GLIBC\_2.15' not found

Eğer şu mesajı alıyorsanız:

`Failed to open dedicated\_srv.so (/lib/i386-linux-gnu/libm.so.6: version `GLIBC\_2.15' not found (required by bin/dedicated\_srv.so))`

Büyük bir ihtimalle eski GLIBC kütüphanelerine sahipsiniz ve güncelleme yapmanız gerekmektedir.

Bu, Valve'nin araçları yaratmak için kullandığı dağıtımdan farklı bir dağıtım (ya da dağıtımın farklı bir sürümünü) kullandığınız için gerçekleşmiştir. Bu araçlar bu Linux dağıtımından çeşitli bileşenler beklemektedir. (Yukarıdaki 'Dikkat' kısmını okuyunuz!)

Bunu Ubuntu 12.04 32-bit'e geçiş yapmadan gidermek için aşağıdaki kodu çalıştırınız:

`wget http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6\_2.15-0ubuntu10.11\_i386.deb
dpkg -x libc6_2.15-0ubuntu10.11_i386.deb tmp/
cd tmp/lib/i386-linux-gnu/
cp * /your-garrysmod-directory/bin/`

CentOS'ta ilk olarak yapmanız gereken EPEL Repo ve dpkg yüklemesi için:

`yum install dpkg`

Bunun yerine şunlara geçiş yapabilirsiniz:

* Ubuntu Server 12.04+
* CentOS 7

Bu alternatifler, çalışmaları onaylanmış ve en destekli olanlardırlar.

## Çalışmayan Eklentiler

Sunucunuzu kurup çalıştırırken bazı eklentilerin çalışmadığı gibi problemlerle karşılaşabilirsiniz. Bu sorun büyük harfli klasörde bulunan eski eklentilerden kaynaklı olarak görünmektedir. Bu sorunu gidermek için tüm kütüphaneleri küçük harfli isimlerle değiştirmek ve tüm Lua kodlarını bu kütüphanelere düzgün biçimde hedeflemek gerekebilir.