Öncelikle sunucunuza Composer ve Git kurun.
ssh-keygen ile bir tane SSH key oluşturup ~/.ssh/id_rsa.pub içeriğini kopyalayıp Github, Bitbucket... ne kullanıyorsanız deployment key olarak ekleyin
Sitenizi /var/www/html içerisine
git clone git@github.com... ile klonlayın. Klon komutunun sonuna bir nokta koyarak dizin oluşturmadan dosyaların html içerisine açılmasını sağlayın. Bu durumda document root /var/www/html/public olmuş oluyor.
$ git clone git@github.com/user/repo .
SSH aşamasında bir sorun yoksa klon alacaktır.
Bazı klasörlerin dosyaların gelmediğini farketedeceksiniz. .env, vendor gibi. Bazı klasörler de içleri boş olarak gidecektir. Bu bilinçli yapılmış bir eylem.
Daha sonra /var/www/html içerisine girin ve
composer install ile gerekli paketleri kurun. vendor klasörü oluşacak.
Bittikten sonra php artisan ile varsa migration vs işlemleri yapın.
Sitenizi güncelleyip git push yaptıktan sonra sunucunuzda /var/www/html içerisinde git pull yaparak sitenizi güncelleyebilirsiniz. Bu işlemin otomatik yapılmasını sağlayan yollar mevcut. En basitinden Github ve Bitbucket'da yer alan Webhook.
Siteniz için web server kullanacaksınız. Apache, Nginx, Litespeed... her neyse ama PHP'nin içinde gelen built-in serverı kullanmayacaksınız. O sadece basit ve hızlı kullanım için oluşturulmuş bir yerel geliştirme aracı. Ayrıntılara girmiyorum bile
.env dosyası sadece geliştirme aşaması içindir. Sunucuya gitmez, sunucu ayarları config klasörü içerisinde yazılı olmalıdır. .env içerisinde yerel ayarlarınız olacak.
Apache kullandığınızı ve web kullanıcısının www-data olduğunu varsayarsak dizin izinleri 755 olmalı, dosyalar 644. Kısaca bir şey değiştirmenize gerek yok. root kullanıcısı ile işlem yapmadığınızı umuyorum.