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 |
Ş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ı
- Yayın zip'ini sunucuya yükleyin ve açın. Paket
cp-includes/vendorklasörünü içerir; Composer çalıştırmanız gerekmez. - 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. - Siteyi tarayıcıda açın. Kurulum yoksa sihirbaz görünür.
Sihirbazın adımları:
- Gereksinimler: PHP sürümü, eklentiler, bellek, yazılabilir klasörler.
- Veritabanı: sunucu, port, veritabanı adı, kullanıcı, parola. Bağlantı denenir.
- Site: site adı, adres, varsayılan dil (
trya daen), saat dilimi ve ilk yönetici (e-posta, kullanıcı adı, görünen ad, parola). Parola politikasına uymayan parola reddedilir. - Bitti:
.envyazı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
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 |
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
-
/aacpadresinden yönetici ile girin. -
AACP → Sistem → Güncellemeler bölümünde sürümü ve bekleyen güncellemeyi görün.
-
Zamanlanmış görevler için sunucuda cron kurun:
* * * * * php /yol/cp-core/bin/console cp:cron:runSunucuda cron yoksa token'lı HTTP cron ucunu bir dış zamanlayıcıyla çağırabilirsiniz.
-
cp:doctorile 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/.htaccesshazırdır;mod_rewriteaçık olmalıdır. - Nginx: tüm istekleri
public/index.php'ye yönlendirin;public/uploadsiç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.