Tek sunucuda birden fazla site barındırdığında kaçınılmaz bir sorun çıkar: eski bir müşteri sitesi PHP 7.4 ile çalışırken yeni projen PHP 8.3 ister. Sunucuya tek sürüm kurduysan birini feda etmen gerekir.
HestiaCP bunu çözer — birden fazla PHP sürümünü aynı anda kurabilir ve her domaine ayrı sürüm atayabilirsin. Bu rehberde çoklu PHP kurulumunu yapıp üç popüler yazılımı sıfırdan yayına alacağız.
Örneklerde kullanıcı adı
1. Ek PHP sürümü kurma
Kurulu sürümleri gör:
Yeni sürüm ekle:
Kurulum birkaç dakika sürer. Bittiğinde panelde domainin Edit sayfasındaki Backend template menüsünde yeni sürümler görünür.
Bir sürümü kaldırmak istersen, önce hiçbir domainin onu kullanmadığından emin ol:
2. Domaine PHP sürümü atama
Panelden: Web → domain → Edit → Backend Template → PHP-8_2
Komut satırından:
Doğrula:
Sitenin gerçekten hangi sürümü kullandığını görmek için geçici bir test dosyası oluştur:
Tarayıcıdan aç, sürümü gör, hemen sil:
3. PHP ayarlarını domaine özel değiştirme
Bazı yazılımlar büyük dosya yükleme ya da uzun çalışma süresi ister. Sunucu genelini değiştirmek yerine sadece o domaine özel ayar yapabilirsin.
Havuz bloğunun içine ekle:
4. WordPress kurulumu
4.1 Hazırlık
Veritabanı adının
4.2 Dosyaları indir
Tarayıcıdan
4.3 Kurulum sonrası güvenlik
Nginx tarafında hassas dosyaları koru:
5. XenForo kurulumu
5.1 Hazırlık
Gerekli PHP eklentilerini kur:
5.2 Dosyaları yükle
XenForo lisanslı bir yazılım, dosyaları müşteri alanından indirip FTP veya panel dosya yöneticisiyle yükleyeceksin. Zip'i sunucuya attıysan:
5.3 Yazma izinleri
XenForo iki klasöre yazabilmek zorundadır:
Kuruluma
5.4 Kurulum sonrası
Cron görevi ekle (panelde Cron sekmesinden):
6. Laravel kurulumu
Laravel'in farkı şudur: web kökü
6.1 Composer kur
6.2 Projeyi oluştur
6.3 Web kökünü yönlendir
En temiz yöntem sembolik bağ kullanmaktır:
6.4 İzinler ve ayarlar
Canlıda
Zamanlayıcı için cron:
7. Composer ve Node. Js
Modern projeler için Node. Js de gerekebilir:
Önemli: Composer ve npm komutlarını asla root olarak çalıştırma. Dosya sahipliği bozulur ve site erişilemez hâle gelir. Her zaman kullanıcı adına çalıştır:
Sık karşılaşılan hatalar
"PHP eklentisi eksik" uyarısı
Eklentiyi doğru sürüm için kurmalısın. Sitede 8.2 kullanıyorsan
Sürümü değiştirdim ama site hâlâ eskisini gösteriyor
Laravel'de "500 Internal Server Error"
Neredeyse her zaman
Composer "memory limit" hatası veriyor
Yükleme yaptığım dosyalar 413 hatası veriyor
Nginx sınırı. Domainin conf dosyasına ekle:
Site açılıyor ama yazılım "yazma izni yok" diyor
Dosya sahipliği root'ta kalmıştır. Kurulum sonrası her zaman:
Sıradaki konu: HestiaCP komut satırı rehberi — panelsiz yönetim ve otomasyon. Hangi yazılımın kurulumunu ayrıntılı görmek istediğinizi yazarsanız ona da ayrı bir konu açarım.
HestiaCP bunu çözer — birden fazla PHP sürümünü aynı anda kurabilir ve her domaine ayrı sürüm atayabilirsin. Bu rehberde çoklu PHP kurulumunu yapıp üç popüler yazılımı sıfırdan yayına alacağız.
Örneklerde kullanıcı adı
oblifex.1. Ek PHP sürümü kurma
Kurulu sürümleri gör:
Kod:
v-list-sys-php
Yeni sürüm ekle:
Kod:
v-add-web-php 8.2
v-add-web-php 7.4
Kurulum birkaç dakika sürer. Bittiğinde panelde domainin Edit sayfasındaki Backend template menüsünde yeni sürümler görünür.
Bir sürümü kaldırmak istersen, önce hiçbir domainin onu kullanmadığından emin ol:
Kod:
v-delete-web-php 7.4
2. Domaine PHP sürümü atama
Panelden: Web → domain → Edit → Backend Template → PHP-8_2
Komut satırından:
Kod:
v-change-web-domain-backend-tpl oblifex forum.oblifex.com PHP-8_2
Doğrula:
Kod:
v-list-web-domain oblifex forum.oblifex.com
Sitenin gerçekten hangi sürümü kullandığını görmek için geçici bir test dosyası oluştur:
Kod:
echo "<?php phpinfo();" > /home/oblifex/web/forum.oblifex.com/public_html/test.php
Tarayıcıdan aç, sürümü gör, hemen sil:
Kod:
rm /home/oblifex/web/forum.oblifex.com/public_html/test.php
phpinfo Sayfasını açık bırakmak sunucu hakkında bilgi sızdırır, saldırganların ilk aradığı şeylerdendir.3. PHP ayarlarını domaine özel değiştirme
Bazı yazılımlar büyük dosya yükleme ya da uzun çalışma süresi ister. Sunucu genelini değiştirmek yerine sadece o domaine özel ayar yapabilirsin.
Kod:
nano /home/oblifex/web/oblifex.com/php-fpm.conf
Havuz bloğunun içine ekle:
Kod:
php_admin_value[upload_max_filesize] = 128M
php_admin_value[post_max_size] = 128M
php_admin_value[memory_limit] = 512M
php_admin_value[max_execution_time] = 300
Kod:
systemctl restart php8.3-fpm
4. WordPress kurulumu
4.1 Hazırlık
Kod:
v-add-web-domain oblifex blog.oblifex.com
v-add-database oblifex wp wpuser GucluSifre123
v-add-letsencrypt-domain oblifex blog.oblifex.com
Veritabanı adının
oblifex_wp, kullanıcı adının oblifex_wpuser olduğunu unutma.4.2 Dosyaları indir
Kod:
cd /home/oblifex/web/blog.oblifex.com/public_html
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz --strip-components=1
rm latest.tar.gz
chown -R oblifex:oblifex .
Tarayıcıdan
https://blog.oblifex.com adresine git ve kurulum sihirbazını tamamla.4.3 Kurulum sonrası güvenlik
wp-config.php Dosyasına ekle:
Kod:
define('DISALLOW_FILE_EDIT', true);
define('WP_AUTO_UPDATE_CORE', 'minor');
Nginx tarafında hassas dosyaları koru:
Kod:
location ~* /(wp-config\.php|readme\.html|license\.txt) { deny all; }
location ~* /wp-content/uploads/.*\.php$ { deny all; }
5. XenForo kurulumu
5.1 Hazırlık
Kod:
v-add-web-domain oblifex forum.oblifex.com
v-add-database oblifex xf xfuser GucluSifre456
v-add-letsencrypt-domain oblifex forum.oblifex.com
Gerekli PHP eklentilerini kur:
Kod:
apt install -y php8.3-gd php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip php8.3-intl
systemctl restart php8.3-fpm
5.2 Dosyaları yükle
XenForo lisanslı bir yazılım, dosyaları müşteri alanından indirip FTP veya panel dosya yöneticisiyle yükleyeceksin. Zip'i sunucuya attıysan:
Kod:
cd /home/oblifex/web/forum.oblifex.com/public_html
unzip xenforo.zip
mv upload/* .
rm -rf upload xenforo.zip
chown -R oblifex:oblifex .
5.3 Yazma izinleri
XenForo iki klasöre yazabilmek zorundadır:
Kod:
chmod -R 755 data internal_data
chown -R oblifex:oblifex data internal_data
Kuruluma
https://forum.oblifex.com/install adresinden devam et.5.4 Kurulum sonrası
Cron görevi ekle (panelde Cron sekmesinden):
Kod:
*/5 * * * * /usr/bin/php8.3 /home/oblifex/web/forum.oblifex.com/public_html/cmd.php xf:run-jobs
internal_data Ve data klasörlerinde PHP çalıştırmayı engelle:
Kod:
location ~* /(internal_data|data)/.*\.php$ { deny all; }
6. Laravel kurulumu
Laravel'in farkı şudur: web kökü
public_html değil, projenin public klasörüdür.6.1 Composer kur
Kod:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
6.2 Projeyi oluştur
Kod:
v-add-web-domain oblifex app.oblifex.com
cd /home/oblifex/web/app.oblifex.com
sudo -u oblifex composer create-project laravel/laravel proje
6.3 Web kökünü yönlendir
En temiz yöntem sembolik bağ kullanmaktır:
Kod:
rm -rf /home/oblifex/web/app.oblifex.com/public_html
ln -s /home/oblifex/web/app.oblifex.com/proje/public \
/home/oblifex/web/app.oblifex.com/public_html
chown -h oblifex:oblifex /home/oblifex/web/app.oblifex.com/public_html
6.4 İzinler ve ayarlar
Kod:
cd /home/oblifex/web/app.oblifex.com/proje
chmod -R 775 storage bootstrap/cache
chown -R oblifex:oblifex .
sudo -u oblifex php artisan key:generate
.env Dosyasında veritabanı bilgilerini gir:
Kod:
DB_DATABASE=oblifex_app
DB_USERNAME=oblifex_appuser
DB_PASSWORD=sifre
APP_ENV=production
APP_DEBUG=false
Canlıda
APP_DEBUG=true bırakma — hata sayfaları veritabanı şifreni ekrana yazar.Zamanlayıcı için cron:
Kod:
* * * * * /usr/bin/php8.3 /home/oblifex/web/app.oblifex.com/proje/artisan schedule:run >> /dev/null 2>&1
7. Composer ve Node. Js
Modern projeler için Node. Js de gerekebilir:
Kod:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
node -v && npm -v
Önemli: Composer ve npm komutlarını asla root olarak çalıştırma. Dosya sahipliği bozulur ve site erişilemez hâle gelir. Her zaman kullanıcı adına çalıştır:
Kod:
sudo -u oblifex composer install
sudo -u oblifex npm run build
Sık karşılaşılan hatalar
"PHP eklentisi eksik" uyarısı
Eklentiyi doğru sürüm için kurmalısın. Sitede 8.2 kullanıyorsan
php8.2-gd kurulmalı, php8.3-gd işe yaramaz.Sürümü değiştirdim ama site hâlâ eskisini gösteriyor
Kod:
v-rebuild-web-domains oblifex
systemctl restart php8.3-fpm
Laravel'de "500 Internal Server Error"
Neredeyse her zaman
storage izinleridir. Gerçek hatayı görmek için:
Kod:
tail -50 /home/oblifex/web/app.oblifex.com/proje/storage/logs/laravel.log
Composer "memory limit" hatası veriyor
Kod:
sudo -u oblifex php -d memory_limit=-1 /usr/local/bin/composer install
Yükleme yaptığım dosyalar 413 hatası veriyor
Nginx sınırı. Domainin conf dosyasına ekle:
Kod:
client_max_body_size 128M;
Site açılıyor ama yazılım "yazma izni yok" diyor
Dosya sahipliği root'ta kalmıştır. Kurulum sonrası her zaman:
Kod:
chown -R oblifex:oblifex /home/oblifex/web/DOMAIN/public_html
Sıradaki konu: HestiaCP komut satırı rehberi — panelsiz yönetim ve otomasyon. Hangi yazılımın kurulumunu ayrıntılı görmek istediğinizi yazarsanız ona da ayrı bir konu açarım.