İşte size Ubuntu sunucu üzerinde Laravel & Nginx yapılandırması hakkında, teknik ve detaylı bir dilde yazılmış, SEO uyumlu bir blog makalesi:
Ubuntu Sunucu ile Laravel & Nginx Yapılandırması
Laravel, modern web uygulamaları geliştirmek için popüler bir PHP framework'üdür. Nginx ise yüksek performanslı bir web sunucusudur. Bu makalede, Ubuntu sunucu üzerinde Laravel uygulamasını Nginx ile nasıl yapılandıracağınızı adım adım anlatacağım. Bu kurulum, hem geliştirme hem de üretim ortamları için uygundur.
Ön Gereksinimler
Bu kılavuza başlamadan önce aşağıdaki ön koşulların sağlandığından emin olun:
- Ubuntu Sunucu: Temiz bir Ubuntu sunucu kurulumuna ihtiyacınız var. (Örneğin, Ubuntu 20.04 veya 22.04)
- SSH Erişimi: Sunucuya SSH ile erişebilmeniz gerekiyor.
- Sudo Yetkileri: Yönetici (sudo) yetkilerine sahip bir kullanıcı.
Adım 1: Sunucuyu Güncelleme
İlk adım, sunucunuzdaki paket listesini güncellemek ve mevcut paketleri yükseltmektir. Bu, son güvenlik yamalarının ve güncellemelerin yüklü olduğundan emin olmanızı sağlar.
sudo apt update && sudo apt upgrade -y
Adım 2: Gerekli Paketleri Yükleme
Laravel ve Nginx'in çalışması için gerekli olan PHP, Composer, Nginx ve diğer bağımlılıkları yükleyelim.
PHP ve Gerekli Uzantıları Yükleme
Laravel, PHP ile çalışır ve belirli PHP uzantılarına ihtiyaç duyar. Aşağıdaki komut, PHP 8.1 ve gerekli uzantıları yükler (Laravel'in önerdiği versiyon). Farklı bir PHP versiyonu kullanmak istiyorsanız, sürüm numarasını buna göre değiştirin.
sudo apt install php8.1 php8.1-fpm php8.1-cli php8.1-mbstring php8.1-xml php8.1-mysql php8.1-gd php8.1-curl php8.1-zip
PHP Sürümünü Kontrol Etme
Yüklemenin başarılı olup olmadığını doğrulamak için PHP sürümünü kontrol edin:
php -v
Bu komut, yüklü olan PHP sürümünü görüntüler.
Composer Yükleme
Composer, PHP için bağımlılık yönetim aracıdır ve Laravel projelerinde paketleri yüklemek için gereklidir.
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer sudo chmod +x /usr/local/bin/composer
Composer Sürümünü Kontrol Etme
Composer'ın doğru şekilde kurulduğunu doğrulamak için sürümünü kontrol edin:
composer -v
Nginx Yükleme
Nginx, web sunucusu olarak Laravel uygulamasını sunmak için kullanılır.
sudo apt install nginx -y
Nginx Durumunu Kontrol Etme
Nginx'in çalışır durumda olduğundan emin olun:
sudo systemctl status nginx
Eğer Nginx çalışmıyorsa, aşağıdaki komutlarla başlatabilir ve otomatik olarak başlamasını sağlayabilirsiniz:
sudo systemctl start nginx sudo systemctl enable nginx
Adım 3: Laravel Projesi Oluşturma
Şimdi Laravel projesini oluşturacağız. Web sunucusunun erişebileceği bir dizinde (örneğin /var/www/) yeni bir Laravel projesi oluşturmak en iyi uygulamadır.
sudo mkdir -p /var/www/ sudo chown -R $USER:$USER /var/www/ cd /var/www/ composer create-project --prefer-dist laravel/laravel mylaravelapp
Burada mylaravelapp projenizin adıdır. İstediğiniz bir isimle değiştirebilirsiniz.
Adım 4: Nginx'i Laravel İçin Yapılandırma
Nginx'i Laravel projesi için yapılandırmak için, yeni bir sanal host (virtual host) dosyası oluşturmanız gerekir.
sudo nano /etc/nginx/sites-available/mylaravelapp
Aşağıdaki yapılandırmayı dosyaya yapıştırın. mylaravelapp ve your_domain.com değerlerini kendi projenizin adı ve alan adıyla değiştirin.
server { listen 80; servername yourdomain.com; # Alan adınızı buraya girin root /var/www/mylaravelapp/public; index index.php index.html index.htm; location / { tryfiles $uri $uri/ /index.php?$querystring; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # PHP sürümünüzü kontrol edin } location ~ /\.ht { deny all; } }
Açıklamalar:
listen 80;: Sunucunun 80 portunu dinlemesini sağlar.servername yourdomain.com;: Alan adınızı belirtir.root /var/www/mylaravelapp/public;: Laravel uygulamasının public dizinini kök dizin olarak ayarlar.index index.php index.html index.htm;: İndeks dosyalarını belirtir.location / { ... }: Tüm istekleri index.php dosyasına yönlendirir.location ~ \.php$ { ... }: PHP dosyalarının PHP-FPM aracılığıyla işlenmesini sağlar.fastcgi_pass unix:/run/php/php8.1-fpm.sock;: PHP-FPM soketini belirtir. PHP sürümünüze göre bu yolu güncelleyin.
Sanal Host'u Etkinleştirme
Sanal host dosyasını oluşturduktan sonra, etkinleştirmeniz gerekir.
sudo ln -s /etc/nginx/sites-available/mylaravelapp /etc/nginx/sites-enabled/
Nginx Yapılandırmasını Test Etme
Yapılandırma dosyasında herhangi bir hata olup olmadığını kontrol edin:
sudo nginx -t
Eğer "syntax is ok" ve "test is successful" mesajlarını alırsanız, yapılandırma doğru demektir.
Nginx'i Yeniden Başlatma
Yapılandırma değişikliklerinin etkili olması için Nginx'i yeniden başlatın:
sudo systemctl restart nginx
Adım 5: Laravel'i Yapılandırma
Laravel uygulamasının bazı temel ayarlarını yapılandırmamız gerekiyor.
Uygulama Anahtarını Oluşturma
Laravel uygulamasının bir uygulama anahtarına ihtiyacı vardır. Bu anahtar, oturumları ve diğer güvenlik özelliklerini güvenceye almak için kullanılır.
cd /var/www/mylaravelapp php artisan key:generate
Bu komut, .env dosyasında yeni bir uygulama anahtarı oluşturacaktır.
Dizin İzinlerini Ayarlama
Laravel'in storage ve bootstrap/cache dizinlerine yazma iznine ihtiyacı vardır.
sudo chown -R www-data:www-data /var/www/mylaravelapp/storage sudo chown -R www-data:www-data /var/www/mylaravelapp/bootstrap/cache sudo chmod -R 775 /var/www/mylaravelapp/storage sudo chmod -R 775 /var/www/mylaravelapp/bootstrap/cache
Önemli: Bu izinler, güvenlik açısından hassas olabilir. Üretim ortamında, daha kısıtlayıcı izinler kullanmanız önerilir.
Veritabanı Yapılandırması
Laravel uygulamasının veritabanına bağlanabilmesi için .env dosyasını düzenlemeniz gerekir.
sudo nano /var/www/mylaravelapp/.env
Aşağıdaki satırları kendi veritabanı bilgilerinizle güncelleyin:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DBDATABASE=yourdatabase_name DBUSERNAME=yourdatabase_username DBPASSWORD=yourdatabase_password
Adım 6: Güvenlik Duvarını Yapılandırma (UFW)
Ubuntu'da UFW (Uncomplicated Firewall) güvenlik duvarı varsayılan olarak bulunur. Nginx'e erişime izin vermek için UFW'yi yapılandıralım.
sudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS' sudo ufw enable
Bu komutlar, 80 (HTTP) ve 443 (HTTPS) portlarına trafiğe izin verir.
Adım 7: Tarayıcıdan Erişimi Kontrol Etme
Artık tarayıcınızdan your_domain.com adresine giderek Laravel uygulamanıza erişebilirsiniz. Laravel'in karşılama sayfasını görmelisiniz.
Ek İpuçları
- HTTPS: Üretim ortamında, sitenizi HTTPS ile güvenceye almanız şiddetle tavsiye edilir. Let's Encrypt gibi ücretsiz SSL sertifika sağlayıcıları kullanabilirsiniz.
- Önbellekleme: Laravel'in önbellekleme özelliklerini kullanarak uygulamanızın performansını artırabilirsiniz.
- Günlükleme: Laravel'in günlükleme özelliklerini kullanarak hataları ve uyarıları takip edebilirsiniz.
- Dağıtım: Uygulamanızı dağıtmak için, Git ve otomatik dağıtım araçlarını kullanabilirsiniz.
Kod Örnekleri (Özet)
İşte makalede kullanılan bazı önemli kod örneklerinin özeti:
PHP Sürümünü Kontrol Etme
php -v
Composer Sürümünü Kontrol Etme
composer -v
Nginx Durumunu Kontrol Etme
sudo systemctl status nginx
Laravel Projesi Oluşturma
composer create-project --prefer-dist laravel/laravel mylaravelapp
Uygulama Anahtarını Oluşturma
php artisan key:generate
Sonuç
Bu makalede, Ubuntu sunucu üzerinde Laravel uygulamasını Nginx ile nasıl yapılandıracağınızı adım adım öğrendiniz. Bu kurulum, hem geliştirme hem de üretim ortamları için temel oluşturur. Daha karmaşık yapılandırmalar için, Laravel ve Nginx'in resmi belgelerine başvurabilirsiniz. Başarılar!