Ana Sayfa Sunucu Kurulum & Yonetim Baştan Sona VPS Sunucu Kurulumu

Baştan Sona VPS Sunucu Kurulumu

1523
Baştan Sona VPS Sunucu Kurulumu
Sitemin tek geliri olan reklamları görüntülemek için AdBlock eklentilerinizi kapatırsanız sevinirim 🙂

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
    • Mail: Yandex.Mail
    • DNS: Cloudflare
  • 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

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


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.

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

Site Masaüstü Mobil
Google – PageSpeed Insights 83 76
GTmetrix 83-66
Pingdom (Stockholm, Sweden) 91
GiftOfSpeed 81/52 81/52

Not: Sitemde Adsense olduğunu unutmayın. Bu testleri ciddi olarak etkiliyor.

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 🙂

[ssh-iptables]
enabled  = true
filter   = sshd
action   = vesta[name=SSH]
logpath  = /var/log/secure
maxretry = 5
[vsftpd-iptables]
enabled  = false
filter   = vsftpd
action   = vesta[name=FTP]
logpath  = /var/log/vsftpd.log
maxretry = 5
[exim-iptables]
enabled = true
filter  = exim
action  = vesta[name=MAIL]
logpath = /var/log/exim/main.log
[dovecot-iptables]
enabled = true
filter  = dovecot
action  = vesta[name=MAIL]
logpath = /var/log/dovecot.log
[mysqld-iptables]
enabled  = false
filter   = mysqld-auth
action   = vesta[name=DB]
logpath  = /var/log/mysqld.log
maxretry = 5
[vesta-iptables]
enabled = true
filter  = vesta
action  = vesta[name=VESTA]
logpath = /var/log/vesta/auth.log
maxretry = 5
[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/httpd/domains/*error.log
maxretry = 3
findtime = 600
ignoreip = 138.68.81.2
[apache-noscript]
enabled  = true
port     = http,https
filter   = apache-noscript
logpath  = /var/log/httpd/domains/*error.log
maxretry = 3
findtime = 600
ignoreip = 138.68.81.2
[apache-overflows]
enabled  = true
port     = http,https
filter   = apache-overflows
logpath  = /var/log/httpd/domains/*error.log
maxretry = 2
findtime = 600
ignoreip = 138.68.81.2
[apache-badbots]
enabled  = true
port     = http,https
filter   = apache-badbots
logpath  = /var/log/httpd/domains/*error.log
maxretry = 2
findtime = 600
ignoreip = 138.68.81.2

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 🙂

Aruba Cloud’a Taşınma – Cloudflare – Yandex.Mail

Merhabalar. DigitalOcean’ın aşırı fiyatları sebebiyle Aruba Cloud’a taşınma kararı aldım. Aruba Cloud’daki sunucu özellikleri 1 CPU – 1 GB RAM – 20 GB SSD ve aylık ücreti 1 Euro. Daha önce de 10 ay kadar bir süre burada sunucum ve sitem oldu. uptime’ları DigitalOcean’dan fazlaydı diyebilirim.

Aruba Cloud

Yeni sunucuma Vesta Panel’i kurarken kullandığım kod dilimini aşağıda paylaşıyorum. Kişisel alanları değiştirerek kullanabilirsiniz.

# Connect to your server as root via SSH
ssh [email protected]
# Download installation script
curl -O http://vestacp.com/pub/vst-install.sh
# Run it
bash vst-install.sh --nginx yes --apache yes --phpfpm no --named no --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota no --exim no --dovecot no --spamassassin no --clamav no --softaculous no --mysql yes --postgresql no --hostname server.ogulcan.tk --email [email protected] --password Şifreniz

Not: Üstteki komutlarda kurduğunuz Vesta’da DNS ve Mail hizmeti olmayacaktır. Kendi isteğinize göre bu komutu baştan oluşturmanızı tavsiye ederim. Aşağıdaki adresten oluşturabilirsiniz.

Cloudflare

3 sitemi de tamamen Cloudflare’a geçirdim. Bu siteyle sunucu arasına giriyor tam olarak. Yani kullanıcılar önce sunucuya gitmek yerine Cloudflare’a gidiyor, Cloudflare gereken alanları sunucudan, diğer alanları da varsa önbelleklemeden getiriyor. Haliyle bu da hız kazandırıyor. DNS hizmeti de tamamen Cloudflare tarafına geçiyor bu da bir avantaj tabi. Yeni sunucumda DNS hizmeti vermeyeceğim artık.

Yandex.Mail

Tüm mail trafiğimi artık Yandex.Mail üzerinden yapmaya karar verdim. Sınırsız kotalı mail hesabı ve 10 GB bulut depolama ile geliyor. Domain başına 1000 adet mail kutusu oluşturulabiliyor. Deneyeceğim.

Yandex.Mail’e geçişimi gerçekleştirdim. Kolay oldu. SPF ve DKIM kayıtlarını DNS’e eklemeyi unutmayın yeter!

Sonuç

Sonuç olarak DNS, çeşitli güvenlik özellikleri ve CDN gibi özellikleri Cloudflare ile, tüm Mail hizmetimi Yandex.Mail ile aldığım temiz bir sunucum oldu. Sunucuda Vesta Control Panel, OpenVPN ve monitoring aracı olarak NetData yüklü. Başka bir şey yok. Vesta’yı kurduktan sonra MariaDB olsun PHP olsun bunlar hep eski sürümleriyle geliyor. Bunları güncellemek gerekiyor o kadar. Ayrıca mail server’ım artık sunucuda bulunmadığı için mail gönderirken bir sorun yaşadım fakat zaten sunucuda yüklü olan mailx’i ayarlayarak çözdüm.

Kaynak: 
https://www.maketecheasier.com/fail2ban-protect-apache-ddos/

Baştan Sona VPS Sunucu Kurulumu
Puan: 4.9 - 27 oy