YalcinSahin
Manuel olanını kısaca açıklamaya çalışayım.
Örneğin Github'da bir projeniz olsun:
https://github.com/yasinsahin/projem
Öncelikle sunucuza SSH ile bağlanıp SSH key oluşturun (Tüm adımları enter ile işlem bitinceye kadar geçebilirsiniz):
$ ssh-keygen
SSH anahtarı /.ssh klasörünün (genellikle kullanıcının home dizininde olur) içinde. id_rsa.pub dosyasının içeriğini kopyalayın ve Github'da reponuzun ayarlar kısmındaki Deploy Keys bölümüne ekleyin (İsim olarak herhangi bir isim verebilirsiniz):
Settings > Deploy Keys > Add Deploy Key
Bu adrese direkt şu şekilde de girebilirsiniz
https://github.com/yasinsahin/projem/settings/keys
SSH key oluşturmamızın sebebi iki sunucu arasında erişim gerçekleşirken kullanıcı adı ve şifre girişlerini kaldırmak. Sonuçta hem Github hem de sizin sunucu kullanıcı adı ve şifre ile korunuyor. Ben yazayım, bilen biliyordur; bilmeyen de öğrenmiş olsun. Bu key sizden başka kimsenin elinde olmamalı dememe gerek yok sanırım.
Daha sonra sunucuzda projenizi web server klasöründe klonlayın (/var/www/ ya da /home/username/public_html gibi yani)
$ git clone git@github.com:yalcinsahin/projem.git
Bu aşamadan sonra public klasörünü DOCUMENT_ROOT yapmanız gerekiyor. Klonlama yaparken üstteki gibi yaparsanız dosyaları projem diye bir klasör oluşturup içine atar. Bu ek klasörü istemiyorsanız klon komutunun sonuna bir boşluk bırakıp nokta koyun:
$ git clone git@github.com:yalcinsahin/projem.git .
Proje dosyalarınızı Github'dan çekip web server klasörüne aktaracaktır. Yani sizin FTP ile yaptığınız işlem. Bu klonlama sırasında .gitignore içerisindeki dosyalar klasörler gelmeyecek. vendor klasörü gibi. Şimdi projeyi burada kurmanız gerekiyor. Projede composer.json dosyasının olduğu kök dizine girin ve composer install yapın
$ composer install
Daha sonra Laravel işlemleri var. Migration, seeder vs varsa onları yüklüyorsunuz:
$ php artisan migrate --seed
Projeyi deploy etmiş oldunuz. Şimdi kendi bilgisayarınızda değişiklik yapıp git push
ile Github'daki uzak reponuzu güncelledikten sonra sunucuya girip git pull
ile sunucudaki repoyu güncellemeniz gerekiyor.
Diyelim ki yeni bir paket kurdunuz. Bunu kendi bilgisayarınızda yapıyorsunuz, git push
yaptıktan sonra sunucuda git pull
yapıp yine repoyu güncelliyorsunuz sonra composer install
(kesinlike sunucuda update yapılmaz) yapıyorsunuz.
Sunucuda update yapılmamasının sebebi siz bir paket kurduğunuzda bunu composer.lock dosyasına işler. Burada işlenen kurulacak paket ve bu paketin kullandığı başka paketler varsa (bağımlılık) onlar ve tam kurulacak sürüm numaralarıdır. O yüzden composer.lock dosyası sunucuya gönderildiğinde artık composer tam olarak neyin kurulacağını bildiği için update yapılmadan install yapılır.