Virtual Hosting Kurulumu | Linux

Virtual Hosting Kurulumunu gerçekleştirerek bir sunucuda birden fazla siteyi aynı anda yayınlayabilirsiniz.

Burada yazan işlemler Apache Web Sunucu yazılımı ve Centos, Oracle Linux 7,8,9 versiyonlarına sahip işletim sistemlerinde denenmiştir. Hepsinde uygulayabilirsiniz.

Yazıyı yazdığımda Centos8 üzerinde kurulum yapmıştım. Ancak şu an itibari ile Centos 8 Stream var. ve yine süreç aynı şekilde.

Özellikle Virtual Hosting Kurulumu Hepsinde Aynı.

Sonuç itibari ile Apache Web Server çalışma mantığı hepsinde aynıdır. Farklı bir sistemde aynı mantıkla hareket edebilirsiniz.

Linux İşletim Sistemi Kurulumu

Centos8 kurulumunu resimli bir şekilde anlatmak daha makul geldi. İlk başta bir flash belleğe kurmak istediğim işletim sistemini iso olarak attım. Bu işlemi herhangi bir iso yazma programı ile yapabilirsiniz. Ben burada Raspberry Pi nin sitesinden indirdiğim Raspberry Pi imager programını kullanıyorum. İndirme linki https://www.raspberrypi.com/software/ Buradan imaj atma programını indirebilirsiniz. Yine https://www.centos.org/download/ istediğiniz centos işletim sistemini indirebilirsiniz. Ben Centos Linux x86_64 olanı indirdim. Flash belleğe gerekli yazılımı imaj writer (ben raspberry kullandım) ile atın ve bilgisayarınızın boot ayarlarından usb flash disk ile başlatmayı ayarlayıp aşağıda resimler ilede gösterdiğim şekilde temiz bir kuruum yapabilirsiniz.

Raspberry Pi İmager

Raspberry Pi İmager

centos-kurulum-01

centos-kurulum-02

centos-kurulum-04

centos-kurulum-03

centos-kurulum-05

centos-kurulum-07

centos-kurulum-10

centos-kurulum-06

centos-kurulum-08

centos-kurulum-09

centos-kurulum-11

centos-kurulum-12

centos-kurulum-13

centos-kurulum-14

centos-kurulum-15

centos-kurulum-16

centos-kurulum-17

Web Server Kurulumu

Sistemizi başarı ile kurduğumuza göre PuTTY programı üzerinde ip ayarlarında belirttiğimiz ip numarasına ssh üzerinden uzaktan bağlantı sağlayabiliriz veya kurulumu yaptığımız bilgisayar üzerinden bir terminal açıp kalan kurulumlara devam edebiliriz.

İlk önce sistemimizi bir güncelleyelim. Kurulum esnasında ağ ayarlarını yaptıysanız muhtemelen güncelleme yapmıştır, yinede atlamadan devam edelim.

sudo yum update -y

Şimdi bilgisayarımızın web server olarak hizmet vermesi için apache yüklüyoruz. Yüklemek istiyormusunuz gibi sorular soracak e veya y harfine basıp enter ile geçiyoruz.

sudo yum install httpd

Apache sunucu programını yükledik. Gerekli kontrollerimizi yapalım ve açılışta otomatik gelmesini sağlayalım.

sudo systemctl status httpd    
// Şu anki durumunu kontrol ediyoruz ve aktif olmadığını görüyoruz. Ctrl + C ile çıkıyoruz.
sudo systemctl enable httpd    
// Başlangıçta otomatik olarak çalışmasını sağlıyoruz.
sudo systemctl start httpd     
// Apache sunucu himetini başlatıyoruz.
sudo systemctl status httpd    
// Tekrar durumunu kontrol ediyoruz ve çalıştığını görüyoruz.
httpd -v                       
// Versiyonu kontrol ediyoruz ve Apache 2.4 versiyonu yüklediğimizi görüyoruz.

Biz sunucumuzu kurduk ancak bu şekilde yayın yaptığımızda muhtemelen sonuca ulaşamayacağız. Muhtemelen güvenlik duvarı bizi engelleyecektir. Bunun için güvenlik duvarında gerekli izinleri veriyoruz.

sudo firewall-cmd --permanent --add-service=http       
//http hizmetine izin verdik
sudo firewall-cmd --permanent --add-service=https     
// https hizmetine izin verdik
sudo firewall-cmd --reload      
// Güvenlik duvarı hizmetini yeniden başlattık. 

Php Kurulumu

Şimdi sıra geldi php uzantılı dosyalarımızı çalıştırmak için gerekli yazılımları yüklemeye. Biz wordpress kuracağımız için bizim php yüklememiz gerekiyor. Burada öncelikle php sürümünü kontrol edelim ve istediğimiz bir sürümü yükleyelim. Ben php 7.4 ün stabil olduğunu düşünüyorum ve onu yükleyeceğim. Drekt olarak yükleme komutu verirsem eğer muhtemelen 7.2 yi yükleyecektir. Sonra update yapmak istemiyorum ve bu yüzden kontrollü bir şekilde yükeme yapacağım.

sudo yum module list php          
// php yükleme modullerini kontrol ediyorum. Karşıma 7.2 nin devrede olduğu geldi
// ben bunu istemiyorum 7.4 istiyorum.
sudo yum module reset php         
// Kurulum için etkin devrede olanı sıfırlıyorum.
sudo yum module enable php:7.4    
// Bizim istediğimiz 7.4 versiyonunu aktif ettik, çıkan sorulara e + enter
sudo yum module list php          
// php 7.4 ün etkin olduğunu gördük ve artık kurulum yapabiliriz.
sudo yum install php php-json php-mysqli php-xml php-gd php-mbstring 
//ihtiyacımız olan modulleri kuruyoruz.
sudo systemctl status php-fpm     
// php nin şu anki durumunu kontrol ediyoruz ve aktif olmadığını görüyoruz. ctrl + c ile çıkıyoruz.
sudo systemctl enable php-fpm     
// Başlangıçta otomatik aktif olmasını istiyoruz.
sudo systemctl start php-fpm      
// Php hizmetini başlatıyoruz.
sudo systemctl status php-fpm     
// Php hizmetini tekrar kontrol ediyoruz ve çalıştığını görüyoruz.
php -v                            
// Versiyonunu kontrol ediyoruz ve 7.4 olduğunu görüyoruz.

Sql – Mariadb Kurulumu

Şimdi sıra geldi sql veritabanımızı kurmaya. Biz burada mariadb yi kuracağız ve arkasından gerekli güvenlik ayarlarını yapacağız.

sudo yum module list mariadb            
// 10.3 ve 10.5 versiyonu olduğunu görüyorum ancak ben 10.5 kurmak istiyorum.
sudo yum module reset mariadb           
// Varsayılan etkin yüklemeyi resetliyoruz. 
sudo yum module enable mariadb:10.5     
// Mariadb 10.5 etkin yükleme haline getirdik.
sudo yum module list mariadb            
// Mariadb etkin versiyonu kontrol ettik ve 10.5 olduğunu gördük. 
sudo yum install mariadb mariadb-server 
// Maridb yüklemesini gerçekleştiriyoruz.
sudo systemctl status mariadb           
// Mariadb hizmet durumunu kontrol ediyoruz ve pasif olduğunu görüyoruz.
sudo systemctl enable mariadb           
// Mariadb nin açılışta aktif olarak gelmesini sağlıyoruz.
sudo systemctl start mariadb            
// Mariadb hizmetini başlatıyoruz.
sudo systemctl status mariadb           
// Mariadb hizmetini tekrar kontrol ediyoruz ve aktif çalıştığını görüyoruz.
sudo reboot                             
// Bütün sistemi yeniden başlatıyoruz.

Sql – Mariadb Ayarları

Evet arkadaşalar buraya kadar inşallah herşey güzel gidiyordur. Centos işletim sistemimizi kurduk, php kurduk. Sql veritabanımızı kurduk. Şimdi sıra geldi Sql ile ilgili güvenlik ayarlarımızı yapmaya. mysql_secure_installation komutunu kullanarak gerekli ayarlara girelim. Bize ilk başta root şifresini soracak ancak biz henüz mysql için root şifresi ayarlamadık. Bu yüzden buraya birşey yazmadan enter ile geçeceğiz ve bizden root şifresi ayarlamak isteyip istemediğimizi soracak, evet dedikten sonra daha sonra kullanacağımız root şifresini iki kere arka arkaya gireceğiz.

mysql_secure_installation      
// İlk çıkan root şifresi olmadığı için enter ile geçiyoruz ve bizden oluşturacağımız                              
// bir root şifresi isteyecek ve iki kere gireceğiz. daha sonra çıkan herşeye y enter diyoruz.

mysql_secure_installation komutunu yazdıktan sonra bize ” Enter current password for root (enter for none): ” diyecek. Burada bizim root için şifremizi girmemizi istiyor ancak biz henüz oluşturmadık ve bu yüzden burayı enter ile geçiyoruz. Daha sonra Switch to unix_socket authentication [Y/n] diye soruyor, buraya y enter ile geçiyoruz. Yine sonrasında Change the root password? diye sorduğunda y yazarak enter ile geçiyoruz. Bize New Password: diyor. Şifremizi giriyoruz tekrar sorduğunda yine aynı şifreyi giriyoruz. Artık veritabanımız için root şifremiz oluştu ve daha sonra giriş yaparken varsayılan kullanıcı adımı root ve şifremiz belirlediğimiz şifre olacak. Geri kalan sorularada yine aynı şekilde y + enter yaparak onaylayarak geçebiliriz.

sudo systemctl restart mariadb     
//SQL Server  hizmetini yeniden başlatıyoruz. 

phpMyAdmin Kurulumu

Evet arkadaşlar şimdi veritabanımızı da kurduğumuza göre artık ona bağlanıp yeni veritabanı oluşturma silme güncelleme işlemleri yapabiliyor olmamız gerekiyor ancak biz bunları sürekli komutlar ile yaparsak işimiz çok zor olur ve bu yüzden phpmyadmin i kurarak işimizi kolaylaştıralım. Bunun için phpmyadmin sitesine gidip oradaki indirme linkini kopyalacağız. Ben bu yazının yazıldığı an itibari ile son sürümü sağ tuş bağlantı adresini kopyala dedim. Bu arada şu an için geçerli olan download linkini yazıyorum https://www.phpmyadmin.net/downloads/ . Sizde girdiğiniz tarihteki son sürümü veya burada kuracağımız sürüm olan phpMyAdmin-5.1.1-all-languages.zip sürümünü yükleyebilirsiniz. Yüklemeyi web sitemizin yayınlanacağı html dizinine yapıyoruz.

 
cd /var/www/html      
//Yükleme yapacağımız dizin içerisine giriyoruz. 

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip  
//Dizinimize indiriyoruz.

unzip phpMyAdmin-5.1.1-all-languages.zip  
// zip dosyasından çıkarıyoruz

ls    
//dizinimizde hangi dosyalar var listeleyelim görelim.

mv phpMyAdmin-5.1.1-all-languages phpmyadmin    
//ismini phpmyadmin diye değiştirdim

Phpmyadmin kurulumumuz nispeten bitti sayılır, şimdi bir test edelim. İnternet tarayıcımızın adres çubuğuna sunucumuza verdiğimiz ip ile test ediyoruz. Ben 192.168.0.60 vermiştim ve bu yüzden http://192.168.0.60/phpmyadmin yazarak giriş ekranının gelip gelmediğini kontrol ediyorum.

Giriş yaptıktan sonra bize bize aşağıda iki uyarı vermiş, onları da düzeltelim.

phpMyAdmin Verdiği Hatalar :

Bu hatalarda şu an için aşağıda yazılandan daha fazla çıkmaktadır. Daha fazla sorun yaşıyorsanız ilgili yazımız için tıklayın.

 Yapılandırma dosyası için gizli bir parola ifadesi gerekiyor (blowfish_secret).

 
cd /var/www/domains/yazilimdili.net/phpmyadmin  
// ilgili dizinimize gidiyoruz

cp config.sample.inc.php config.inc.php   
//ilgili dosyamızı farklı isimle çoğaltıyoruz

nano config.inc.php   
// ilgili dosyamızı açıp blowfish_secret yazan alanın tırnakları içerisine unutmayacağımız bir cümle yazıyoruz.
// Örneğin ben bugün okula gittim gibi ctrl + x yapıyoruz ve e harfine veya y harfine basıp enter ile kaydediyoruz, çıkıyoruz.

 

Şimdi oluşturduğumuz phpmyadmin klasörüne girelim ve içerisine tmp adında bir klasör oluşturalım.

 
cd /var/www/domains/yazilimdili.net/phpmyadmin  
// ilgili dizinimize gidiyoruz.

mkdir tmp                    
// tmp adında bir dizin oluşturuyoruz.

nano config.inc.php          
// ilgili ayar dosyamızı açıyoruz ve en alt satırına $cfg['TempDir']='/tmp';  ekliyoruz.
// CTRL + X yaptıktan sonra e veya y yazıp enter ile kaydederek çıkıyoruz. 

 

Şimdi son bir ayar kaldı. Şu an için phpmyadmin e giriş yaptığımızda en altta bize : ” phpMyAdmin yapılandırma depolaması tamamiyle yapılandırılmadı, bazı genişletilmiş özellikler devre dışı bırakıldı. Nedenini bulun.” diyor. Nedenini bulun dediğinizde zaten otomatik olarak phpmyadmin adında bir veri tabanı oluşturuyor yada biz yeni diyerek bu isimde bir veritabanı oluşturabiliriz. Evveettt arkadaşlar sonunda phpmyadmin kurulumumuz bitti. Artık buradan wordpress için gerekli veri tabanlarını oluşturup silebilir gerekli düzeltmeleri yapabiliriz.

WordPress Kurulumu

phpmyadmin-veritabani-olustur

WordPress kurulumundan önce yerleşik olarak gelen selinux güvenlik politikaları içerisinde var olan iki güvenlik ayarını kapatalım. Daha sonra sorunsuz bir şekilde wordpress yüklememizi gerçekleştireceğiz.

sudo setsebool -P httpd_can_network_connect on    
//bu ayarı yapmadığımız taktirde wordpress kullanırken birçok hataya sebep oluyor.
 
sudo setsebool httpd_unified on                   
// bu ayarı yapmadığımız taktirde .htaccess dosyasına yazmayı engelliyor.

cd /var/www/html                                  
// dosyalarımızı yükleyeceğmiz dizinin içerisine gidiyoruz.

sudo wget https://www.wordpress.org/latest.tar.gz 
// wordpress dosyamızı indiriyoruz.

sudo tar xzf latest.tar.gz                        
// indirdiğimiz sıkıştırılmış wordpress dosyasını çıkarıyoruz. 

mv wordpress/* .                                  
// açtığımız sıkıştırılmış dosyanın içindekileri html dizini içerisine taşıdık. 

sudo rm -rf latest.tar.gz phpMyAdmin-5.1.1-all-languages.zip wordpress  
// gereksiz dosyaları silelim

sudo chown -R apache:apache /var/www/html                        
//Tüm dosyalara apache grubu ve ismi veriyoruz
                    

WordPress ile ilgili gerekli indirme ve ayar işlemleri bitti. Şimdi internet tarayıcımıza http://sunucu_ip yazıp enter yaparak kurulum yapıyoruz. Dil seçeneği geldiyse herşey sorunsuz halledilmiş demektir. Eğer bu alanda dil seçeneği gelmiyor ve drekt olarak ingilizce kuruluma geçiyorsa yetkiler ile ilgili sorun olmuş demektir. Yetkileri doğru bir şekilde tekrar verin.

wordpress-kurulum-01

Centos WordPress Kurulumu

Evet arkadaşlar bir web sayfasını yayınlamak için gerekli kurulumlarımız bitti ancak eğer bizim birden fazla sitemiz varsa ve onları yayınlamak istiyorsak Apache serverimizi ona göre yapılandırmamız gerekiyor.

Apache Virtual Host Kurulumu

sudo mkdir -p /var/www/orneksite1.com/html    
// İlk sitemizi oluşturalım

sudo mkdir -p /var/www/orneksite1.com/log     
// log kayıtlarımızı atacağımız dizini oluşturduk

sudo chown -R apache:apache /var/www/orneksite1.com/html  
// apache grubunu atadık. 

sudo mkdir /etc/httpd/sites-enabled           
// aktif siteler için dizin oluşturduk

sudo mkdir /etc/httpd/sites-available         
// yayınlanacak siteler için dizin oluşturduk

Şimdi bu ayarları apache sunucumuzun ayarlarında da bildirmemiz gerekiyor. sudo nano /etc/httpd/conf.d dosyasını nano editörü ile açıp en alt dizinine IncludeOptional sites-enabled/*.conf yazarak ekliyoruz ve ctrl + x ardından y tuşuna basıp, enter ile kaydederek çıkıyoruz.

sudo nano /etc/httpd/conf/httpd.conf  
//nano editörü ile düzenlenecek sayfayı açıyoruz.

IncludeOptional sites-enabled/*.conf  
// editör ile açtığımız conf.d dosyasının en alt satırına ekliyoruz.
// ctrl + x ardından y ardından enter ile çık

sudo nano /etc/httpd/sites-available/orneksite1.com.conf   
//sitemiz ile ilgili configirasyon dosyası oluşturuyoruz.
//içerisine aşağıdaki kodları ekleyin. Kendi sitenize göre ayarlayın.

//aşağıdaki kodlar açtığınız konfigirasyon dosyasının içine eklenecek. 

<VirtualHost *:80>

        ServerName www.orneksite1.com
        ServerAlias orneksite1.com
        DocumentRoot /var/www/orneksite1.com/html
        ErrorLog /var/www/orneksite1.com/log/error.log
        CustomLog /var/www/orneksite1.com/log/request.log combined

</VirtualHost>

sudo ln -s /etc/httpd/sites-available/orneksite1.com.conf /etc/httpd/sites-enabled/orneksite1.com.conf
sudo setsebool -P httpd_unified 1 
sudo systemctl restart httpd  
//hata vermemesi gerekiyor

Evet arkadaşlar bir siteyi ekledik. Eğer birden fazla site ekleyecekseniz bu işlemleri tekrar yapmanız gerekiyor. Eğer bir yerde aksi bir durum ile karşılaşıyorsanız muhtemelen yazdığınız kodlarda yanlışlık olmuştur. Kodları yazarken bir yandan da test ettim ve bir harf hatası bile olmaması için kopyala yapıştır ile buraya aktardım. Buna rağmen takıldığınız bir yer olursa yardımcı olmaya çalışırım.

Şimdi sitelerimizin kurulumunu gerçekleştirdik peki ama bunları nasıl internete açacağız ? Öncelikle hattınıza sabit ip hizmeti alın. Daha sonra modeminize girerek gerekli yönlendirmeleri yapmanız gerekiyor. Birçok farklı modem var hepsinde farklı şekillerde olabiliyor. En kolayı modemlerde bulunan DMZ Host bölümünü kullanarak tüm bağlantıları yönlendirmek. Aşağıda örnek bir resim attım.

DMZ Host Yönlendirme

Cloudflare Ücretsiz Name Server Hizmeti

Arkadaşlar biz dışarıdan ip adresimizi yazdığımızda sunucumuza kendi web sitemize erişebiliriz ama tabi bu şekilde bir sistem kullanılmıyor. Örneğin yazilimdili.net diye site ismim var. İp numaram olsaydı sadece kimsenin aklında kalmazdı. Bu yüzden cloudflare den ücretsiz bu hizmeti kullanıcaz. Öncelikle domaininizin name serverlarını cloudflare yönlendirmelisiniz. Bu değişiklik 24 saati bulabiliyor. Aşağıda sırası ile atılan resimlerde gösterilmiştir. bu sayede ücretsiz SSL hizmetinden de yararlanmış olacaksınız.

https://cloudflare.com a girikten sonra üyelik başlatın ve aşağıdaki işlemleri yapın. Menüleri arada bir değişiyor. Yerleri farklı olabilir ancak isimler aynı.

Evet arkadaşlar kurulumlarımız bitti. WordPress yönetim paneline girdikten sonra SSL aktif olması için flexible Cloudflare diye bir eklenti var. Onu yüklemeniz yeterli herhangi bir ayar yapmıyorsunuz. Başka bir yazıda görüşmek üzere…

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir