Dakikalar içinde Mükemmel bir Web Sunucusu Nasıl Kurulur?

Bu kılavuzdaki direktifleri izleyerek Debian 8 üstünde Apache2 (HTTP), MySQL (DB), Postfix (SMTP), Dovecote (POP/IMAP), Virtualmin 4 (Control Panel) bileşenlerine sahip bir web sunucusunu ayağa kaldırabilirsiniz. Ve sonrasında, Virtualmin ile birden fazla siteyi grafik arayüz üzerinden rahatça bu sunucuya kurup yönetebilirsiniz.

Bu kılavuzu uygulamak için öncelikle temel seviyede internet ve linux bilgisine ihtiyacınız var. Daha sonra ilk adım bir sunucu edinmek olacak. Evdeki eski bir bilgisayarı sunucu olarak kurup kullanabileceğiniz gibi, bir veri merkezinden sanal (VPS) ya da fiziksel bir sunucu kiralama şansınız da var. Evde bir sunucu barındırmanın derdi biraz fazla. O yüzden çok özel bir nedeniniz yoksa bir sanal sunucu (VPS) kullanmanız daha iyi olur.

Sunucu Seçimi

Öncelikle, “VPS nedir?” diyenlere bir not düşelim. Virtual Private Server (VPS), özel bir program aracılığıyla, bir fiziksel sunucunun daha küçük bölümlere ayrılmasıyla oluşan sanal sunuculara verilen isimdir. Bu sanal sunucular birbirlerinden (büyük ölçüde) izole bir şekilde, sanki bağımsız fiziksel sunucularmış gibi çalışırlar. O yüzden sunucunun sanal ya da fiziksel olması kullanım açısından pek bir fark yaratmaz. VPS’inizi istediğiniz gibi özelleştirebilirsiniz. Bu şekilde, gerçek bir fiziksel sunucu kiralamadan, daha düşük ücretler ile istediğiniz gibi özelleştirebileceğiniz bir (sanal) sunucunuz olmuş olur.

Eğer kendi başınıza bir VPS kurup yönetebilecek bilgi birikimine sahip değilseniz, piyasada yönetilen (managed) VPS paketleri de bulabilirsiniz. Bu paketleri satın aldığınızda, kurulum ve bakım işlemleri sağlayıcı firma tarafından yapılmış olur, bazı konfigürasyon değişikliklerini de firmaya yaptırabilirsiniz. Fakat doğal olarak, bazı ek maliyetlere ve kısıtlara da katlanmak zorunda kalırsınız. O yüzden en güzeli, linux ve diğer temel web teknolojileri konusunda bir miktar bilgi sahibi olup VPS’inizi kendiniz yönetebilecek hale gelmek.

“Temel bilgi ile bu işi becerebilir miyiz?” diye kendisine soranlar varsa, ben tecrübe ettim, şimdiye kadar oldu. 🙂 Çünkü internette oldukça fazla kaynak var. O kaynakları anlayıp kullanabilecek temel bilginiz varsa, hızlı bir başlangıç yapabiliyorsunuz. Tabi, asıl önemli kısım sonrasındaki bakım işleri. Yani sistemi devamlı güncel tutmak, güvenliğini garanti altına almak, çıkan sorunları çözümlemek…vs. Burada da genelde internetteki kaynaklar yardımınıza koşuyor.

Şimdi, gelelim VPS satın alma işine… Burada ilk karar vermeniz gereken yönetim hizmeti alıp almayacağınız. Eğer yönetim hizmeti alacaksanız aylık minimum 30-40$ civarı ücretlerle karşılaşırsınız. Eğer “bu işi kendim halledebilirim” diyorsanız aylık 2$’a kadar düşen VPS çözümlerine ulaşabilirsiniz.

İkinci önemli konu ise kaynak ihtiyacınız. Orta halli bir web sunucusu konfigürasyonu genelde 250-300 MB RAM ister, dolayısıyla fazla sıkıntı çekmemek için en azından 512 MB RAM’e sahip bir VPS düşünmenizi tavsiye ederim. Yazılım tercihlerinizi değiştirerek (örneğin Apache yerine nginx kullanarak..vs) ve güzel bir ince ayar yaparak 128 MB’lık bir sunucuda da birkaç web sitesi işletebilirsiniz. İşte o zaman, yukarıda bahsettiğim 2$/aylık ücretlere kadar düşme şansınız var. (Bu çözümleri bulmak için lowendbox.com gibi siteleri kullanabilirsiniz.)

Normalde bilindik sağlayıcılara baktığınızda 512 MB’lık VPS çözümlerinin minimum 15-20$/ay civarlarında olduğunu görürsünüz. Daha az bilinen küçük sağlayıcıların çözümleri 6-7$/ay’a kadar düşer, fakat bu firmalarda genelde sirkülasyon çoktur. O yüzden ucuz çözümlerin peşindeyseniz, piyasada uzun süredir varlık gösteren firmaları hedeflemekte fayda vardır.

VPS tercihinde bir diğer (hem önemli hem de önemsiz) detay da, kullanılan sanallaştırma teknolojisidir. Alışveriş esnasında OpenVZ/Virtuozzo, Linux Vserver, KVM, XEN, VMware gibi farklı teknoloji isimleri göreceksiniz. Bunlardan ilk ikisi işletim sistemi seviyesinde sanallaştırma yapan teknolojilerdir, diğer üçü de “kernel” (çekirdek işletim sistemi) seviyesinde sanallaştırma yapar. Kullanıcı açısından önemli farklar şunlardır:

  • OpenVZ gibi teknolojilerde “kernel”in kaynak yükü aldığınız paketin dışındadır. Yani 256 MB RAM’i olan bir VPS alıyorsanız, bu kaynak tamamen sizin ek kuracağınız paketlere ayrılmıştır. Bu sistemlerde sadece linux işletim sistemi çalışır.
  • KVM gibi teknolojilerde ise ayrıca kaynak ayırmanız gereken bir “kernel” vardır. Sanal sistemler arası ayrıştırma kernel seviyesinde olduğu için her türlü işletim sistemi kurulabilir.

Kılavuzda hostname olarak “server1.example.com”, IP adresi olarak “192.168.0.100” kullandım. Bu 2 parametreyi kendi kurulumunuza göre değiştirmeniz lazım.

Kılavuzu geliştirecek önerileri bekliyorum. Kolay gelsin.

Hazırlık

1) Sunucunuza SSH ile login olun ve öncelikle bazı yararlı araçları (nano, htop, ntp, sudo) kurun:

apt-get install nano htop ntp ntpdate sudo

2) Hostname’in düzgün olduğundan emin olmak için aşağıdaki iki komutu çalıştırın ve çıktılarının “server1.example.com” olduğundan emin olun. Farklılık varsa “hostname server1.example.com” komutunu çalıştırın ve “/etc/init.d/hostname.sh start” komutu ile değişikliği etkin hale getirin.

hostname

hostname -f

3) Root kullanıcısının sisteme erişimini kısıtlamamız lazım. O yüzden sisteme farklı bir kullanıcı ekleyin.

adduser YENİKULLANICIADIM

4) Eklediğiniz kullanıcının gerektiğinde root yetkileri ile çalışabilmesi için “sudo” yapabilen kullanıcılar arasına eklemniz gerekli. Aşağıdaki komutu çalıştırın ve karşınıza çıkan ekranda “root ALL=(ALL:ALL) ALL” yazan satırın altına “YENİKULLANICIADIM ALL=(ALL:ALL) ALL” ifadesini ekleyin.

visudo

5) Root kullanıcısı ile sisteme bağlanılmasını engellemek için SSH konfigürasyon dosyasını açıp “PermitRootLogin yes” ifadesini “PermitRootLogin no” olarak değiştirin. Daha sonra yeni kullanıcınız ile giriş yapıp “sudo -i” komutunu kullanarak root yetkilere sahip olabileceksiniz.

nano /etc/ssh/sshd_config

service ssh restart

Temel Kurulum

Artık temel bileşenlerin kurulumuna geçebiliriz. Tüm angaryayı Virtualmin’in otomatik kurulum kodu yapacak.

1) Bunun için aşağıdaki komutları çalıştırarak tmp klasörüne kurulum kodunu indirin ve çalıştırın.

cd /tmp

wget http://software.virtualmin.com/gpl/scripts/install.sh

chmod +x install.sh

./install.sh

“y” yazarak onay verdiğinizde aşağıdaki paketler sisteminize kurulacak.

  • HTTP: apache2 apache2-doc libapache2-mod-fcgid apache2-suexec-custom scponly libapache2-svn
  • DB: mysql-server mysql-client mysql-common postgresql postgresql-client
  • Mail: postfix postfix-pcre spamassassin spamc procmail mailman dovecot-common dovecot-imapd dovecot-pop3d libsasl2-2 libsasl2-modules sasl2-bin
  • FTP: proftpd
  • DNS: bind9
  • Control Panle: webmin usermin
  • Programming: python ruby libapache2-mod-ruby irb rdoc ri php-pear php5 php5-cgi libgd2-xpm libapache2-mod-php5 php5-mysql libxml-simple-perl libcrypt-ssleay-perl libfcgi-dev libnet-ssleay-perl libpg-perl libdbd-pg-perl libdbd-mysql-perl ssleay-perl
  • Antivirus: clamav-base clamav-daemon clamav clamav-freshclam clamav-docs clamav-testfiles
  • Untilities: unzip zip quota iptables openssl subversion awstats webalizer libcrypt- awstats

2) MySQL’i daha güvenli hale getirmek için aşağıdaki komutu çalıştırın. Bu sayede anonim kullanıcı hesabı ve test veritabanları silinecek, root erişimi kısıtlanacak.

mysql_secure_installation

3) Daha sonra bir web tarayıcı açıp adres satırına https://sunucuzun_ip_adresi:10000 yazın. Bir SSL sertifika hatası ile karşılaşacaksınız ki bu gayet normal. Bu hatayı pas geçip ilerleyebilirsiniz. Virtualmin giriş ekranı ile karşılacaksınız. İlk aşamda root kullanıcısı ile giriş yapabilirsiniz. Ama daha sonra hep yeni eklediğiniz kullanıcıyı kullanmaya gayret edin.

4) Karşınıza çıkacak kurulum sihirbazını “next” tuşlarına basarak tamamlayın. Varsayılan değerleri değiştirmenize gerek yok.

5) Sisteminizi biraz hafifletmek için Virtualmin arayüzünde “System Settings > Feature and Plugins” bölümünden bazı özellikleri (ör: AWstats, Webanalizer, PostgreSQL, Spam filtering, Virus filtering, ProFTP) devre dışı bırakabilirsiniz. Daha sonra Webmin arayüzüne geçip “System > Bootup and Shutdown” bölümünden yukarıdaki adımda devre dışı bıraktığınız özelliklerle ilgili işlemleri (ör: clamav, mailman, proftpd, spamassassin) seçip “stop now and on boot” tuşuna basmalısınız ki; prosesler sistem kaynağı tüketmesin.

6) Virtaulmin giriş ekranındaki SSL uyarısını devre dışı bırakmak için de Webmin arayüzünde “Webmin Configuration > SSL > Let’s Encrypt” bölümüne girin. Karşınıza çıkan sayfada “website root directory for validation file” yazan bölümde “other directory” seçip yanındaki kutucuğa “var/www/html” yazabilirsiniz. Daha sonra “Request Certificate” tuşuna bastığınızda ücretsiz bir SSL sertifikası sisteme yüklenecektir.

7) Sisteminizdeki pek çok uygulama root kullanıcısına uyarı mailleri gönderir. Bunları alabilmek için “nano /etc/aliases” komutunu çalıştırıp açılan dosyada “root:root” şeklindeki ibareyi değiştirip “root:eposta@adresiniz.com” şeklinde değiştirmelisiniz. Ardından değişikliğin geçerli olabilmesi “newaliases” komutunu çalıştırmalısınız.

Güvenlik Ayarları

Buraya kadar geldiyseniz, elinizde tam işlevselliğe sahip bir web sunucu var demektir. Aslında daha yapılabilecek şeyler var; ama temel kullanım için bu kadarı yeterli olur. Sadece güvenliği arttırmaya yönelik birkaç ayar gerekli. Onlara da yakında burada yer vereceğim.