Loading...
PHP 8 çalışma zamanı

PHP Platformu

Laravel, Symfony ya da elle yazılmış legacy kod olsun, PHP 8 uygulamaları için yönetilen bir çalışma zamanı — yönetilen MySQL veritabanı, Redis, dosya yöneticisi ve dahili Git/GitHub deploy ile birlikte. Domain, Auto SSL, edge cache ve WAF aynı hesap üzerinden yönetildiği için siz sunucu bakımıyla değil, uygulama koduyla uğraşırsınız.

PHP Platformu

Yönetilen bir PHP çalışma zamanı çıplak bir VPS'e neden üstündür

Çıplak bir VPS'te tüm stack size aittir: OS güncellemeleri, PHP-FPM havuzu, web sunucu yapılandırması, TLS yenileme, firewall kuralları ve veritabanı daemon'u. Bunlardan biri bile kaysa site bozulur, ve bu işin çoğunun uygulamanızla hiçbir ilgisi yoktur. Yönetilen PHP platformu, yaygın uzantıları zaten hazır bulunan desteklenen bir PHP 8 çalışma zamanı sunar; böylece sorumluluğunuz kodunuza, bağımlılıklarına ve yapılandırmasına — yani gerçekten size ait olan kısımlara — daralır.

Laravel ve Symfony için framework dostu

Modern framework'ler belirli bir yapı bekler: public/ document root'u, yazılabilir bir storage ya da var dizini, Composer ile yönetilen bağımlılıklar ve deploy sırasında veritabanı migration'larının çalıştırılacağı bir yer. Platform bunu doğrudan karşılar — document root'u public/ olarak ayarlar, kalan ağacı özel tutar, composer install ile artisan/console migration komutlarını deploy adımlarına bağlarsınız. Redis; cache, kuyruk ve oturumlar için kullanılabilir, ki bu tam olarak bir Laravel queue worker'ının veya bir Symfony cache pool'unun istediği şeydir.

DBA olmadan yönetilen MySQL ve Redis

MySQL ve Redis'i kendiniz kurmak; ayarlama, yedekleme, kullanıcı yönetimi ve güncel tutma anlamına gelir. Burada ikisi de yönetilen ek hizmet olarak sunulur: siz sağlarsınız, host, port, kullanıcı ve şifre bir yapılandırma dosyasına yapıştırılmak yerine uygulamanın ortamına enjekte edilir. Bu, sırların Git geçmişinizin dışında kalmasını sağlar, kodu yeniden deploy etmeden bir veritabanı şifresini döndürmenize olanak tanır ve veri deposunun uygulama çalışma zamanınızdan ayrı olarak yönetilmesi anlamına gelir.

Ekibinizin zaten çalıştığı şekilde deploy edin

Her PHP projesi henüz Git'te değildir, sorun değil. Küçük bir site ya da legacy bir uygulama, dosya yöneticisi üzerinden yüklenip dakikalar içinde canlıya alınabilir. Bir deposu olan ekip Git veya GitHub'ı bağlar ve tanımlı build adımlarıyla push-to-deploy elde eder — composer install, bir ön yüz build'i, migration'lar — böylece release'ler, birinin bir dosyayı unuttuğu bir SFTP sürükle-bırak yerine tekrarlanabilir hale gelir. Deploy durumu ve son deploy zamanı panelde görünür.

Dinamik PHP'nin önünde edge cache ve WAF

PHP uygulamaları sayfaları render ederken gerçek CPU harcar, bu yüzden cache'lenebilir yanıtları doğrudan edge'den sunmak çalışma zamanınızı yükten korur. Hangi route'ların cache'lenmesinin güvenli olduğuna — genel bir katalog veya makale — ve hangilerinin her zaman çalışması gerektiğine — giriş yapılmış bir dashboard veya bir POST endpoint'i gibi — siz karar verirsiniz. WAF, uygulamanın önünde edge'de yer alır, injection ve scanner trafiğini PHP'ye ulaşmadan önce filtreler, Auto SSL ise bir yenileme cron'u olmadan HTTPS'in geçerli kalmasını sağlar.

Legacy PHP'yi modernize etmek için kontrollü bir yol

PHP 5 için yazılmış ya da bakımsız bir CMS üzerindeki eski uygulamalara dokunmak risklidir, ama sonsuza kadar ömrünü tamamlamış bir çalışma zamanında da kalamazlar. Platform, kodu getirebileceğiniz, veritabanını doğru karakter setiyle yönetilen MySQL'e taşıyabileceğiniz ve deprecation'ları bulup düzeltebileceğiniz PHP 8 üzerinde çalıştırabileceğiniz bir yer sunar. Geçici bir URL üzerinde doğrulama yapar ve artık güvenlik yaması almayan bir kod tabanının önüne WAF koyarsınız; böylece kod tam olarak temizlenmeden önce bile genel saldırı yüzeyi azalır.

Adım adım nasıl deploy edilir

1

PHP uygulamasını oluşturun ve çalışma zamanını seçin

Panelde Platform'u açın, PHP'yi seçin, PHP 8 sürümünü ve planı belirleyin. Çalışma zamanı, PHP uygulamalarının beklediği yaygın uzantılarla birlikte gelir — PDO, mbstring, GD, OpenSSL ve Redis uzantısı — yani bir uzantının etkinleştirilmesi için destek talebi açmanız gerekmez.

2

Kodunuzu platforma taşıyın

Hızlı bir yükleme için dahili dosya yöneticisini kullanın, ya da bir push'un uygulamayı deploy etmesi için bir Git/GitHub deposu bağlayın. Framework uygulamaları için document root'u public/ dizinine ayarlar, build ve migration adımlarını bir kez tanımlarsınız.

3

Yönetilen veritabanı ve Redis ekleyin

Yönetilen bir MySQL veritabanı, uygulama cache, kuyruk ya da oturum kullanıyorsa yönetilen bir Redis instance'ı sağlayın. Bağlantı değerleri çalışma zamanına ortam değişkeni olarak enjekte edilir; böylece kimlik bilgileri commit ettiğiniz .env dosyasının dışında kalır ve panelden döndürülebilir.

4

Domain'i yönlendirin ve Auto SSL'i etkinleştirin

Domain'inizi veya bir name.cdn.com.tr subdomain'ini bağlayın; Auto SSL apex ve www için sertifikayı otomatik olarak alır ve yeniler. Trafik önce cdn.com.tr edge'ine ulaşır; istekler PHP çalışma zamanınıza proxy'lenmeden önce SSL sonlandırması burada gerçekleşir.

5

Cache, WAF ve deploy adımlarını ayarlayın

Hangi route'ların edge'de cache'lenebileceğini ve hangilerinin her zaman PHP'ye ulaşacağını tanımlayın, bir WAF profili uygulayın ve deploy pipeline'ını sabitleyin — örneğin composer install, bir asset build ve veritabanı migration'ları — böylece her release aynı adımlardan geçer ve otomatik bir purge ile tamamlanır.

Örnek senaryolar

Laravel uygulaması

Bir Laravel uygulaması GitHub'dan composer install ve migration'larla deploy edilir, yönetilen MySQL ve bir Redis kuyruğu kullanır, Auto SSL ve WAF arkasında sunulur.

Legacy PHP portalı

Eski, özel CMS tabanlı bir portal yönetilen bir veritabanıyla PHP 8'e taşınır, WAF'ın arkasına alınır ve kesinti yaşanmadan route route modernize edilir.

Özel API backend'i

Elle yazılmış bir PHP API'si, rate-limit ve oturum durumu için Redis kullanarak yönetilen çalışma zamanında çalışır, edge SSL sonlandırmalı bir domain üzerinden yayınlanır.

Sıkça sorulan sorular

Çalışma zamanında hangi PHP uzantıları mevcut?

PHP 8 çalışma zamanı, tipik uygulamaların bağımlı olduğu uzantılarla birlikte gelir — PDO ve MySQL driver'ları, mbstring, görüntü işleme için GD, OpenSSL, cURL ve cache, oturum ve kuyruklar için kullanılan Redis uzantısı. Uzantı seti standart olduğundan, Laravel, Symfony ve çoğu Composer paketi özel bir build gerektirmeden kurulur.

Bir Laravel queue worker'ı ya da zamanlanmış görevler çalıştırabilir miyim?

Evet. Redis bir kuyruk backend'i olarak kullanılabilir, ve platform uygulamanızı istek başına bir sandbox yerine kalıcı bir çalışma zamanında çalıştırır, bu yüzden arka plan işleme ve zamanlanmış görevler bu modele uyar. Komutları, aksi halde yönetmek zorunda kalacağınız bir sunucudaki sistem crontab'ını düzenlemek yerine uygulama yapılandırmasının bir parçası olarak tanımlarsınız.

Veritabanı kimlik bilgileri sırları commit etmeden .env'ime nasıl ulaşır?

Yönetilen veritabanı ve Redis bağlantı detayları çalışma zamanı ortamına enjekte edilir. Framework'ünüz bunları, .env değerlerini zaten okuduğu şekilde ortamdan okur; böylece host, kullanıcı ya da şifreyi asla Git'e commit etmezsiniz ve panelde bir şifreyi döndürmek kod değişikliği gerektirmez.

Uygulamam PHP 7 hedefliyor — PHP 8'de çalışır mı?

Bakımı yapılan çoğu kod, küçük düzenlemelerle PHP 8'de çalışır, ama PHP 8 bazı deprecated davranışları kaldırdı. Doğru yaklaşım, kodu platforma getirmek, geçici bir URL'de çalıştırmak ve domain'i değiştirmeden önce bulduğunuz deprecation'ları düzeltmektir — yönetilen çalışma zamanı bunu yapmanız için güvenli bir yer sağlar.

Document root'u public/ olarak mı ayarlıyorum?

Evet. Laravel, Symfony ve benzeri framework'ler için web root'unu public/ dizinine yönlendirirsiniz; böylece .env, vendor ve storage dahil uygulamanın geri kalanı web'e sunulan yolun dışında kalır. Kendi üst dizininden sunum yapan legacy uygulamalar da desteklenir; root'u buna göre ayarlarsınız.

Bir yeniden deploy'da kaybolmaması gereken dosya yüklemelerini nasıl yönetirim?

Uygulamanın kullanıcı verisi için kalıcı bir volume'ü vardır ve medya ağırlıklı uygulamalar için yüklemeleri object storage'a taşıyıp çalışma zamanı yerine CDN üzerinden sunabilirsiniz. Bu, deploy'ları hızlı ve stateless tutar ve bir yeniden deploy ya da ölçeklenme olayının yüklenen dosyaları asla riske atmaması anlamına gelir.