Evde Linux Web Sunucusu Kurulumu

Merhaba, bu makalede evde Linux Web Sunucusu kurulumunu öğreneceğiz. Makalenin sonunda evimizde kendimize ait herkes tarafından erişilebilen bir web sunucumuz olacak. Sunucu hizmetini herkese açmak aslında sizin ihtiyaçlarınıza göre değişen bir durumdur. Dilerseniz sunucunuzu sadece kendi ev ağınıza açıp hizmet verebilirsiniz.

Adım 1 – Donanımların tespit edilmesi

  • İnternete bağlı bir modem (Sadece kendi ev ağınız için düşünüyorsanız İnternet bağlantısına gerek yok)
  • Ethernet kablosu
  • Eski veya kullanmadığınız Ethernet kartı bulunan bir bilgisayar
  • USB Flash Disk ya da DVD

Burada seçeceğiniz bilgisayarın performans durumunu size bırakıyorum. İyi donanımlarla daha iyi sonuçlar elde edebilirsiniz.

Adım 2 – Gerekli yazılımlar

Açılan sayfada BitTorrent kısmından sunucu olarak kullanacağınız bilgisayarın işlemci mimarisine göre(32bit-64bit) Ubuntu Server’ı indirin.

Windows üzerinden boot edilebilir USB stick oluşturmak için bu programı kullanacağız.

Adım 3 – USB Stick hazırlama

İndirdiğimiz Rufus programını açalım. USB Flash Diskimizi bilgisayarımıza takalım. Programın “Device” kısmında takılı olan flashımızı seçelim. Daha sonra “Create a bootable disk using” seçeneğinin seçili olduğundan emin olup hemen yanında bulunan CD-Rom ikonuna tıklayarak indirdiğimiz Ubuntu iso dosyasını seçelim. Çıkan uyarıları onaylayarak devam edelim. Altta “Ready” yazısını gördüğünüzde USB Stick hazır demektir.

Adım 4- Ubuntu Server kurulumu

Öncelikle sunucu olarak kullanacağımız bilgisayarla modem arasında Ethernet kablosu yardımıyla bağlantı kuralım.

Hazırladığımız USB diskimizi sunucu olarak kullanacağımız bilgisayara takalım ve BIOS’tan bilgisayarı USB disk ile başlatalım.

İlk gelen ekranda dil seçimini göreceksiniz. Türkçe seçip devam edelim.

01-ubuntu-server-dil-secimi

Daha sonra gelen ekranda kurulum, onarma, test gibi işlemler seçenekler göreceksiniz. Biz “Ubuntu Sunucu Sürümü’nü Kurun” ile devam ediyoruz.

02-ubuntu-server-ilk

Daha sonra gelen ekranda “…dil çevirisi bitmemiş” gibi bir mesaj göreceksiniz. “Evet” diyerek devam ediyoruz.

Konumu “Türkiye” seçerek devam edelim.

“Klavye düzeni saptansın mı?” sorusuna “Evet” diyelim ve yerleşimimizi klavye tuşlarına basarak sisteme tanıtalım.

03-ubuntu-server-klavye-evet

Bu aşamada sizden bir takım harflere basmanız istenecek. İstenilen harflere basarak saptamasına yardımcı olun.

03-ubuntu-server-klavye-saptama

Bize klavyemizde “ö” harfinin olup olmadığını soruyor. “Evet” diyerek devam ediyoruz.

04-ubuntu-server-klavye-saptama

Daha sonra bize “ö” harfine basmamızı söylüyor. Bastıktan sonra saptama tamamlanacak ve bize “tr” olduğunu söyleyecek. “Devam” diyerek ilerleyelim.

05-ubuntu-server-klavye-saptama-bas 06-ubuntu-server-klavye-saptama-bitis

Gerekli yapılandırmalar otomatik olarak yapılacak. Bitmesini bekleyelim.

07-ubuntu-server-ek-bilesen

Yapılandırma işlemleri bittikten sonra bize makinenin adı soruluyor. Bu aynı zamanda localhost isminizdir. Ben “ubuntu” olarak devam ediyorum.

08-ubuntu-server-makine-adi

Kulllanıcı tam adını girelim. Sonra kullanıcı adımızı girerek devam edelim.

09-ubuntu-server-kullanici-adi 09-ubuntu-server-kullanici-adi-2

Kendimize güçlü bir parola belirleyerek devam edelim.

10-ubuntu-server-parola

Ev dizini şifrelensin mi sorusuna ben “Hayır” diyerek devam ediyorum.

11-ubuntu-server-ev-dizini

Saat ve bölge yapılandırılması yapılıyor. Bulduğu zaman dilimi Asia/Istanbul ise “Evet” diyerek devam ediyoruz.

12-ubuntu-server-saat-dilimi

Donanımlar algılanıyor… Disk bölümleme kısmında “diskin tamamını LVM ile ayarlayarak kullan” seçeneğini seçiyorum. Bu özellik bizim diski dinamik olarak yönetebilmemizi sağlıyor. Mesela ilerde hafızamız yetersiz gelirse LVM sayesinde dilediğimiz gibi boyutlandırma yapabiliriz.

14-ubuntu-server-disk-bolumleme

Ekranda sisteminizde olan diski göreceksiniz. Bende VBOX etiketi var. Bunun nedeni şu an bu yazıyı yazarken anlatımı Virtual Box üzerinden yapıyorum. Diskimi seçiyorum ve daha sonra gelen uyarıya “Evet” diyorum.

15-ubuntu-server-disk-bolumleme-2 16-ubuntu-server-disk-bolumleme-3

Daha sonra gelen ekranda kullanılacak birimin boyutunu soruyor. Varsayılan olarak toplam disk boyutunuz yazar. “Devam” diyoruz ve ayarlar yapılıyor. Bir süre sonra çıkan “Değişiklikler diske kaydedilsin mi?” sorusuna “Evet” diyerek devam ediyoruz.

17-ubuntu-server-disk-bolumleme-4 18-ubuntu-server-disk-bolumleme-5

Bu aşamada kahvemizi alıp sistemin kurulmasını bekliyoruz. 🙂

19-ubuntu-server-sistem-kuruluyor

HTTP vekil bilgilerini Proxy kullanmıyorsanız boş bırakıp devam edin.

20-ubuntu-server-vekil-sunucu

Paket yöneticimiz “Aptitude” yapılandırılıyor…

21-ubuntu-server-apt

Daha sonra bize güncelleştirme ayarları soruluyor. Ben “Güvenlik güncelleştirmelerini otomatik olarak yükle” seçeneğini seçiyorum. Daha sonra sistem yapılandırmaları devam ediyor..

22-ubuntu-server-guncelleme

Bu aşamada kurulacak olan yazılımları seçiyoruz. Daha sonrada bunları tek tek yükleyebiliriz fakat şimdi kurmakta fayda var. Ekranda benim seçtiğim yazılımları görüyorsunuz.

Not: Bilgisayar kullanma alışkanlığımızdan dolayı “Enter” tuşu seçim olarak algılanıyor ama bu seçim ekranında kutucukları “Space” ile seçeceksiniz. 🙂

LAMP Server: Apache sunucu, MySQL veritabanı ve PHP dili desteğini sunucumuza yükler.

Standard system utilities: Temel sistem araçlarını yükler

OpenSSH Server: Uzak bağlantılarda “ssh” bağlantısı kurabilmemiz için gerekli yazılımdır. Sunucumuzu ayrı bir bilgisayardan uzaktan bağlantı ile yöneteceğiz.

23-ubuntu-server-yazilimlar

Yüklemeler devam ederken MySQL root kullanıcısına parola belirlememiz istenecek. Bu parola önemli bir parola olup ilerde unutmayacağınız bir parola seçmenizi öneririm. Devam dedikten sonra tekrar parolamızı girip yazılımların kurulmasını bekleyelim.

24-ubuntu-server-mysql-yapilandir 25-ubuntu-server-yazilimlar-kur

Yazılımlar kurulduktan sonra GRUB önyükleyicisi MBR’ye kurulsun mu sorusuna “Evet” diyerek devam ediyoruz.

26-ubuntu-server-grub

Ve mutlu son.. Şimdi bilgisayarımızdan USB diskimizi çıkarıp devam diyelim.

27-ubuntu-server-son

Adım 5 – Yerel ağ içinde statik ip alalım

Şu adıma kadar aslında bizim sunucumuz hazır. Sisteme giriş yapalım ve aşağıdaki komutu verelim:

Çıktılarda gördüğünüz enp0s3 veya sizde farklı bir isimlendirme olabilir arabirimi kablolu bağlantıyı teslim eder. (Bu ara birimin adını bir yere not edin. Birazdan işimize yarayacak.) IP adresimiz ise “inet addr” satırındadır. Burada görülen IP, LAN içerisindeki IP adresidir. Aynı ağdaki bir başka bilgisayarda tarayıcı üzerinden bu IP adresini girelim. Ve bingo! Apache çalışmakta..

28-ubuntu-server-tarayici

Şimdi bu şekilde çalışan bir sunucunun pek sağlıklı olamayacağını belirtelim. Biz her sunucumuza bağlanmak istediğimizde bu şekilde bir IP adresi girmek yorucudur ki şu an bu IP adresimiz sabit bile değil. Yani sunucu her boot edildiğinde bu IP’de değişecektir. Sunucuya bağlanmak istediğimizde sürekli IP’sini öğrenmek pek akıllıca davranış değil. O halde uzatmadan sunucumuza sabit bir IP adresi edinelim.

Linux yapılandırma dosyalarını /etc dizini altında tutar. Bu dizinin altında ağ yapılandırma dosyaları ise /etc/network dizininde bulunur.  Biz ara birimleri yapılandıracağımız için aşağıdaki komutla ilgili ayar dosyasını düzenleyelim.

Açılan ayar dosyasında “lo” arabirimine dokunmuyoruz. Bu arabirim ağ içi testler için ayrılmış özel bir alandır.

Birincil ağ arayüzünde yukarıda IP sorgulama yaptığımızda karşımıza çıkan “enp0s3” arabirimini görmekteyiz. Yapılandırmasının ise “dhcp” olduğunu görmekteyiz.

DHCP (İngilizce Dynamic Host Configuration Protocol), basit olarak sistemdeki bilgisayarlara IP adreslerini ve buna ek olarak değişik parametreleri atamak için kullanılan servistir.

Kaynak: Vikipedi

İşte biz bu kısmı static yaparak sunucumuza sabit bir IP adresi sağlayacağız. Aşağıda benim birebir ayar dosyamı görebilirsiniz. Burada kafamıza göre verdiğimiz IP adresinin çakışmaları önlemek için son 8 bitlik haneyi 210 yaptım.

Ayrıntılı bilgi: Linux Yerel Ağda Statik IP Alma

Ayar dosyasını kaydettikten sonra ağ hizmetini yeniden başlatalım. “ifconfig” yaptığınızda verdiğimiz IP adresinin atandığını göreceksiniz. Eğer verdiğimiz IP yoksa sistemi reboot etmenizde fayda var.

Şimdi tarayıcımıza “192.168.56.210” yazdığımızda sunucumuz bize hizmet verecektir. Ben yine aynı ağa bağlı olan Windows bilgisayardan sunucuya bir istek yolluyorum ve sonuç:

29-ubuntu-server-tarayici-windows

Adım 6 – Sunucuya daha rahat ulaşım yolu

Artık IP adresimizi sabitlediğimize göre sunucumuza bir host adıyla ulaşabiliriz. Aynı LAN içinde olan Ubuntu bilgisayarımın “hostname” dosyasını editörle açıyorum. Bu dosyanın içinde host isimleri tutulmaktadır. Bir yenisini ekleyelim ve örneğin adı “linux.server” olsun. Kaydedip çıkalım.

Daha sonra bu host adını bir IP adrese tanımlayacağız. “hosts” dosyasını açalım. Burada IP’ler ve karşılarında host isimleri göreceksiniz. 127.0.0.1 localhost tanımlaması mutlaka vardır. İşte bizde bunların altına kendi tanımlamamızı yapacağız.

Dosyanın içerisine aşağıda belirttiğim gibi <sunucu IP adresi> <hostname> şeklinde tanımı yapalım ve kaydedip çıkalım.

Ve tarayıcımızı açıp http://linux.server yazalım. Sonuç 🙂

30-ubuntu-server-tarayici-ubuntu-host

Not: Bu işlemin aynısını Windows bilgisayara da uygulayabilirsiniz, bu kısmı size bırakıyorum.

Buraya kadar olan sunucumuz bize sadece ağ içinde(LAN) hizmet veriyor. Peki ya sunucumuzu dış dünyaya açıp tüm insanlara hizmet vermesini sağlayabilir miyiz? Cevabımız pek tabii evet! IP’ler, ağ yapılandırmaları kafanızı yormadıysa sizi bir sonraki adıma alalım, yorulduysanız bir kahve molası önerimdir. 🙂

Adım 7 – Merhaba WAN!

Sunucu bilgisayarımızı dış dünyaya açmadan önce bazı şeyleri bilmemiz gerekmektedir. Bunlardan ilki Public ve Private IP kavramları. Private IP’ler önceki adımlarda üzerinde çalıştığımız LAN içinde tanımlanan IP adresleridir. Bu tür IP adresleri özel olarak ayrılmıştır. Aşağıda ayrılan Private IP adreslerini görebilirsiniz.

10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255

Bu IP’leri Public IP’ler içinde göremezsiniz. Hemen Public IP’yi de açıklayalım. Bu IP adresi ise sizin internette erişim sağladığınız gerçek IP adresinizdir. Bu adreste tıpkı Private IP gibi her internete bağlanışınızda dinamik olarak değişir ve bu bizim işimize gelmiyor.

Private IP’leri statik yapmak kolaydı. Çünkü LAN kontrolü tamamiyle bizde. Ancak Public IP’ler geniş alan ağı olan internette dolaşıyor. Bunu statik yapacak birim ise bizim internet erişim sağlayıcımız. Aylık belirli bir ücret karşılığında size statik IP hizmeti sunuyorlar. Ancak bunun ücretsiz bir yolu var 🙂

İşin mantığına bakacak olursak; ben dış bir ağdan sunucuma erişmek istediğimde sunucunun Public IP adresini bilmem lazım. Bu adres dinamik olduğuna göre anlık olarak takibini yapmalıyım. Bu iş için “Dinamik DNS” servisleri mevcuttur. Algoritma şöyle işliyor: Size bir host adı veriyorlar. Biz bu host adına bir istek yollayarak IP adresini güncelleyebiliyoruz. Yani biz sunucumuzu bu iş için programlayacağız ve her reboot işleminde servise bir istek yollayıp IP adresimizi güncellemesini isteyeceğiz.

Bu iş için en bilinen servis DynDNS fakat ben Afraid FreeDNS hizmeti kullanıyorum. Bu bağlantıya giderek ücretsiz bir hesap oluşturun. Subdomain kısmına gelerek yeni bir subdomain alacağız. Subdomain adının alınmamış olması gerekiyor. Domain kısmında hangi isim hoşunuza gidiyorsa onu seçin. Destination kısmında ise sizin şu anki Public IP’niz yazar. “Save” diyerek subdomaini almış olduk. Gerekli ayarlar yapılınca http://serkan-linux.strangled.net adresine girdiğimizde sunucumuza erişeceğiz.

31-ubuntu-server-dinamik-dns

Sol menüden “Dynamic DNS” kısmına gidelim. En altta eklemiş olduğumuz subdomaini göreceğiz. Burada “Direct URL” bağlantısını kopyalayalım. Bize gerekli olan bu adresin içindeki benzersiz anahtar değerdir.

Şimdi sunucumuzu bu hostu güncelleyecek şekilde ayarlayalım.

“inadyn” yazılımı ile güncelleme işlemini gerçekleştireceğiz. Aşağıdaki komutla kuralım.

Kurulum işlemi bittikten sonra aşağıdaki komutla yapılandırma dosyasını açalım.

Burada ilgili yerleri kendimize göre düzeltelim.

inadyn’i crontab’a ekleyelim.

Dosyanın içine aşağıdaki komutu ekleyelim. Her reboot işleminde servisimiz çalıştırılacak.

Ve bilgisayarımızı reboot edelim..

Bilgisayar açıldığında aşağıdaki komutla “inadyn” prosesinin çalıştığından emin olalım.

Şimdi domain adresimize bir ping göndererek IP kontolü yapalım. Sonuç olarak Public IP’niz dönüyorsa işler yolunda demektir.

Yine tarayıcımızdan http://serkan-linux.strangled.net adresini girdiğimizde sunucumuzun değil modem panelinin açıldığını göreceğiz. Bunun nedeni, dışardan gelen bir http isteğini 192.168.1.1 LAN adresinin 80 portu karşılar. Bu ise modem arayüzüne yönlendirilmiştir. Bizim yapacağımız iş “Port yönlendirme” yaparak 80 portuna gelen istekleri sunucumuzun IP adresi olan 192.168.56.210 adresine yönlendireceğiz. Benim kullandığım modem ZyXEL VMG3312-B10B modeli. Buna göre ben port yönlendirmeyi anlatacağım. Diğer modemlerde de işlemler aşağı-yukarı benzerdir.

Tarayıcıdan 192.168.1.1 yazıp arayüze ulaştıktan sonra kullanıcı adı ve şifre(!)mizle giriş yapalım. Ağ ayarı -> NAT seçelim. Port yönlendirme sekmesinden “Yeni” diyerek ayarlarımızı yapalım. Gördüğünüz üzere 80 portunu sunucumuzun IP adresine yönlendirdim.

32-ubuntu-server-modem-yapilandirma

Bu ayarları yaptıktan sonra bile sunucunuza ulaşamayabilirsiniz. Bunun nedeni: Güvenlik Duvarı. Bu tür modemlerde güvenlik seviyeniz orta düzeyde ise modem WAN->LAN isteklerini reddeder. Biz güvenlik seviyesini düşük yapıyoruz ve dış ağdan gelen isteklere yanıt verir duruma geliyoruz.

32-ubuntu-server-guvenlik

Sunucumuzda /var/www/html/index.html dosyasını değiştirerek küçük bir “Hoş geldiniz” ekranı oluşturalım.

Ve bu aşamadan sonra sunucumuz internet ağına hizmet verir durumda!

33-ubuntu-server-final

 

7 Comments

  1. sinan

    selamlar serkan bey öncelikle cok güzel bir anlatım olmus tebrikler.Fakat ben beceremedim sanırım.Kurulumu tamamladıkdan sonra ıfconfig komutunu verince çıkan bilgilerin içerisinde inet addr : 127.0.0.1 çıkıyor ama bu komutu diger bilgisayarımda tarayıcıya yazınca baglanamıyorum.Nerde hata yapıyorum acaba?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir