belestr Nginx için bazı ayarlar yapılması gerekiyor. Şurada örnek verilmiş: https://laravel.com/docs/8.x/deployment#nginx
Bu .env konusu sürekli tartışılan bir konu. Ben sunucuya göndermiyorum, sunucu bilgilerini config dosyalarında; kendi geliştirme ortamı bilgilerimi .env dosyasında tutuyorum. .env dosyasını da sunucuya göndermeyince config içindeki ayarlar devreye giriyor. Sizin production ve development ortamınıza hangisi uygun ise onu yapın, gönderilir ya da gönderilmez diye bir ayrım yok artık. Örneğin dev - stage - prod şeklinde 3 ortamınız varsa stage ya da prod ortamından en az birine .env göndermeniz gerekecek. Burada .env dosyasını GIT'e dahil etmeyin, ortama elle ya da CI/CD ile ekletin.
root kullanıcısı ile işlem yapmayın. Uygulama normal kullanıcı ile çalışmalı. root sadece sistem yönetimi ile ilgili işlemlerde kullanılmalı.
Klasör izinleri 755; dosya izinleri 644 olur genellikle. Böylece hem web sunucusu hem de kullanıcı ulaşabilir. Bunun için proje clone alınmadan önce umask 022
çalıştırmayı unutmayın. Mesela işlemi elle yapıyorsanız:
$ umask 022
$ git clone git@github.com:username/repo.git .
gibi. Bu şekilde dosya ve klasörler uygun okuma/yazma izinleri ile oluşturulur. Burada üstte belirtiğim gibi bu işlemi kesinlikle root kullanıcısı ile yapmıyorum.
Son olarak şunu inceleyin:
https://github.com/lorisleiva/laravel-deployer
Başka şeyler de vardır ama ortama göre değiştiği için söylemesi zor.