adsense

21 Aralık 2022 Çarşamba

Sunucuda birden fazla php versiyonu kullanmak

Bu içerik, önceki yazımızda bahsettiğimiz birden fazla domaini panel kullanmadan sunucuda barındırma konusuna devam niteliğindedir.

Birden fazla domaini ekledik peki birden fazla php versiyonu kullanabilir miyiz?

Yani ben ailehukuku.com.tr de php 5.6 yı kullanırken cezahukuku.com.tr 8.1 i kullanmak istersem nasıl bir yol izlemeliyim.

Haydi başlayalım.

Öncelikle php 5.6 versiyonunu artık linux serverların son sürümlerinin paket kaynaklarında bulamıyoruz. Bunun için sunucuya sury.org tarafından sağlanan paket kaynağını eklememiz gerekiyor.

Tabi sunucuyu yeni kurduysanız paket kaynağı eklerken gereken bazı uygulamalar elinizde mevcut olmayabilir. Öncelikle bunları denetlemeli ve eksik olanları kurmalısınız.

Şu komutu direk çalıştırın eksik olanları kuracaktır. Eğer zaten sunucunuzda mevcutsa kurulu olan uygulamalara dokunmayacaktır.

apt install curl wget gnupg2 software-properties-common ca-certificates lsb-release apt-transport-https

Şimdi sury paket kütüphanesini indirelim onaylayalım.

wget https://packages.sury.org/php/apt.gpg
apt-key add apt.gpg

Artık sunucuya kütüphaneyi ekleyebiliriz.

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list

Eklendi. Şimdi bir güncelleme yapıp kullanabileceğimiz paketlerin güncel listesine erişelim.

apt update

Artık örneğin install php5.6 komutuyla ilgili versiyonu yükleyebilirsiniz. Ama biz her domainde farklı versiyon kullanmayı planladığımız için php5.6-fpm paketini de alacağız. Almışken mysql ve curl da gelsin. Şu komutu verelim ve 5.6 yı lazım olacak alt kütüphaneleriyle kuralım.

apt install php5.6 php5.6-fpm php5.6-mysql php5.6-curl libapache2-mod-fcgid

Elimiz değmişken php8.1 için de benzerini yapalım.

apt install php8.1 php8.1-fpm php8.1-mysql libapache2-mod-php8.1

Şimdi her iki versiyonu da çalıştırıp durumlarını kontrol edelim.

systemctl start php5.6-fpm
systemctl start php8.1-fpm

systemctl status php5.6-fpm
systemctl status php8.1-fpm

 

Eğer yeşil yazıyla Active: active (running) ifadesini gördüyseniz problem yok demektir.

Şimdi sıra geldi hangi domainin hangi versiyonu kullanacağına;

Öncelikle Apache yi böyle bir şey yapacağımızdan haberdar etmek için ilgili modülü aktif duruma getiriyoruz ve servisi yeniden başlatıyoruz.

a2enmod actions fcgid alias proxy_fcgi
systemctl restart apache2 

Domainler için daha önce hazırladığımız apache conf dosyalarına erişeceğiz. Mesela ailehukuku.com.tr domainimiz için;

nano /etc/apache2/sites-available/ailehukuku.com.tr.conf

Burada VirtualHost kod bloğu içerisine şunu ekliyoruz;

<FilesMatch \.php$>

      SetHandler “proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"

</FilesMatch>

conf dosyasının son hali şöyle olmalı;

<VirtualHost *:80>
        ServerName ailehukuku.com.tr
        ServerAlias www.ailehukuku.com.tr
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/ailehukuku.com.tr/public_html

        <FilesMatch \.php$>
           SetHandler “proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
        </FilesMatch>

        ErrorLog ${APACHE_LOG_DIR}/ailehukuku.com.tr-error.log
        CustomLog ${APACHE_LOG_DIR}/ailehukuku.com.tr-access.log combined
</VirtualHost>

Yapılan işlemleri test edelim

apachectl configtest

Çıktı olarak Syntax OK ifadesini görüyorsunuz problem yok demektir. Servisi yeniden başlatalım.

systemctl restart apache2

ailehukuku.com.tr domaini için conf dosyasında yaptığımız işlemi cezahukuku.com.tr domaini için de yapmalısınız. Sadece SetHandler “proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost" kısmındaki 5.6 kısmını 8.1 şeklinde değiştirmeniz yeterli. Yani cezahukuku.com.tr domaini için conf şöyle olmalı;

<VirtualHost *:80>
        ServerName cezahukuku.com.tr
        ServerAlias www.cezahukuku.com.tr
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/cezahukuku.com.tr/public_html

        <FilesMatch \.php$>
           SetHandler “proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
        </FilesMatch>

        ErrorLog ${APACHE_LOG_DIR}/cezahukuku.com.tr-error.log
        CustomLog ${APACHE_LOG_DIR}/cezahukuku.com.tr-access.log combined
</VirtualHost>

Şimdi her iki web sitesine de bilgi.php adında, içinde php bilgilerinin listeleneceği birer dosya oluşturalım.

echo "<?php phpinfo(); ?>" > /var/www/ailehukuku.com.tr/public_html/bilgi.php
echo "<?php phpinfo(); ?>" > /var/www/cezahukuku.com.tr/public_html/bilgi.php

Yaptığımız işlemi kontrol ettiğimizde ailehukuku.com.tr/bilgi.php sayfasında php5.6, cezahukuku.com.tr/bilgi.php sayfasında da php8.1 kullanıldığını görebilirsiniz.

Kolay gelsin.









Hiç yorum yok: