CodeIgniter, hafif yapısı ve yüksek performansıyla PHP geliştiricileri arasında popüler bir MVC framework’üdür. Geliştirdiğiniz projeyi tamamladıktan sonra, sıra onu internet üzerinde erişilebilir kılmaya, yani “canlıya almaya” geldiğinde, doğru hosting ayarlarını yapmak kritik bir adımdır. Bu süreç, uygulamanızın sadece çalışmasını değil, aynı zamanda stabil, hızlı ve güvenli olmasını da doğrudan etkiler. Bu blog yazısında, CodeIgniter projelerinizi sorunsuz bir şekilde barındırmak için bilmeniz gereken tüm detayları, sunucu seçiminden dosya yüklemeye, veritabanı yapılandırmasından sık karşılaşılan sorunların çözümüne kadar adım adım ele alacağız. Amacımız, CodeIgniter uygulamanızın internette sağlam bir temel üzerine oturmasını sağlamaktır.
CodeIgniter Hosting İçin Temel Gereksinimler
Her web uygulamasında olduğu gibi, CodeIgniter projeleri için de belirli sunucu gereksinimleri bulunur. Doğru bir başlangıç yapmak için bu gereksinimleri anlamak ve hosting sağlayıcınızın bu koşulları karşıladığından emin olmak önemlidir.
- PHP Sürümü: CodeIgniter’ın farklı sürümleri farklı PHP versiyonlarını destekler. Örneğin, CodeIgniter 3 genellikle PHP 5.6 ve üzeri ile uyumluyken, CodeIgniter 4 için PHP 7.3 veya üzeri gereklidir. Sunucunuzun, kullandığınız CodeIgniter sürümüyle uyumlu ve mümkünse en güncel stabil PHP versiyonunu çalıştırdığından emin olun. Çoğu hosting paneli (cPanel, Plesk vb.) üzerinden PHP sürümünü kolayca değiştirebilirsiniz.
- Veritabanı Desteği: CodeIgniter, MySQL (en çok tercih edilen), PostgreSQL, SQLite3 ve MS SQL Server gibi birçok farklı veritabanını destekler. Projenizin kullandığı veritabanı türüne uygun bir veritabanı sunucusunun hosting paketinizde mevcut olması gerekir. MySQL, web hosting paketlerinin neredeyse tamamında varsayılan olarak sunulur ve CodeIgniter ile sorunsuz çalışır.
- Web Sunucusu: Apache veya Nginx, CodeIgniter projeleri için en çok tercih edilen web sunucularıdır. Özellikle URL yönlendirmeleri ve temiz URL’ler için hayati öneme sahip olan
.htaccessdosyası aracılığıyla, Apache’ninmod_rewritemodülü sayesinde kolayca yönetilir. Nginx kullanıyorsanız, benzer kuralları Nginx yapılandırma dosyanızda tanımlamanız gerekecektir. - Disk Alanı ve Bant Genişliği: Projenizin büyüklüğüne, beklediğiniz ziyaretçi trafiğine ve depolamanız gereken verilere göre yeterli disk alanı ve aylık bant genişliği sunan bir hosting paketi seçmelisiniz. Küçük bir kişisel blog veya portföy sitesi için daha az kaynak yeterli olurken, büyüyen bir e-ticaret uygulaması veya yüksek trafikli bir web sitesi daha fazla kaynak gerektirecektir.
Doğru Hosting Sağlayıcısını ve Türünü Seçmek
CodeIgniter projeniz için doğru hosting sağlayıcısını ve hosting türünü seçmek, uygulamanızın performansı, stabilitesi ve gelecekteki ölçeklenebilirliği açısından hayati öneme sahiptir. Piyasada birçok farklı hosting türü bulunmaktadır ve her birinin kendine göre avantajları vardır.
- Paylaşımlı Hosting: Yeni başlayanlar, küçük ve orta ölçekli projeler için maliyet-etkin bir çözümdür. Sunucu kaynakları (CPU, RAM, disk alanı) birçok web sitesi arasında paylaşılır. Kolay kurulum ve yönetim sağlar.
- VPS (Sanal Özel Sunucu): Paylaşımlı hosting’e göre daha fazla kontrol, kaynak ve izolasyon isteyen projeler için idealdir. Fiziksel bir sunucunun sanal olarak ayrılmış bir bölümünü kullanırsınız, bu da daha iyi performans, güvenlik ve esneklik sunar. Kendi sunucu ayarlarınızı yapabilirsiniz.
- Dedicated Sunucu: Büyük ölçekli, yüksek trafikli uygulamalar ve kurumsal çözümler için tüm sunucuyu size özel kılar. Maksimum performans, güvenlik ve kontrol sağlar, ancak maliyeti en yüksektir ve sunucu yönetimi bilgisi gerektirir.
- Cloud Hosting: Esnek, ölçeklenebilir ve genellikle kullandığınız kadar ödeme yapmanıza olanak tanıyan bir seçenektir. Trafik dalgalanmalarına karşı dirençlidir ve yüksek erişilebilirlik sunar.
Seçim yaparken sadece fiyatı değil, aynı zamanda sunucunun fiziksel konumu (ziyaretçilerinize yakınlık), güvenlik önlemleri (güvenlik duvarı, DDoS koruması), düzenli yedekleme hizmetleri, teknik destek kalitesi ve hızı ile sunucunun performans özellikleri (SSD diskler, LiteSpeed web sunucusu, Redis/Memcached gibi önbellekleme çözümleri) gibi faktörleri de göz önünde bulundurmalısınız. İyi bir hosting sağlayıcısı, CodeIgniter projenizin sorunsuz çalışmasına büyük katkı sağlar.
CodeIgniter Projesini Sunucuya Yükleme Adımları
Projenizi geliştirmeyi tamamladınız ve artık canlıya alma zamanı. Bu aşamada, CodeIgniter dosyalarınızı sunucuya doğru bir şekilde aktarmanız ve bazı temel yapılandırmaları yapmanız gerekmektedir.
- FTP/SFTP Kullanımı: Dosyalarınızı sunucuya yüklemek için genellikle bir FTP (File Transfer Protocol) veya SFTP (Secure File Transfer Protocol) istemcisi kullanırsınız. FileZilla, Cyberduck veya WinSCP gibi popüler FTP yazılımları, yerel bilgisayarınızdaki CodeIgniter proje dosyalarını sunucunuzdaki belirlenen dizine kolayca aktarmanızı sağlar. SFTP, FTP’ye göre daha güvenli bir yöntemdir ve SSH üzerinden şifreli bağlantı kurar.
- Dosya Yapısının Korunması: CodeIgniter projenizi genellikle
public_html,wwwveyahtdocsgibi ana web dizinine yüklersiniz. Ancak, güvenlik nedeniyleapplication(CodeIgniter 3 için),systemvevendorklasörlerinin doğrudan web’den erişilebilir olmaması önerilir. CodeIgniter 4’te bu durum zaten varsayılan olarakpublicklasörü ile ele alınmıştır; yani tüm web erişimipublicklasörü üzerinden sağlanır ve diğer klasörler web kök dizininin bir seviye üzerinde yer alır. CodeIgniter 3 kullanıyorsanız,index.phpdosyasını ana dizine alıpapplicationvesystemklasörlerini web dizininin bir üstüne taşıyabilir veya.htaccesskuralları ile bu klasörlere doğrudan erişimi kısıtlayabilirsiniz. - Önemli Dosyaların Güncellenmesi: Yükledikten sonra
application/config/config.php(CI3 için) veyaapp/Config/App.php(CI4 için) ileapplication/config/database.php(CI3 için) veyaapp/Config/Database.php(CI4 için) dosyalarını canlı sunucu ortamına uygun şekilde güncellemeyi unutmayın. Özelliklebase_urlve veritabanı bağlantı ayarları doğru olmalıdır. Ayrıca, URL’lerdenindex.php‘yi kaldırmak için bir.htaccessdosyasına ihtiyacınız olacaktır.
Veritabanı Kurulumu ve Bağlantısı
Web uygulamanızın dinamik verilerini depolamak ve yönetmek için bir veritabanına ihtiyacı vardır. CodeIgniter projenizi yayına alırken veritabanı ayarlarını doğru yapmak kritik öneme sahiptir.
- Veritabanı Oluşturma: Hosting kontrol paneliniz (cPanel, Plesk vb.) üzerinden genellikle “MySQL Veritabanları”, “Veritabanları” veya benzeri bir bölümden yeni bir veritabanı oluşturun. Bu işlem sırasında bir veritabanı adı, kullanıcı adı ve güçlü bir şifre belirlemeniz gerekecektir. Not: Hosting sağlayıcıları genellikle veritabanı adlarına ve kullanıcı adlarına bir önek ekler (örneğin:
kullaniciadi_veritabani). - Kullanıcı Oluşturma ve Yetkilendirme: Veritabanınıza erişecek bir veritabanı kullanıcısı oluşturun ve bu kullanıcıya oluşturduğunuz veritabanı üzerinde gerekli tüm yetkileri (CREATE, ALTER, DELETE, INSERT, SELECT, UPDATE gibi, genellikle “Tüm Yetkileri Ver” seçeneği bulunur) verin. Bu adım, CodeIgniter’ın veritabanınızla etkileşim kurabilmesi için elzemdir.
- Veritabanı Yükleme (İçe Aktarma): Yerel geliştirme ortamınızdan (phpMyAdmin veya Workbench gibi araçlar aracılığıyla) veritabanınızın bir yedeğini (
.sqluzantılı bir dosya) alın. Daha sonra bu.sqldosyasını hosting panelinizdeki phpMyAdmin veya başka bir veritabanı yönetim aracı üzerinden yeni oluşturduğunuz boş veritabanına içe aktarın. - CodeIgniter Veritabanı Ayarları: Projenizin
application/config/database.php(CI3) veyaapp/Config/Database.php(CI4) dosyasını açarak veritabanı bağlantı bilgilerini canlı sunucuya uygun şekilde güncelleyin.hostname: Genelliklelocalhost‘tur, ancak bazı hosting sağlayıcıları farklı bir IP adresi veya sunucu adı kullanabilir. Hosting sağlayıcınıza danışın.username: Oluşturduğunuz veritabanı kullanıcı adı.password: Oluşturduğunuz veritabanı kullanıcı şifresi.database: Oluşturduğunuz veritabanı adı.dbdriver: Kullandığınız veritabanı sürücüsü (örneğinmysqliveyapdo).
CodeIgniter Ortam Ayarları ve URL Yapılandırması
CodeIgniter uygulamanızın canlı ortamda doğru çalışması ve arama motoru dostu (SEO dostu) URL’lere sahip olması için bazı önemli yapılandırma adımları gereklidir.
base_urlAyarı:application/config/config.php(CI3) veyaapp/Config/App.php(CI4) dosyasındaki$config['base_url'](CI3) veyapublic $baseURL(CI4) değerini uygulamanızın tam URL’siyle güncelleyin. Örneğin:http://www.siteadi.com/veya daha güvenli olanhttps://www.siteadi.com/. Bu ayar, uygulamanızın tüm dahili bağlantıları ve kaynak yollarını (CSS, JS, resimler) doğru bir şekilde oluşturmasını sağlar.- Ortam Ayarı (ENVIRONMENT): Geliştirme ve üretim ortamları arasında geçiş yapmak için CodeIgniter’ın ortam ayarlarını kullanmak önemlidir. Genellikle
index.phpdosyasında veya sunucu yapılandırmasında (Apache/Nginx) tanımlanır. Canlı ortamda hata raporlamayı kısıtlamak ve performansı artırmak içindefine('ENVIRONMENT', 'production');olarak ayarlayın. Bu, potansiyel güvenlik açıklarını gizler ve son kullanıcının hata mesajlarını görmesini engeller. index.phpDosyasını URL’den Kaldırma (.htaccess): CodeIgniter URL’leri varsayılan olarakhttp://www.siteadi.com/index.php/kontrolcu/metodşeklinde gelir. Daha temiz, kullanıcı dostu ve SEO dostu URL’ler (örneğin:http://www.siteadi.com/kontrolcu/metod) içinindex.phpdosyasını URL’den kaldırmak istersiniz. Bunu yapmak için ana dizininize (public_htmlveya CodeIgniter 4’tepublicklasörünün içine) aşağıdaki içeriğe sahip bir.htaccessdosyası eklemeniz gerekir (Apache web sunucusu için).
Örnek .htaccess içeriği (ana dizinde):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Bu kurallar, sunucuya gelen bir isteğin mevcut bir dosya veya dizin değilse, tüm istekleri index.php dosyasına yönlendirir. Nginx kullanıyorsanız, benzer URL yönlendirme kurallarını sunucu yapılandırma dosyanızda (nginx.conf veya siteye özel yapılandırma dosyasında) belirlemeniz gerekecektir.
Sık Karşılaşılan Sorunlar ve Çözümleri
CodeIgniter projenizi yayına alırken bazı sorunlarla karşılaşmanız oldukça olasıdır. İşte en yaygın olanları ve basit çözümleri:
- 500 Internal Server Error: Bu genellikle sunucu tarafındaki bir hata veya yanlış yapılandırmadan kaynaklanır ve çok genel bir hatadır.
- Olası Nedenler: Yanlış
.htaccesskuralları, hatalı dosya/klasör izinleri, PHP bellek limiti aşımı, eksik PHP modülleri. - Çözüm: İlk olarak
.htaccessdosyanızı dikkatlice kontrol edin. Dosya ve klasör izinlerini doğru ayarlayın (genellikle dosyalar için 644, klasörler için 755). Hosting panelinizdeki PHPerror_logdosyasını veya hata günlüklerini kontrol ederek daha spesifik bilgi edinin.
- Olası Nedenler: Yanlış
- Veritabanı Bağlantı Hataları: “Unable to connect to your database server”, “Access denied” veya “Unknown database” gibi hatalar.
- Olası Nedenler:
database.phpdosyasındaki yanlışhostname,username,passwordveyadatabaseadı. - Çözüm:
database.phpdosyasındaki bağlantı bilgilerini (host, kullanıcı adı, şifre, veritabanı adı) dikkatlice kontrol edin. Hosting sağlayıcınızın veritabanı host bilgisilocalhostyerine farklı bir şey olabilir. Kullanıcıya doğru yetkilerin verildiğinden emin olun.
- Olası Nedenler:
- Sayfa Bulunamadı (404 Error): Özellikle
index.php‘yi URL’den kaldırdıktan sonra ortaya çıkabilir.- Olası Nedenler: Hatalı
.htaccesskuralları, Apache’demod_rewritemodülünün etkin olmaması, CodeIgniter route ayarlarının yanlış olması. - Çözüm:
.htaccessdosyanızın yukarıda belirtilen şekilde doğru olduğundan ve sunucunuzda Apache’ninmod_rewritemodülünün etkin olduğundan emin olun. Geliştirme ortamında deneme yapmak için$config['enable_query_strings'] = FALSE;ve$config['uri_protocol'] = 'REQUEST_URI';(CI3) ayarlarını kontrol edin.
- Olası Nedenler: Hatalı
- PHP Bellek Limitleri: Büyük verileri işlerken, dosya yüklemelerinde veya karmaşık sorgularda “Allowed memory size of X bytes exhausted” hatası.
- Olası Nedenler: Varsayılan PHP
memory_limitayarı uygulamanız için yetersiz. - Çözüm: Hosting panelinizden veya
php.inidosyası aracılığıylamemory_limitdeğerini (örneğin 256M veya 512M’ye) artırın.
- Olası Nedenler: Varsayılan PHP
- Dosya ve Klasör İzinleri: Bazı klasörlere yazma izni verilmemesi (örneğin cache, log klasörleri) veya güvenlik sorunları.
- Olası Nedenler: Sunucudaki dosya ve klasör izinleri çok kısıtlayıcı veya yanlış ayarlanmış.
- Çözüm: Gerekli klasörlere (genellikle
writableklasörü CI4’te,application/cache,application/logsCI3’te) yazma izni (genellikle 755 veya bazı durumlarda 775) verin. Ancak 777 gibi çok geniş izinlerden kaçının.
Performans İpuçları ve Güvenlik Önlemleri
CodeIgniter uygulamanızın sadece çalışması değil, aynı zamanda hızlı ve güvenli olması da önemlidir. İşte uygulamanızın performansını artırmak ve güvenliğini sağlamak için bazı ipuçları:
- Önbellekleme (Caching): CodeIgniter’ın yerleşik önbellekleme özelliklerini veya üçüncü taraf kütüphaneleri (Redis, Memcached) kullanarak sık erişilen veritabanı sorgularını, sayfa parçalarını veya tüm sayfaları önbelleğe alın. Bu, sunucu yükünü azaltır, veritabanı sorgu sayısını düşürür ve yanıt sürelerini hızlandırır.
- Gzip Sıkıştırma: Web sunucunuzda (Apache veya Nginx) Gzip sıkıştırmayı etkinleştirerek HTML, CSS ve JavaScript dosyalarınızın boyutunu küçültün. Bu, tarayıcıya aktarılan veri miktarını azaltır ve sayfa yükleme sürelerini önemli ölçüde iyileştirir.
- HTTPS Kullanımı: Uygulamanızı SSL/TLS sertifikası ile HTTPS üzerinden yayınlayın. Bu, kullanıcılarınızın ve uygulamanızın güvenliğini artırır, verilerin şifrelenmesini sağlar ve aynı zamanda arama motorları için bir sıralama faktörüdür (SEO’yu olumlu etkiler).
- Güncel Sürüm Kullanımı: Hem CodeIgniter’ın hem de PHP’nin her zaman en güncel stabil sürümlerini kullanmaya özen gösterin. Güncel sürümler genellikle performans iyileştirmeleri, yeni özellikler ve kritik güvenlik yamaları içerir.
- Gereksiz Dosyaların Silinmesi/Kısıtlanması: Canlı sunucuda gereksiz geliştirme dosyalarını, test betiklerini, yedekleri veya versiyon kontrol (örn.
.git) klasörlerini bulundurmayın. Ayrıca,applicationvesystemklasörlerine doğrudan web erişimini.htaccesskurallarıyla veya sunucu yapılandırmasıyla engelleyin. - Giriş Doğrulaması ve CSRF Koruması: CodeIgniter’ın yerleşik form doğrulama kütüphanesini kullanarak tüm kullanıcı girdilerini sıkı bir şekilde doğrulayın. Ayrıca, tüm formlarınızda CSRF (Cross-Site Request Forgery) korumasını etkinleştirin. Bu, uygulamanızı yaygın web saldırılarına karşı korur.
CodeIgniter projelerinizi canlıya almak, doğru adımlar ve biraz dikkat gerektiren bir süreçtir. Bu rehberde ele aldığımız hosting gereksinimleri, dosya yükleme, veritabanı yapılandırması ve URL ayarları, uygulamanızın internette sağlam bir temel üzerine oturmasını sağlayacaktır. Karşılaşabileceğiniz olası sorunlara karşı hazırlıklı olmak ve performans ile güvenlik ipuçlarını uygulamak, kullanıcılarınıza daha iyi bir deneyim sunarken uygulamanızın ömrünü uzatacaktır. Unutmayın, her hosting ortamı ve sağlayıcısı biraz farklılık gösterebilir, bu yüzden hosting sağlayıcınızın belgelerine başvurmaktan veya teknik destek ekibiyle iletişime geçmekten çekinmeyin. Başarılı ve sorunsuz bir yayınlama dileğiyle!