Bir Laravel uygulamasını dağıtmak, belirli bir maliyet gerektirmemelidir. Eğer halihazırda bir VPS veya Azure Sanal Makinesi’ne sahipseniz, Laravel projenizi Laravel Forge veya Laravel Cloud gibi hizmetler ödemeden manuel olarak dağıtabilirsiniz.
Bu kılavuzda, Nginx, PHP, MySQL ve Composer kullanarak bir Laravel uygulamasını adım adım nasıl dağıtacağımı göstereceğim. Her bir komutun ne yaptığını açıklayarak, arka planda neler olduğunu anlamanızı sağlayacağım.
Gereksinimler
Başlamadan önce aşağıdakilerin mevcut olduğundan emin olun:
- Bir Ubuntu veya Debian sunucusu (bu kılavuzda Azure’da Ubuntu kullanılıyor)
- Laravel projenizi içeren bir GitHub deposu
- Sunucunuza SSH erişimi (veya şifre erişimi)
- Root veya sudo yetkileri
- Sanallaştırma makinenize atanmış bir genel IP adresi
1. Sunucuyu Güncelleyin
Herhangi bir paket yüklemeden önce, paket indeksinizi güncelleyin.
sudo apt update
İsteğe bağlı olarak, kurulu paketleri güncelleyebilirsiniz.
sudo apt upgrade -y
2. Nginx’i Yükleyin
Nginx, web sitelerini verimli bir şekilde sunmak için kullanılan yüksek performanslı bir web sunucusudur. Ayrıca ters proxy ve yük dengeleyici olarak da görev yapabilir.
Nginx’i yükleyin:
sudo apt install nginx -y
Yukarıdaki işlemin başarılı olup olmadığını kontrol edin:
sudo systemctl status nginx
3. MySQL’i Yükleyin
Laravel, uygulama verilerini saklamak için bir veritabanına ihtiyaç duyar.
MySQL Sunucu’yu yükleyin:
sudo apt install mysql-server -y
Kurulumun başarılı olup olmadığını kontrol edin:
sudo systemctl status mysql
4. PHP’i Yükleyin
Nginx, PHP dosyalarını doğrudan çalıştırmaz. Bunun yerine PHP-FPM (FastCGI Process Manager) ile iletişim kurarak PHP isteklerini işler.
Gerekli uzantılar ile birlikte PHP’i yükleyin:
sudo apt install -y \
php \
php-fpm \
php-cli \
php-common \
php-curl \
php-mbstring \
php-xml \
php-soap \
php-gd \
php-bcmath \
php-zip \
php-mysql
Not
Eğer spesifik bir PHP versiyonu (örneğin PHP 8.4) kullanıyorsanız, uyumlu paketleri yükleyin.
PHP sürümünüzü kontrol edin:
php -v
5. Composer’ı Yükleyin
Composer, PHP için bir bağımlılık yöneticisidir.
Composer’ı indirin ve yükleyin:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Kurulumun başarılı olup olmadığını kontrol edin:
composer --version
6. Node.js ve NPM’i Yükleyin
Laravel, frontend varlıklarını Vite ile derlemek için Node.js kullanır.
Node.js ve NPM’i yükleyin:
sudo apt install -y nodejs npm
7. GitHub Repository’nizi Klonlayın
Web dizinine geçin:
cd /var/www/html
Projenizi klonlayın:
git clone YOUR_GITHUB_SSH_URL learn-vm
Proje dizinine geçin:
cd learn-vm
8. Proje Bağımlılıklarını Yükleyin
Composer paketlerini yükleyin:
composer install --no-dev --optimize-autoloader
Node paketlerini yükleyin:
npm install
Ön yüz varlıklarını yükleyin:
npm run build
9. Ortam Değişkenlerini Yapılandırın
Ortam dosyasını kopyalayın:
cp .env.example .env
Uygulama anahtarını oluşturun:
php artisan key:generate
10. MySQL Veritabanını Oluşturun
MySQL’i açın:
sudo mysql
Aşağıdaki SQL komutunu çalıştırın:
CREATE DATABASE learnvm;
CREATE USER 'learnuser''localhost'
IDENTIFIED BY ;
GRANT ALL PRIVILEGES ON learnvm.TO @;
FLUSH PRIVILEGES;
EXIT;
11. Laravel’ı Yapılandırın
.env dosyasını açın:
nano .env
Veritabanı kimlik bilgilerinizi güncelleyin:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=learnvm
DB_USERNAME=learnuser
DB_PASSWORD=YOUR_PASSWORD
12. Veritabanı Migrations’larını Çalıştırın
php artisan migrate
Projede veritabanı seeders’ları varsa:
php artisan db:seed
13. Dosya İzinlerini Ayarlayın
Laravel’in storage ve bootstrap/cache dizinlerine yazma erişimine ihtiyacı vardır.
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
14. Nginx’i Yapılandırın
Yeni bir sanal ana bilgisayar yapılandırması oluşturun:
sudo nano /etc/nginx/sites-available/learn-vm
Aşağıdaki yapılandırmayı yapıştırın:
server {
listen 80;
server_name YOUR_VM_PUBLIC_IP;
root /var/www/html/learn-vm/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
YOUR_VM_PUBLIC_IP kısmını sunucunuzun genel IP adresi ile değiştirin.
15. Siteyi Etkinleştirin
sudo ln -s /etc/nginx/sites-available/learn-vm /etc/nginx/sites-enabled/
16. Apache’yi Durdurun (Eğer Yüklenmişse)
Eğer Apache halihazırda 80 portunu kullanıyorsa, öncelikle durdurun.
sudo systemctl stop apache2
17. Nginx Yapılandırmasını Test Edin
sudo nginx -t
Her şey yolundaysa, Nginx’i yeniden yükleyin:
sudo systemctl reload nginx
PHP-FPM’i yeniden başlatın:
sudo systemctl restart php8.3-fpm
18. Uygulamanızı Açın
Tarayıcınızda sunucunuzun genel IP adresini ziyaret edin:
http://YOUR_VM_PUBLIC_IP
Laravel uygulamanız artık başarılı bir şekilde çalışıyor olmalıdır.
Ayrıca Kontrol Edin
Uygulamanız erişilebilir değilse, gerekli portların açık olduğundan emin olun.
Açıklama Portalı → Sanal Makine → Ağ → Giden Port Kuralı Ekle
Aşağıdaki portların açık olduğundan emin olun:
Port 80 ve 443.
Problemleri Giderme
Uygulamanız yüklenmezse kontrol etmeniz gerekenler:
- Nginx çalışıyor mu?
- PHP-FPM çalışıyor mu?
- MySQL çalışıyor mu?
- 80 portu açık mı?
- 443 portu açık mı (eğer HTTPS kullanıyorsanız)?
- Laravel doğru dosya izinlerine sahip mi?
.envdosyanızda doğru veritabanı kimlik bilgileri var mı?- Nginx yapılandırması doğru
publicdizinine işaret ediyor mu? php artisan config:cachekomutunu çalıştırdınız mı?
Sonraki Adımlar
Tebrikler! Laravel uygulamanız artık başarıyla dağıtıldı.
Sunucunuzu üretim için hazır hale getirmek için şu adımları eklemeyi düşünün:
- Özel bir alan adı ekleyin ve DNS kayıtlarını sunucunuzun genel IP adresine yönlendirin.
Kaynaklar
Canlı Demo
Tüm Komutlar
https://user-cdn.hackclub-assets.com/019f68cc-736b-7627-b4cf-82f958d84b93/README.md
Kaynak: Orijinal Makale
- Gereksinimler
- 1. Sunucuyu Güncelleyin
- 2. Nginx’i Yükleyin
- 3. MySQL’i Yükleyin
- 4. PHP’i Yükleyin
- 5. Composer’ı Yükleyin
- 6. Node.js ve NPM’i Yükleyin
- 7. GitHub Repository’nizi Klonlayın
- 8. Proje Bağımlılıklarını Yükleyin
- 9. Ortam Değişkenlerini Yapılandırın
- 10. MySQL Veritabanını Oluşturun
- 11. Laravel’ı Yapılandırın
- 12. Veritabanı Migrations’larını Çalıştırın
- 13. Dosya İzinlerini Ayarlayın
- 14. Nginx’i Yapılandırın
- 15. Siteyi Etkinleştirin
- 16. Apache’yi Durdurun (Eğer Yüklenmişse)
- 17. Nginx Yapılandırmasını Test Edin
- 18. Uygulamanızı Açın
- Ayrıca Kontrol Edin
- Problemleri Giderme
- Sonraki Adımlar
- Kaynaklar


