Ana Sayfa Sunucu Baştan Sona VPS Sunucu Kurulumu

Baştan Sona VPS Sunucu Kurulumu

603
Baştan Sona VPS Sunucu Kurulumu

Merhabalar. Yazıma böyle genel bir başlık vermek istedim. Yapılacakları bu şekilde toplamadığım sürece bu çok uzun sürecek yazımı yazmaya başlayamıyordum. Size, kendime ait dört siteyi ve mail hesaplarımı barındırdığım, aynı zamanda içerisinde VPN Sunucusu da bulunan VPS’imi (Virtual Private Server) nasıl kurduğumu adım adım anlatacağım. VPS sunucu kurulumu için gerekenler liste olarak bu konuda bulunacak ve bağlantılar ile ilgili konulara yönlendirileceksiniz. Kendi not defterimde bulundurduğum, VPS sunucuyu baştan sona oluşturmak için gereken adımları aşağıda görebilirsiniz.

VPS Sunucu Özellikleri

Bu adımları tamamladığınızda elinizde CentOS 7.2 64-bit işletim sistemi üzerinde OpenVPN, VestaCP (Web Hosting Control Panel), Varnish HTTP Cache, NetData Monitoring, ownCloud ve Transmission Torrent Client gibi programlar bulunan 1 CPU, 1 GB RAM ve 25 GB SSD disk özelliklerinde bir sunucunuz olacak. Sunucuyu DigitalOcean’dan aylık $5 (+$1 haftalık yedekleme) ücret ile kiraladım. Sunucumun özellikleri düşük olduğu için VestaCP (Web Hosting Control Panel) kurulumunu SpamAssassin (Mail spam filtresi) ve ClamAV (Antivirüs) olmadan yaptım. Fakat SpamAssassin’i sonradan ekledim. Bu olmadan günde yüzlerce spam maili geliyordu. Otomatik kurulum yaptığınızda sunucunuzun özelliklerini kendisi kontrol ederek kurulumu gerçekleştirmekte. Bu ikisini isterseniz kurulum komutunu değiştirerek dahil edebiliyorsunuz.

VPS Sunucumda Kurulu Olan Programların Listesi

  • VestaCP (Web Hosting Control Panel) – Web sitelerinin ve güvenlik duvarının yönetildiği panel
  • OpenVPN – Açık kaynak VPN sistemi
  • NetData Monitoring – Tüm sunucu verilerinin görüldüğü ve bize sorunları e-posta yoluyla bildirim olarak gönderen sistem
  • ownCloud – Bulut sistemi (artık kurulu değil)
  • Transmission Torrent Client – Torrent dosyalarını indirebildiğimiz sistem (artık kurulu değil)
  • Varnish HTTP Cache – HTTP önbellekleme ile sitelerin açılışlarını hızlandıran bir sistem (artık kurulu değil)

Ucuz VPS Sunucunun Kapasitesi

Sunucu özellikleri araştırmalarım sonucu günlük 30-40 bin gösterim alan sitelere bile yetiyor fakat bunun garantisini verememekteyim. Bu yazıyı kullanarak yaptıklarınızdan siz sorumlusunuz. Ben çok az gösterim almama rağmen başlarda sorun yaşadım. Sorun Apache sunucusundaydı. Aslında sorun değil fakat 512 MB RAM’li sunucum (artık 1 GB RAM’e yükseltildi) Apache’nin RAM açlığını doyuramadı. Apache ayarlarında ufak düzeltmeler sorunu çözdü. Fazla uzatmadan bu girişi bitirip yazıma başlıyorum. Ben yeterince sorun yaşadım fakat siz sorun yaşamayın, keyfini çıkarın diye bu yazıyı yazmaya karar verdim. 🙂 Yanlışlarım olabilir. Yorumlarınızı beklerim. Keyifli kurulumlar.

DigitalOcean Sunucu Özellik Değişiklikleri ve İyileştirmeleri

Ocak 2018 tarihi itibariyle DigitalOcean’ın yaptığı iyileştirmeler sonucu 5 dolarlık minimum paketteki sunucu özellikleri 1 çekirdek işlemci, 1 GB RAM ve 25 GB SSD olarak belirlendi. Ayrıca Frankfurt lokasyonundaki sunucu Türkiye’ye ortalama 45 ms ping süresi veriyor. 1.5 seneden fazladır kullandığım sunucumda gözlemlediğim uptime süresi ise %99.99’u buluyor.

Adım Adım VPS Sunucu Kurulumu

  • Başlamadan bilinmesi gerekenler;
  • DigitalOcean Üyeliği – VPS Kurulumu & PuTTY İle Bağlantı Kurma
    • 1 CPU, 1 GB RAM ve 25 GB SSD özelliklerinde $5 ücretli CentOS 7.2.1511 64-bit sunucu (Droplet) oluşturulması
    • Sunucu oluşturulurken konum seçilmesi gerekmekte. Araştırmalarım ve DigitalOcean sunucularına attığım Pingler sonucu ben sunucumu Frankfurt/Almanya’dan seçtim. Ortalama 45 ms ping vermekte. Tüm DigitalOcean sunucuları yurt dışında olduğu için Türkiye’ye en az ping’i Frankfurt lokasyonu verdi.
  • VestaCP (Web Hosting Control Panel) Kurulumu
    • VestaCP kullanırken SSL sertifikası oluşturma kısmında kendiliğinden Lets Encrypt desteklediğini fark ettim. Fakat kullanmak istediğimde hata verdi. Bu hatayı PuTTY ile bağlanıp yum install vim-common komutu ile çözebiliyoruz.
  • CentOS 7.2’de Zaman Dilimi (Timezone) ve Ağ Zaman Protokolü (NTP) Ayarları
  • CentOS 7’de Swap File Oluşturulması ve İnce Ayarları
  • Kullanıcı Oluşturulması
    • Root yetkileri verilmesi
    • Root kullanıcısının SSH kapatılması (Güvenlik Duvarında 22 portunu herkese açmazsak buna gerek yok)
    • Yeni kullanıcıya Visudo verilmesi (WinSCP için.)
  • OpenVPN (Bir açık kaynak VPN Sunucusudur. VPN ihtiyacınız olmasa bile sunucuya bu kanaldan ulaşmak güvenlik sebebiyle tavsiyem ve tercihimdir.)
    • Kullanacağınız cihazlara OpenVPN sertifikasının konulması
    • OpenVPN’i aynı kullanıcı adıyla birden fazla cihazda kullanmak için gereken Duplicate Key ayarının yapılması
  • Root FTP, phpMyAdmin, SSH kullanıcılarının ve bilgilerinin not alınması
  • VestaCP Firewall (Güvenlik Duvarı) Ayarları
  • Site Dosyalarının Taşınması
  • Site Veritabanlarının Taşınması
  • phpMyAdmin 2 MB Olan Yükleme Sınırının Arttırılması
    • /etc/php.ini post_max_size = 50Mupload_max_size = 50M, apachetl restart
  • NetData Monitoring Kurulumu
  • Varnish HTTP Cache (Varnish en sevdiğim konu. Siteleriniz bu program sayesinde ışık hızında açılmakta. Varnish özetle sitenizin son halini önbelleğe alıyor (Disk veya RAM üzerine) ve bunu sunuyor. Sitede değişiklik olduğunda tabi ki bu tekrar oluşturuluyor ve artık yeni hali sunuluyor.)
    • Varnish 80 portundan yayın yapmakta 8085’ten dinlemekte, Nginx 8080’den dinlemekte 8085’ten yayın yapmakta ve Apache 8080’den yayın yapmakta.
  • Hostname
  • SPF (Mail kayıtları)
  • Apache (PHP optimizasyonları yapılacak. RAM’i tüketmesi sorunu çözülecek.)
  • Adım adım WordPress ve OpenCart Kurulumu
  • DigitalOcean Düzenli Sunucu Yedekleme & Snapshot
  • Virtual Host Dosyalarında php_admin_value open_basedir none Ayarının Eklenmesi
  • htop Kurulumu
  • ownCloud Kurulumu (Dropbox, Google Drive vb. gibi)
  • MySQLTuner ile MariaDB Optimizasyonu
  • CentOS’a Transmission Torrent Client Kurulumu
  • NGINX Optimizasyonu
  • phpMyAdmin’i “.htaccess” ile Güvenlik Altına Almak
  • VestaCP’ye (Web Hosting Control Panel) Sonradan SpamAssassin Kurulumu

Test Yaptığım Siteler

Bu siteleri test yapmak, testler sonucunda sitemin hız puanlamasını öğrenmek ve optimizasyonlar yapmak için kullanıyorum. Siz de faydalanabilirsiniz.

Test Sonuçları

Aşağıya sunucum ve sitelerimle ilgili bazı görüntüler ekliyorum. Sizin de benim gözümden görmenizi istedim. Bazı hız testleri de mevcut. Gerekli optimizasyonlarla sunucu aşağıdaki gibi olmakta.

1 / 4

Güncel Test Sonuçları (18/05/2018)

Site Masaüstü Mobil
Google – PageSpeed Insights 78 61
GTmetrix 88-63
Pingdom (Stockholm, Sweden) 76

Günlük

Bu günlük kısmında başıma gelenleri tarih tarih sizlere aktarıyorum. Üst kısımdan bağımsız olması için ayırmaya karar verdim. Böyle daha anlamlı duracak 🙂

VPS Sunucuyu CentOS 7.2 den 7.3 Sürümüne Güncelleme (02/02/2017)

Sunucumu bugün 2-3 saat süren çalışmalar sonucu CentOS 7.2 sürümünden 7.3 sürümüne yükseltmiş bulunmaktayım. yum update komutuyla sunucuda yüklü olan her şeyi bir kerede güncelledim. Yaklaşık 300 MB ve 400 paketten oluşan bir güncelleştirme gerçekleşti.  Bu işlemlerin sonunda NGINX, Virtual Host dosyaları, httpd, Dovecot Mail Sunucusu ve Varnish ayarlarını baştan yapmam gerekti. Tüm bu ayarlar sıfırlanmıştı. Sıfırlanma sebebi benden kaynaklı da olabilir. Sorun çıkmasın diye Vesta Web Panel’den kullanıcımı tekrar oluşturdum. Tekrar oluşturmak bir tuş ile Vesta üzerinden oluyor. Ezbere çoğu ayarı yapabildim fakat Dovecot dosyalarını ne kadar uğraşsam da düzeltemedim. Dovecot’ta sıkıntı varken Roundcube sunucu ile bağlantı kuramadığına dair hata vermekteydi. Sunucumu güncellemeden önce Snapshot’ını almıştım. Bu Snapshot’ı kullanarak yeni bir sunucu oluşturdum ve Dovecot dosyalarını (sunucumun güncellenmeden önceki halinden) bundan kurtardım. Oradan aldığım dosyaları yerine koyduğum an sorun çözüldü. Sunucu işi gerçekten büyük bir sorumluluk. Sıklıkla Log dosyaları arasında kayboluyorum.


VPS Sunucuda Varnish Cache Problemi (05/02/2017)

Varnish Cache ile bir ay süren zahmetli uğraşlarım sonucu az önce yollarımı ayırdım. 512 MB sunucumun RAM azlığı ve Varnish’in önbellek kısmını SSD’ye taşımama rağmen hala 20% gibi bir RAM kullanımı olduğu için sistem neredeyse çalışmamaktaydı. MariaDB, NGINX, Apache vb. gibi tüm sunucularda günlerce optimizasyon çalışmaları yaptım fakat yinede olmadı. Şimdilik yoluma Varnish’siz devam edeceğim. En azından 1 GB RAM’li bir sunucuya geçersem bunu kurabilirim. Sorunla ilgili biraz daha bilgi vermek gerekirse, sunucu RAM kullanımı Varnish varken 80%’i geçmiyordu. Varnish bu kalan 20%’yi tutuyor ve bırakmıyor gibiydi. Zaten kullanabildiğim 80% üzerinde de 20% kullanımı vardı. Bu yüzden sistem Swap belleğe yani SSD üzerine yazmaya başlıyordu. SSD olduğu için Swap çokta korkunç değil fakat Varnish varken Swap’a geçildiğinde sistem kitleniyor, saniyede 1 GB gibi bir disk okuması gözlemliyordum. Bir sorun vardı fakat bu sorun Varnish kullanılırken Swap’a geçildiğinde olduğu için bence benden kaynaklı değildi.

Problem RAM azlığı gibi görünse de aslında Varnish’in RAM’in 20%’sine el koyması, kalan 80%’den zaten 20% kullanıyor olması, haliyle RAM’in tükenmesi ve Swap’a geçilmesi, normalde Swap’a geçildiğinde ciddi sorunlar yaşanmazken Varnish varken saniyede 1 GB gibi disk okumaları görülmesi. Bu haliyle faydadan çok zararı olduğu için Varnish’i devre dışı bıraktım. Bu yüzden anlatımını gerçekleştirmeyi düşünmüyorum.


VPS Sunucuda PHP 7 Güncellemesi (08/02/2017)

Sunucumun PHP sürümünü 5.6 dan 7.0.15’e yükselttim. replace komutuyla yükseltmeyi gerçekleştirdiğim için hali hazırda kullanılan bir sistemin yükseltmesini minimum zararla başardım. Tek sorun Roundcube Webmail’de çıktı. Roundcube 1.2.3 sürümü PHP 7’yi desteklese de ısrarla bu yüklemeyi yaparken uyumsuz olduğunu belirterek silmek istedi. Sildiği tüm dosyaları bulup isimlerini değiştirdim silemesin diye, aslında buna da gerek yok. Config klasörü dışında pek birşey gerekmiyor. Roundcube’ün Config klasörünü sağlama aldıktan sonra yükseltmeyi başlattım ve bu yükseltme Roundcube’ü sildi yani sildiğini sandı. PHP 7 yükseltmesi başarılı olmuştu sistem inanılmaz hızlanmış ve RAM tüketimi ciddi derecede azalmıştı. Fakat Roundcube 1.2.3 HTTP 500 hatası verdi. Bende Roundcube’ü 1.3 beta sürümüne yükselttim ve o da şuan çalışmakta. Bunla ilgili bir yazı yazmayı düşünmüyorum çünkü fazlasıyla karışık. Düzgün bir şekilde anlatabileceğimi düşünmüyorum ve her aşamada sorun çıkabilir bunları da çıktıkça çözmek lazım. PHP sürümünü güncellemek kadar Roundcube’ü yükseltmekte zor bence. Sırada MariaDB’yi 10’a yükseltmek var.


VPS Sunucuda MariaDB 10 Güncellemesi (08/02/2017)

MariaDB’yi 10.1.21 sürümüne güncelledim. Bu güncelleme kolay oldu. PHP 7 ile birlikte bir yazı yazabilirim. MariaDB 10 güncellemesinden sonra Log tutmayı durdurdu. my.cnf dosyasında yaptığım değişiklik ile bunu çözdüm.


WordPress Sitelerde Eklentilerin PHP Sürümüyle Uyum Kontrolü (09/02/2017)

PHP 7 ve MariaDB 10 güncellemelerinden sonra sitelerimi detaylı bir şekilde kontrol ettim. İki adet WordPress sitem mevcut. Bu ikisine PHP Compatibility Checker adlı eklentiyi kurarak temalarımın ve tüm eklentilerimin PHP 7 desteklerini kontrol ettim. Favicon’larımı yönettiğim All In One Favicon bir kaç hata verdiği için bunu  Favicon by RealFaviconGenerator ile değiştirdim. Bunun dışında başka bir problem yoktu.


VPS Sunucuda Varnish Cache Problemi Çözüldü! (19/05/2017)

Merhabalar. Varnish kullandığımda sunucumda bazı sıkıntılar yaşamıştım. Bugün akşam saatlerinde Varnish’i tekrar aktifleştirdim. Şimdiye kadar bir sorun yaşamadım. Sorun yaşamamamın nedeni sanırım Swap dosyasında yaptığım iyileştirmeler oldu. Son yaptığım ayarları bu yazımdan okuyabilirsiniz. Bu ayarlarım sonrasında RAM kullanımında o kadar iyi gelişmeler oldu ki bende Varnish’i tekrar aktif etmek istedim. Sayfalarım tekrar en başta anlattığım gibi hızlanmış durumda. Gelişmeleri tekrar bildiririm.


Varnish Cache Neden SSL Desteklemiyor? (25/05/2017)

Merhabalar. Son zamanlarda sunucumdaki bütün siteleri Let’s Encrypt ile SSL lisansına kavuşturmayı planlıyordum. İki adet sitemi bugün itibariyle SSL’e geçirdim. Fakat HTTP ve HTTPS portları farklı olduğundan HTTP kısmında çalışabilen Varnish Cache haliyle HTTPS kısmında çalışmıyor. Bazı araştırmalarımda SSL portuna da Varnish eklemeyi başaranlar var fakat Varnish HTTP Cache SSL desteklemiyor hatta kendi sitelerinde neden SSL desteklemediklerine dair bir yazı yazmış durumdalar. Bu yazıya buradan ulaşabilirsiniz.

Böyle bir durum olduğu için bende Varnish Cache kullanmaktan tekrar vazgeçmek zorunda kalacağım. Şimdilik tüm sitelerimin geçişini tamamlayacak vakit bulamadığım için kalan sitelerimde hala Varnish aktif durumda.

İlgilenen olursa İngilizce olan bu yazıda Varnish Cache’e SSL desteği eklemenin yolunu gösteriyorlar.


Sunucumda Bulunan Sitelere Yapılan Saldırı ve Önlemlerim (22/04/2018)

Merhabalar. Uzun süredir yazıma ekleme yapmıyordum. Pek vakit bulamıyorum şu sıralar. Kurstu, eğitimdi, iş güç derdiydi derken buralara yolum düşmez oldu. Tabi yine de sunucumu güncel ve ayakta tutmaya çalıştım her zaman. Optimizasyonlarıma devam ettim. Nginx, Apache ve MariaDB ile sürekli savaş verdim. Şimdilik iyi gibi. Fakat tam anlamıyla tatmin olmuş değilim. Neyse. 2 gündür Apache yani “httpd” görevinde sürekli %100 bir kullanıma rastladım. Bu %100 kullanımın benim optimizasyonda yaptığım hatalardan bile kaynaklandığını düşündüm sıklıkla. Fakat sunucumda bulunan bir sitenin saldırıya uğradığı hiç aklıma gelmemişti. Saldırı ihtimallerini de çok düşünmüyordum zaten gerekli önlemlerimi almıştım, WordPress giriş kısmı iki adımlıydı.

Bugün iyice araştırmaya giriştim ve Apache loglarında “wp-login.php” ve “xmlrpc.php” üzerinde sürekli bir denemeyle karşılaştım. Saldırı sadece 1 siteye olduğu için ve vakit bulamadığım için önce bu siteyi kapattım ve %100 işlemci kullanımı sorununun geçtiğini gördüm. Bu akşam da siteyi açtım ve anında saldırılar devam etti. İlk çözüm olarak “.htaccess” kurallarında bu loglarda gördüğüm iki PHP dosyasını erişime kapattım. Sorun haliyle düzeldi. Ayrıca WordPress sitelerimin “wp-admin” alanlarını da (daha önce isimlerini zaten değiştirdim fakat yine de yaptım bunu) kullanıcı adı ve şifreyle girilebilir bir hale getirdim.

Bu yaptıklarım sorunu çözdü aslında fakat ben tatmin olmadım. Neden olduğunu sorarsanız saldırılar hala devam ediyordu, loglara düşüyordu. Sistemi yormuyordu fakat neden hala aynı IP adresleri ısrarla benim üzerimde deneme yapsınlar ki? Tam burada zaten Vesta panelde kurulu olan fail2ban devreye girdi. Fail2ban zaten hali hazırda SSH, FTP, SFTP, Exim, Dovecot, MySQL ve Vesta için çalışıyordu fakat Apache için herhangi bir çözüm göremedim ve bunu araştırmaya başladım. Vesta Paneldeki fail2ban ayarlarına aşağıdaki alanları eklemem gerektiğini gördüm. Tabi bu alanları önce kendime göre düzenledim. Sonra da ekledim. Aşağıdaki ayarlar (Tüm fail2ban ayarlarımı ekledim, ister hepsini alın kullanın, ister Apache kısımlarını alın yapıştırın.) sayesinde Apache loglarına belli sayılardan fazla düşen IP adresleri sonsuza kadar engelleniyor. Bu yazıyla ilgili kaynağı da yazımın sonuna ekliyorum. Oradan destek alabilirsiniz. Ben yazılarımda daha çok yol göstermeye çalışacağım artık. Kaynakları Türkçe’ye çevirip paylaşmaya pek vaktim olamıyor. Teşekkürler 🙂

fail2ban Ayarlarım

Makalem Hakkında Önemli Bildiri! (11/05/2018)

Evet millet. Bu yazımın faydalı olduğunu söyleyenler olduğu gibi faydasız olduğunu söyleyen de çok var 🙂 oraya buraya anonim yazmak yerine keşke şikayetlerinizi tam bu sayfada aşağıda olan yorum bölümüne yazsanız. Benim tek derdim zaten sizlere yardımcı olmak. Bu yüzden yapıcı eleştirilere zaten açığım. Ne yapalım neler eksik? Ayrıca yakın zamanda canlı yayınlar yapmayı planlıyorum. Öyle sohbet muhabbet edip beraber kurulumlar yapalım istiyorum. Öncelikle aklımda Vesta Panel kurulumuyla ilgili yazı yazmak var. Bu paneli kurduğumuzda zaten iş bitiyor. Detay ve spesifik ayarlar için zaten benim yapabileceğim bir şey yok. Yüzlerce farklı makaleden yararlanmak gerekiyor adam akıllı çalışan bir sunucuya sahip olmak için. Benim öncelikli hedefim sizlere biraz itici kuvvet sağlamaktı, onu da iyi kötü sağladığımı düşünüyorum. Yorum kısmında takıldıkça sorun, yardımcı olayım. Türkiye’de “VPS Kurulumu” ile ilgili daha aktif bir yazı yok gibi duruyor. Ayrıca Facebook grubumuza da beklerim. Buraya tıklayarak grubumuza gelebilirsiniz. 3200 kişi sizi bekliyoruz 🙂

Kaynak: 
https://www.maketecheasier.com/fail2ban-protect-apache-ddos/
Baştan Sona VPS Sunucu Kurulumu
5 üstünden 4.9 puan (98.75%) | Toplam 16 oy kullanıldı.