Paylaşımlı Sunucu Kurulum Rehberi
Bu rehber, ProCost BOM uygulamasını paylaşımlı sunucularda (shared hosting) güvenli bir şekilde kurmanız için gereken klasör izinlerini ve yapılandırma adımlarını açıklar.
???? Klasör Yapısı ve İzinler
Paylaşımlı sunucularda güvenlik için aşağıdaki izin yapısını kullanın:
| Klasör/Dosya |
İzin (chmod) |
Açıklama |
/ (kök dizin) |
755 |
Ana dizin - okuma ve çalıştırma |
config/ |
750 |
Yapılandırma dosyaları - kısıtlı erişim |
database/ |
750 |
Veritabanı şema dosyaları - kısıtlı erişim |
includes/ |
750 |
PHP include dosyaları - kısıtlı erişim |
layouts/ |
755 |
Şablon dosyaları |
pages/ |
755 |
Sayfa dosyaları |
.env |
600 |
Ortam değişkenleri - sadece sahip okuyabilir |
.htaccess |
644 |
Apache yapılandırması |
*.php dosyaları |
644 |
PHP dosyaları |
FTP veya SSH üzerinden aşağıdaki komutları kullanarak izinleri ayarlayabilirsiniz:
# Klasör izinleri
chmod 755 /public_html
chmod 750 config
chmod 750 database
chmod 750 includes
chmod 755 layouts
chmod 755 pages
# Hassas dosya izinleri
chmod 600 .env
chmod 644 .htaccess
chmod 644 index.php
# Tüm PHP dosyaları için (isteğe bağlı)
find . -name "*.php" -type f -exec chmod 644 {} \;
# Tüm alt klasörler için
find . -type d -exec chmod 755 {} \;
???? Güvenlik Yapılandırması
Uygulama, aşağıdaki güvenlik önlemlerini .htaccess dosyasında zaten içerir:
- Hassas Dosya Koruması:
.env, .sql, .log vb. dosyalara doğrudan erişim engellenir
- Gizli Dosya Koruması:
. ile başlayan dosyalara erişim engellenir
- Klasör Koruması:
config/, includes/, database/ klasörlerine doğrudan erişim engellenir
-
PHP Dosyalarına Doğrudan Erişimi Engelleyin
config/ klasörüne bir .htaccess dosyası ekleyin:
# config/.htaccess
# Apache 2.4+
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Apache 2.2 fallback
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from all
</IfModule>
-
includes/ Klasörünü Koruyun
includes/ klasörüne bir .htaccess dosyası ekleyin:
# includes/.htaccess
# Apache 2.4+
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Apache 2.2 fallback
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from all
</IfModule>
-
database/ Klasörünü Koruyun
database/ klasörüne bir .htaccess dosyası ekleyin:
# database/.htaccess
# Apache 2.4+
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Apache 2.2 fallback
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from all
</IfModule>
Not: Bu .htaccess dosyaları hem Apache 2.4+ hem de eski 2.2 sürümlerinde çalışacak şekilde yapılandırılmıştır.
Tüm dosyaları FTP veya dosya yöneticisi ile sunucunuza yükleyin (genellikle public_html klasörü).
2. .env Dosyasını Oluşturun
.env dosyasını düzenleyerek veritabanı bilgilerinizi girin:
APP_NAME="ProCost BOM"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://sizinalanadınız.com
DB_HOST=localhost
DB_PORT=3306
DB_NAME=veritabani_adi
DB_USER=veritabani_kullanici
DB_PASS=guclu_sifre_123
3. Veritabanını Oluşturun
cPanel veya phpMyAdmin üzerinden:
- Yeni veritabanı oluşturun
- Veritabanı kullanıcısı oluşturun
- Kullanıcıya tam yetki verin
database/schema.sql dosyasını içe aktarın
cPanel Dosya Yöneticisi üzerinden veya FTP ile izinleri ayarlayın.
⚠️ Sık Karşılaşılan Sorunlar
"Permission Denied" Hatası
Çözüm: İlgili klasörün izinlerini kontrol edin:
Çözüm: .env dosyasının izinlerini kontrol edin:
Eğer 600 çalışmazsa, 644 deneyin (bazı paylaşımlı sunucularda gerekli olabilir).
"500 Internal Server Error"
Çözüm:
.htaccess dosyasındaki mod_rewrite'ın etkin olduğundan emin olun
- PHP sürümünün 7.4 veya üzeri olduğunu kontrol edin
- Hata günlüklerini kontrol edin
Config/Includes Klasörlerine Erişilemiyor
Bu normal bir davranıştır! Bu klasörlere tarayıcıdan doğrudan erişim güvenlik nedeniyle engellenmiştir.
???? Ek Güvenlik Önerileri
-
SSL/HTTPS Kullanın: Hosting panelinizden ücretsiz Let's Encrypt sertifikası alın
-
Düzenli Yedekleme: Veritabanı ve dosyalarınızı düzenli olarak yedekleyin
-
Şifreleri Güçlü Tutun: Veritabanı ve admin şifreleri en az 12 karakter olmalı
-
Debug Modunu Kapatın: Üretim ortamında APP_DEBUG=false kullanın
-
Dosya Sahipliği: Mümkünse dosya sahipliğini web sunucusu kullanıcısına ayarlayın:
chown -R www-data:www-data /path/to/procost