evde-hosting-2

Evde Hosting! Ama Nasıl? Sunucuyu hazırlamak.

Evde web sitesi host etmek ile ilgili bir yazı dizisine başladım, e dizinin şanından kaynağından okumak gerek. Olmaz ben buradan okuyacağım derseniz o da mümkün sadece okumaya devam edin :) Kaynağa gitmek için tık : https://anilaras.net/evde-hosting-2/

Evde hosting yazı dizinin 2. bölümüne hoş geldiniz! Bu bölümde biraz daha teknik kısıma eğilerek sunucuyu dışarıdan gelen isteklere açmadan önce genel olarak çalışır hale getirmeyi planlıyorum. Burada yaptıklarımı, raspberry pi üzerinde uyguluyor olacağım fakat genel olarak debian tabanlı bir dağıtım kullanan herhangi bir bilgisayarda aynı adımları takip ederek sizde aynı sonucu elde edebilirsiniz. Bu bir masaüstü veya herhangi bir SBC olabilir.

İlk olarak bir web sunucusu ayağa kaldırarak başlayalım daha sonra bu web sunucusuna dışardan domain yönlendirip, dinamik IP ayarlarını yapacağız. Ben genelde apache web server kullanmayı tercih ediyorum kurulum yaptığım sistemlerde, burada da bunu bozmayacağım ve özellikle wordpress kullanmayı planladığım için LAMP stack kurulumu ile işe başlayacağım. Tabi bu sunucu üzerinde .net ve başka platformları da çalıştırmak gayet mümkün, onlar da dizinin devamındaki yazılarda kendine yer bulacak

(LAMP Linux, Apache, Mysql, PHP’nin kısaltmasından oluşmakta.)

İsterseniz Apache kurulumu ile başlayalım;

ilk iş olarak bir paket kaynaklarımızı ve paketlerimizi güncelleyelim;

sudo apt-get update

sudo apt-get upgrade

Güncelleme işleminin ardından apache web server yazılımını kurmamız gerekiyor;

sudo apt install apache2 -y

Kurulum işleminin ardından web serverimiz çalışmaya başladı, artık server cihazın yerel ağdaki ip adresini tarayıcınızın adres çubuğuna girerseniz, default apache karşılama sayfasını görebilirsiniz.

Web server ayağa kalktı ve /var/www/html dizini altında bulunan default belgeyi yayınlıyor ama henüz işimiz bitmedi, şimdi sunucumuzda gerekli izin ayarlarını yapmamız gerekiyor ki web sayfalarımızda düzenleme yapmak istediğimizde sorun yaşamayalım. Aşağıdaki komutta kullanıcıadı yazan yere kendi kullanıcı adınızı yazmayı unutmayın!

sudo usermod -a -G www-data kullanıcıadı

sudo chown -R -f www-data:www-data /var/www/html

Bu komutu çalıştırdıktan sonra, değişikliklerin etkili olması için oturumu kapatmanız ve ardından tekrar oturum açmanız gerekecek. ssh bağlantısını kapatıp tekrar giriş yapın kısacası

Sunucuya ip adresi ile ulaştığımız için yalnızca tek bir web sitesi görebiliyoruz ama aceleye mahal yok sayın okuyucu, domainleri bağlayıp ssl sertifikalarımızı ayarlarken, birden fazla web sitesini de virtual hosts yardımıyla nasıl aynı adresten host edildiğini de göreceğiz.

Şimdi sıra PHP’de

Web sunucumuzu ayağa kaldırdık artık kalbi atıyor ve gelen http isteklerine mutlulukla cevap veriyor ama hala biraz yarım akıllı sadece statik yani HTMLden ibaret sayfaları gösterebiliyor zavallıcık. Şimdi PHP kullanarak bu sunucuya biraz akıl eklemeli.

Gerekli paketleri sunucumuza yüklemek üzere aşağıdaki komutu terminale girerek başlayalım.

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mbstring php7.4-mysql php7.4-curl php7.4-gd php7.4-zip -y

Kurulum tamalandıktan sonra artık sunucumuzda PHP olduğuna göre, çalıştığından emin olmak için test edebiliriz.

Testi gerçekleştirmek için /var/www/html/ dizini içinde bir PHP dosyası oluşturarak PHP’nin çalışıp çalışmadığını göreceğiz.

Bu dizinde bir dosya oluşturmak, onu bir web tarayıcısında açtığınızda işlenmesini ve görüntülenmesini sağlayacaktır.

Aşağıdaki komutu terminale girerek bir php dosyasını terminal editöründe açalım;

sudo nano /var/www/html/info.php

açılan editöre sistemde kurulu php hakkında bilgi almak için kullanılan phpinfo(); fonksiyonunu yazmamız yeterli.

<?php

phpinfo () ;

?>

Şimdi editördeyken CTRL X tuşlarına ve ardından Y tuşuna basarak yazdıklarımızı kaydedip, tarayıcıdan http://192.168.1.24/info.php adresine gidelim. IP adresi sizin için farklı olabilir, cihazınız yerelde hangi ip adresini alıyorsa o ip adresini yazın. ip adresinizi ip addr komutunu terminale girerek öğrenebilirsiniz.

Her şey düzgün gittiyse yukarıdaki gibi bir çıktının sizi karşılamış olması gerekiyor. Buraya kadar her şek tamamsa şimdi bir de Database sunucusu kuralım ki sunucumuza bir sunucu diyebilir hale gelelim. Hazırsak -Işınla bizi scotty-

MySQL (MariDb) DataBase Server Kurulumu

Bir web sunucusunun olmazsa olmazlarından biri de database sunucusu. Ben wordpress kullanacağım için şimdilik sadece MySQL kuracağım fakat, .net projelerimde posgresql tercih ediyorum. Yazı dizisinin bir sonraki bölümünde .net ve posgresql ile ilgili daha detaylı bilgiler bulabileceksiniz.

Şimdi paketlerimizi indirelim ve kuruluma başlayalım. Gerekli komut aşağıda;

sudo apt install mariadb-server

Yüklenen MySQL sunucu yazılımının “root” kullanıcısı için bir şifre belirleyerek sunucuyu güvenlik altına almamız gerekecek.

Varsayılan olarak, MySQL herhangi bir parola ayarı olmadan kuruluyor, yani MySQL sunucusuna herhangi bir kimlik doğrulaması olmadan erişebiliyorsunuz. Bu istediğimiz bir durum değil, sunucu güvenliği için bir tehtid oluşturmakta, bu nedenle güvenlik sağlamak üzere MySQL güvenlik sürecini başlatmak için aşağıdaki komutu termine girin.

sudo mysql_secure_installation

root kullanıcı için bir parola belirlemek ve MySQL kurulumunuzu güvenceye almak için sizi yönlendirecek bir sihirbaz çalışacak.

Daha güvenli bir kurulum için, “Y” veya “N” olarak yanıtlamanız istendiğinde tüm istemlere “Y” yanıtını vermelisiniz.

Bu işlemler, birinin sunucuya daha kolay erişmesini sağlayan özellikleri kaldıracaktır.

MySQL sunucusuna erişmek ve WordPress veya PHPMyAdmin gibi yazılımlar için veritabanları ve kullanıcılar oluşturmak için kullanmamız gerekeceğinden, yukarıdaki güvenlik sihirbazının çalışması sırasında belirlediğiniz parolayı not ettiğinizden emin olun.

kurulum ve güvenlik işlemlerini tammaladıktan sonra MySQL sunucusuna erişmek ve veritabanlarında değişiklik yapmaya başlamak için aşağıdaki komutu girebilirsiniz.

sudo mysql -u root -p

bu komutu çalıştırınca MySQL’in root kullanıcısı için sihirbaz çalışırken oluşturduğunuz şifreyi girmeniz istenecektir. Linux parola girişi gibi, parola siz yazarken görünmeyecektir. Yazmıyor diye düşünmeyin

Artık veritabanları oluşturmak, değiştirmek ve silmek için MYSQL komutları girebilirsiniz. Kullanıcılar oluşturabilir veya silebilir ve onlara herhangi bir veritabanını yönetme haklarını atayabilirsiniz. Çıkmak için quit; yazabilirsiniz.

Son olarak php mysql eklentisini de kurarak php ile mysqli konuşabilir hale getirelim bunun için aşağıdaki komutu kullanmanız yeterli.

sudo apt install php-mysql

SQL sunucumuzu kurup kullanıma hazır hale getirdik fakat şuan sadece komut satırından erişebiliyoruz yönetimi normal bir kullanıcı için oldukça zor bu nedenle phpmyadmin gibi bir yazılım kurarak daha kolay yönetilebilir hale getirmeliyiz sunucuyu fakat şu an temel bir kurulum yaptığımız için bu kısmı bir sonraki bölüme bırakıyorum.

Apache Virtual Hosts

Son olarak tek IP adresi üzerinde birden fazla farklı web sitesi ve domain kullanmamızı sağlayan apache web sunucusunun virtual host özelliğine bakarak bu yazıyı noktalayalım şu an temel kurulumda bu kısım pek işimize yaramayacak fakat daha sonra domainlerimizi bağlarken kullancağız.

Virtual Hosts, Apache’nin önemli bir parçasıdır. Apache bu Virtualhost dosyalarını kullanarak, bağımsız siteleri nasıl idare edeceğini yönetir.

Başlamak için /etc/apache2/sites-available klasörü içinde benimdomainim.com.conf adlı bir Virtual Host dosyası oluşturalım.

sudo nano /etc/apache2/sites-available/benimdomainim.com.conf

Açılan text editöre aşağıdaki configütasyon textini aynen yapıştırın.

<VirtualHost *:80>

     ServerName benimdomainim.com

     ServerAlias www.benimdomainim.com

     DocumentRoot /var/www/benimdomainim.com/public_html

     ErrorLog ${APACHE_LOG_DIR}/benimdomainim.com_error.log

     CustomLog ${APACHE_LOG_DIR}/benimdomainim.com_access.log combined

</VirtualHost>

Gelin şimdi satır satır açıklayalım bu metni

ilk satırda <VirtualHost *:80> göreceksiniz, Bu satır, Virtual Host başlangıcını ve bu VirtualHostun 80 numaralı portu dinlemesi gerektiğini belirtir.

bilmeyenler için 80 http için varsayılan port numarasıdır. Aynı şekilde https için kullanılan port 443’tür.

Daha sonra gelen iki satırda

ServerName benimdomainim.com

ServerAlias www.benimdomainim.com

Göreceksiniz. Burada Virtual Hosta iki yönerge ekliyoruz. Bu yönergelerden ServerName adlı domain ismini belirtir. Bu VirtualHost’u domain adıyla ile eşleştirmek için kullanılır. Yani birden fazla site host ederken birisi benimdomainim.com’a girip sunucumuza bir istek gönderirse buradaki ayarları uygula anlamına gelecek.

İkinci yönerge olan ServerAlias eşleştirilecek sub domainleri tanımlar. Bu yönerge, www gibi sub domainleri eşleştirmek için kullanışlıdır.

Daha sonra ise oldukça önemli olan

DocumentRoot /var/www/benimdomainim.com/public_html

satırına geliyoruz bu satırda benimdomainim.com üzerinden bir istek geldiğinde, bu isteği /var/www/benimdomainim.com/public_html dizini altındaki html veya diğer ilgili dosya adlarını kullanarak cevaplamayı sağlıyor. Kısaca web sitemizin barındığı dizini ayarlamayı sağlıyor.

Son olarak da

ErrorLog ${APACHE_LOG_DIR}/benimdomainim.com_error.log

CustomLog ${APACHE_LOG_DIR}/benimdomainim.com_access.log combined

satırlarını açıklayarak bitirelim. Bu satırlar sunucumuzun log doyalarının nerede ve hangi isimle oluşacağını ayarlamamızı sağlıyor. Bu log dosyalarını inceleyerek hangi IP adresleri hangi sayfaya erişmiş, yada sitede bir hata var mı? vs. gibi konularda bilgi sahibi olabilirsiniz.

Konfigurasyon dosyamızı CTRL X ve ardından Y tuşlarına basarak kaydettikten sonra sıra geldi ilgili web sitemizi barındıracak dizini oluşturmaya ve bu dizinin izinlerini ayarlamaya.

öncelikle dizini oluşturalım ve chown komutuyla dizin sahipliğini www-data kullancısına transfer edelim;

sudo mkdir -p /var/www/benimdomainim.com/public_html

sudo chown -R www-data:www-data /var/www/benimdomainim.com/public_html

Artık virtual host konfigürasyon işimiz tamamlandı. Artık aşağıdaki komutu kullanarak konfigürasyonumuzu aktif hale getirebiliriz. Bu komut, yapılandırma dosyamız için /etc/apache2/sites-available/ ve /etc/apache2/sites-enabled/ dizinleri arasında bir sembolik bağlantı oluşturacaktır.

sudo a2ensite benimdomainim.com.conf

Son olarak, yeni Virtual Host dosyamızın çalışması için için Apache2 servisini yeniden başlatmamız gerekiyor. Bu aşağıdaki komut ile yapılabilir.

sudo systemctl reload apache2

Son

Artık bir kendi domainimizi bir sonraki yazıda anlatacağım şekilde sunucumuzun IP’sine yönlendirebilir ve istenen domain için web sitesi sunmasını sağlayabiliriz.

Sonraki yazıda hem ücretli hem de ücretsiz versiyonları ile beraber dinamik DNS ile sunucumuzu nasıl bir domain adıyla internete açacağımızı anlatacağım. …

Şimdilik bu kadar kendinize iyi bakın, sonraki yazıda görüşmek üzere