Ragnarok 02 – Sunucu Testleri

Bu yazımda ASP.NET Core ile web uygulaması geliştirmeden önce örnek projeler ile hedeflediğim yapıya benzer bir sistemi nasıl ayağa kaldıracağımı, bu süreçte nelere ihtiyaç duyacağım belirlemek için bir bulut hizmeti üzerinde sanal makine oluşturmayı ve bu sanal makine üzerinde yapılması gereken konfigürasyonları önce öğrenmeye sonra da anlatmaya çalışacağım.

 

Önceki yazıda belirttiğim gibi bulut hizmet sağlayıcısı olarak Scaleway’i kullanıyor olacağım ancak herhangi bir hizmet sağlayıcı için de benzer işlemler yapılacağı için bu yazı size de rehber olabilir. Ayrıca hem Scaleway hem de diğer sağlayıcılar zaman zaman yönetim konsollarında değişiklikler yapabiliyorlar. Bu sebeple Scaleway’e nasıl kayıt olunur, nasıl sanal makine (Scaleway’de instance oluşturmak gerekiyor) oluşturulur detaylarına çok girmeyeceğim. Sonuç olarak bir adet Linux dağıtımına sahip olduğunuzu kabul ediyor ve anlatıma başlıyorum.

 

İlk yapılması gereken sunucuya Docker Engine kurmak. Bunun için ssh ile bağlandığımız sunucunun içerisindeki mevcut paket listesini güncelliyoruz.

 

sudo apt update

 

Bir sonraki adımda “apt” komutunun HTTPS üzerinden paketlere erişimine izin vermek için gereken koşulları yüklüyoruz.

 

sudo apt install apt-transport-https ca-certificates curl software-properties-common

 

Resmi Docker repositorysi için GPG Keyi (bknz: GNU Privacy Guard) sistememize ekliyoruz.

 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

 

Mevcuttaki APT kaynaklarımızın içerisine Docker repositorysini ekliyoruz. (Ubuntu için)

 

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

 

Bu işlemden sonra yeni eklenen repositoryden Docker paketlerinin olduğu paket listesini güncelliyoruz.

 

sudo apt update

 

Docker Engine’i kurmadan hemen önce indirilecek olan paketin sürümümüzle uyumunu kontrol edebilir.

 

apt-cache policy docker-ce

 

Bu komut size şuan sistemde bir Docker Engine olup olmadığını ve indirilirse hangi sürümün indirileceğini belirtecektir.

 

Örnek Çıktı:

 

docker-ce:

  Installed: (none)

  Candidate: 18.03.1~ce~3-0~ubuntu

  Version table:

     18.03.1~ce~3-0~ubuntu 500

        500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

 

Artık Docker Engine’i sistemimize kurabiliriz.

 

sudo apt install docker-ce

 

Bu komut sonrasında çıkacak yönergeleri takip ettikten sonra Docker Engine kurulumunu tamamlamış bulunuyoruz. Herhangi bir sorun yaşanmadıysa kurulum sonrası Docker Engine çalışmaya başlayacaktır. İsterseniz aşağıdaki komut ile Docker Engine çalışır durumda mı kontrol edebilirsiniz.

 

sudo systemctl status docker

 

Artık docker imagelarını çalıştırabileceğimiz bir sunucumuz var. Normal şartlarda sadece bir docker image sahibiyseniz, bu docker image dosyasını daha önce push komutuyla upload ettiğiniz bir registryden pull komutuyla sunucuya indirip ardından run komutuyla çalışır hale getirebilir ve sunucunuzun internet IP adresi üzerinden docker image içerisindeki uygulamanıza erişebilirsiniz. Ancak benim hedeflediğim yapıda aynı sunucu üzerinde 3 farklı containerda 3 sub-domain altında çalışacak uygulamalar olduğu için ben bir sonraki basamak olarak sunucuya NGINX isimli bir web sunucu hizmeti kuracağım. Şimdi bu kuruluma başlayabiliriz.

 

Bir nevi klasik bir işlem olan paket liste güncellemesini yapıp ardından nginx paketini kurmak için gerekli komutu yazıyoruz.

 

sudo apt update

sudo apt install nginx

 

Yönergeleri takip edip nginx kurulumunu tamamlıyoruz. Nginx konfigürasyonunu yapmadan önce sunucunun güvenlik duvarı ayarlarını yapmamız gerekiyor. Nginx kendisini kurulum sırasında ufw komutu ile bir güvenlik duvarı servisi olarak kaydettiriyor. Bu yüzden ekstra bir kurulum yapmamıza gerek kalmıyor. Bu kurulum ile güvenlik duvarındaki varsayılan ayarları kontrol ederek bir sonraki işleme geçelim.

 

sudo ufw app list

 

Bu komut bize mevcuttaki uygulama profillerini listeliyor. Aşağıdaki örnek çıktıda yer alan ifadelere benzer bir çıktı almanız beklenir ama boş bir sonuç geldiyse de sorun yok. Zaten izin verdiğimiz protokolleri biz belirleyeceğiz.

 

Örnek çıktı:

 

Available applications:

  Nginx Full

  Nginx HTTP

  Nginx HTTPS

  OpenSSH

 

Güvenli duvarında yapılacak işlemler sunucu güvenliği için önemli bu sebeple ne yaptığınızı bildiğinizi kabul ediyorum. Eğer bu konuda kendinize güvenmiyorsanız bulut hizmetini satın aldığınız hizmet sağlayıcısından veya Linux sistem yönetimi konusunda güvendiğiniz birisinden yardım alabilirsiniz.

 

Sunucuda http ve https protokollerine izin vereceğim için bu iki protokolü kullanan ağ trafiğinin güvenlik duvarından geçmesi için gerekli komutları yazıyorum.

 

sudo ufw allow 'Nginx HTTP'

sudo ufw allow 'Nginx HTTPS'

 

Yaptığımız değişiklikleri doğrulamak için gerekli komutu yazıyoruz. Çıktıda bizim izin verdiğimiz protokolleri görmemiz gerekir. İstemediğimiz bir protokol varsa listeden çıkarabiliriz. (bknz: sudo ufw deny)

 

sudo ufw status

 

Örnek çıktı:

 

Status: active

 

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere                 

Nginx HTTP                 ALLOW       Anywhere                 

OpenSSH (v6)               ALLOW       Anywhere (v6)            

Nginx HTTP (v6)            ALLOW       Anywhere (v6)

 

Güvenlik duvarı ayarlarını tamamladıktan sonra artık nginx çalışıyor mu bakabiliriz.

 

systemctl status nginx

 

Bu komutun çıktısı bize nginx servisinin durumu hakkında bilgi veriyor olacak. Eğer status inactive olarak görünüyorsa aşağıdaki kod ile sistemi active hale getiriyoruz.

sudo ufw enable

Eğer her şey yolundaysa artık bir web tarayıcı üzerinden sunucumuzun ip adresini girerek bizi bekleyen nginx karşılama sayfasını görebiliriz.

 

Nginx default page

 

Bundan sonraki süreçlerde nginx kullanımı sırasında işinize yarayabilecek komutları da paylaşmakta fayda var.

 

Web sunucusunu durdurmak için:

 

sudo systemctl stop nginx

 

Hizmeti durdurulmuş web sunucusunu çalıştırmak için:

 

sudo systemctl start nginx

 

Web sunucusunu yeniden başlatmak için:

 

sudo systemctl restart nginx

 

Web sunucusu konfigürasyonunda yapılan basit değişiklikler sonucunda mevcut bağlantılar kopmadan web sunucu hizmetini yenilemek için:

 

sudo systemctl reload nginx

 

Varsayılan olarak nginx servisi sunucu başlatıldığında otomatik olarak çalışacak şekilde ayarlanmıştır. Bunu değiştirmek isterseniz:

 

sudo systemctl disable nginx

 

Sunucu başlatıldığında web sunucu servisinin de başlatılmasını tekrar ayarlamak için:

 

sudo systemctl enable nginx

 

Bu yazıda sahip olduğumuz Ubuntu sunucusu üzerine önce Docker Engine ardından da nginx kurduk ve gerekli ayarlamaları yaptık. Bir sonraki yazıda bir sunucu üzerinden birden fazla containere erişmek için web sunucusunun nasıl konfigüre edilmesi gerektiğine değineceğim.

Yorumlar

Henüz hiç yorum yok.

Yorum Yap