İçeriğe geç

Kurulum

CPalius iki yoldan kurulur: yayın paketini yükleyip tarayıcı sihirbazını çalıştırmak (paylaşımlı barındırma dahil herkes için) ya da komut satırından kurmak (geliştirme ortamı için).

Gereksinimler

Gereksinim Ayrıntı
PHP 8.4 veya üzeri
PHP eklentileri ctype, iconv, fileinfo, pdo, pdo_mysql, mbstring, xml, dom, tokenizer, json, intl, openssl
Bellek memory_limit en az 128 MB (256 MB altında uyarı verilir)
Veritabanı MySQL 8+ veya MariaDB 10.6+ (boş bir veritabanı)
Web sunucusu Belge kökü public/ olan Apache ya da Nginx
Yazma izni Proje kökü (.env için), cp-core/var, public/uploads
Node.js Gerekmez
PostgreSQL ve SQLite

Şu an desteklenmiyor. Migration dosyaları MySQL'e özgü DDL üretiyor.

Sihirbaz bu gereksinimlerin hepsini ilk adımda denetler ve zorunlu bir madde geçmeden .env yazmaz. Sebep: eksik bir eklenti, yarım kurulmuş bir yapıda hata verir ve sunucuya SSH erişimi olmayan biri bunu onaramaz.

Yol 1: Tarayıcı sihirbazı

  1. Yayın zip'ini sunucuya yükleyin ve açın. Paket cp-includes/vendor klasörünü içerir; Composer çalıştırmanız gerekmez.
  2. Belge kökünü public/ yapın. Barındırma paneli buna izin vermiyorsa proje kökündeki .htaccess, public/ dizinini sunar ve ağacın kalanını kapatır.
  3. Siteyi tarayıcıda açın. Kurulum yoksa sihirbaz görünür.

Sihirbazın adımları:

  1. Gereksinimler: PHP sürümü, eklentiler, bellek, yazılabilir klasörler.
  2. Veritabanı: sunucu, port, veritabanı adı, kullanıcı, parola. Bağlantı denenir.
  3. Site: site adı, adres, varsayılan dil (tr ya da en), saat dilimi ve ilk yönetici (e-posta, kullanıcı adı, görünen ad, parola). Parola politikasına uymayan parola reddedilir.
  4. Bitti: .env yazılır, migration'lar çalışır, ilk yönetici oluşur, örnek içerik eklenir ve sihirbaz kendini siler.

Sihirbazın işi bittiğinde kurulum kilidi yazılır; sihirbaz dizini ancak kilit varsa silinir. Böylece temizlik bir yerde takılsa bile sitenin kurulu olduğu bilgisi kaybolmaz. Kurulum yarıda kesilirse installing.lock dosyası, yarım yazılmış .env'in "kurulu site" sayılmasını engeller ve sihirbaza geri dönebilirsiniz.

Yeni bir kurulum şu modüllerle başlar: Media, Menu, Pages, Blog, Forum, Seo. Diğer modüller (Portal, Belgeler, Widget, Showcase…) diskte durur ve yönetim panelinden ya da mağazadan açılır.

Örnek içerik olarak bir blog kategorisi ve yazısı, bir forum bölümü, bir pano ve bir ileti eklenir; hepsi silinebilir.

Yol 2: Komut satırı

composer install
cp .env.example .env     # DATABASE_URL, APP_SECRET ve token'ları ayarlayın
php cp-core/bin/console doctrine:migrations:migrate
php cp-core/bin/console cp:user:create-admin
İlk iş: commit koruması

Depoyu klonladıysanız hemen git config core.hooksPath .githooks çalıştırın. Bir kaynak dosyayı boşaltan, yüzde 80'den fazla küçülten ya da sır içeren commit'leri engeller.

.env değişkenleri

Değişken Anlamı
APP_ENV, APP_DEBUG Canlıda prod ve 0. Canlıda dev bırakmayın.
APP_SECRET En az 32 karakterli rastgele dize. Üretmek için: php -r "echo bin2hex(random_bytes(32));"
DATABASE_URL Bağlantı dizesi
CP_APP_DEBUG_LEVEL safe (hatalı modülü sessizce karantinaya al; canlı için) ya da verbose (hata ayrıntısını göster; yalnız geliştirme)
DEFAULT_URI Komut satırında URL üretimi için varsayılan adres
CPALIUS_LOCALES, CPALIUS_DEFAULT_LOCALE Yedek dil listesi. Normalde diller veritabanından okunur; bunlar yalnız veritabanına ulaşılamadığında ya da dil tablosu boşken devreye girer
Kurtarma token'ı Boşsa kurtarma konsolu kapalıdır
Cron token'ı Boşsa HTTP cron ucu kapalıdır
serverVersion

DATABASE_URL içindeki serverVersion sunucunun gerçek sürümünü söylemelidir. DBAL platformu yalnızca bu dizeye bakarak seçer. MariaDB'ye 8.0.32 yazarsanız MySQL platformu seçilir ve şema farkı hiç kapanmaz ("The metadata storage is not up to date" hatası her istekte çıkar). MySQL için serverVersion=8.0.32, MariaDB için serverVersion=mariadb-11.4.12 biçiminde, SELECT VERSION() çıktısına göre yazın.

Kurulumdan sonra

  1. /aacp adresinden yönetici ile girin.

  2. AACP → Sistem → Güncellemeler bölümünde sürümü ve bekleyen güncellemeyi görün.

  3. Zamanlanmış görevler için sunucuda cron kurun:

    * * * * * php /yol/cp-core/bin/console cp:cron:run
    

    Sunucuda cron yoksa token'lı HTTP cron ucunu bir dış zamanlayıcıyla çağırabilirsiniz.

  4. cp:doctor ile sağlık denetimi yapın (aşağıda).

Sağlık denetimi: cp:doctor

php cp-core/bin/console cp:doctor

Doctor şu denetimleri yapar:

  • Ortam: PHP sürümü ve eklentiler.
  • Bekleyen migration'lar ve bekleyen güncellemeler.
  • Karantinadaki modüller.
  • Modül SQL tutarlılığı: uygulanmış bir migration'ın oluşturduğunu iddia ettiği tablo ve sütunlar gerçekten var mı.
  • Varlık eşlemesi kapsamı.
  • Rollerdeki yetenek bütünlüğü: bir rol, tanımlı olmayan bir yetenek içeriyor mu.
  • Çeviri eşitliği: TR ve EN anahtarları aynı mı.
  • Güvenlik duruşu.

Çıktı, bulguları ciddiyetine göre listeler.

Sunucu notları

  • Apache: public/.htaccess hazırdır; mod_rewrite açık olmalıdır.
  • Nginx: tüm istekleri public/index.php'ye yönlendirin; public/uploads içinde PHP çalıştırmayı kapatın.
  • Üretimde önbellek: Symfony üretimde konteyneri kendiliğinden yeniden derlemez. Dosyaları elle güncellediyseniz cp-core/var/cache/prod/ içini boşaltın; entity ya da şema değişen sürümlerde Redis önbelleğini de temizleyin.
  • Oturum: Anonim ziyaretçiler için oturum başlatılmaz; bu, Nginx FastCGI cache ya da Varnish önbelleğinin verimli çalışmasının şartıdır.
Son güncelleme: 13.10.2026