Laravel 5 ile CMS - FTP veya SSH ile Aktarım (Deployment)

PHP
Birçok kişi hala Filezilla gibi programları kullanarak sürükle bırak yöntemiyle dosyalarını sunucuya aktarmakta. Bu yol ne yazık ki efektif olmadığı gibi, tamamen sizin ekstra zaman kaybetmenize sebep oluyor. Versiyon kontrolü de kullanmıyorsanız, hangi dosyayı değiştirdiğinizi aklınızda tutmanız, onları her bir klasöre özel şekilde atmanız lazım ki büyük çile.

Bu işi efektik şekilde yapabilmek için iki temel yöntem var, eğer sunucuya SSH ile bağlanamıyorsanız, yine FTP kullanmaya mecbursunuz. Ama sürükle bırak yerine bunu da ufak bir Laravel eklentisiyle yapabilirsiniz. Composer dosyanıza "fadion/maneuver": "dev-l5" ekleyip, config/app.php dosyanızda da providers dizisine 'Fadion\Maneuver\ManeuverServiceProvider' satırını ekleyin. Son olarak config klasöründe maneuver.php dosyasını oluşturun. İçeriği de alttaki gibi, bunu da kendi sunucuza göre düzenleyin, ya da benim gibi env dosyasında bu bilgileri tutabilir, alttaki değişkenleri de ona göre çağırabilirsiniz, size kalmış.

return [

'ignored' => [],

'default' => 'production',

'connections' => [

'production' => [
'scheme' => 'ftp',
'host' => 'yourserver.com',
'user' => 'user',
'pass' => 'myawesomepass',
'path' => '/path/to/server/',
'port' => 21,
'passive' => true
],

],

];
Son olarak da .gitignore dosyanızı alttaki gibi düzenleyin.
.idea
node_modules
resources/assets/vendor
_ide_helper.php
.phpstorm.meta.php
composer.lock
Artık dosyalarınızı aktarmanız için yapmanız gereken tek şey, her yaptığınız değişiklikten sonra örneğin git commit -m 'update index' şeklinde commitleyip, ardından da php artisan deploy yazmak. Evet bu kadar basit, ancak farkettiğiniz üzere, veritabanında tablolar oluşturmak vb. işlemler için manuel olarak cPanel vb. bir toolun size sağladığı phpmyadmin gibi başka bir tool kullanmanız lazım, eğer shared hosting kullanıyorsanız bu konuyla ilgili yapılabilecek ne yazık ki bir şey yok.

Eğer kendi sunucunuzu yönetebiliyorsanız, yukarıdaki sistemin yapabildiklerinin yanında artisan komutlarını da çalıştırabilirsiniz. Sadece Laravel ile değil, başka bir framework ile de kullanabileceğiniz bir eklenti olan bu eklenti de Rocketeer. Rocketeer ile daha kompleks, migration vb. işlemleri de yapabiliriz. Öncelikle kurulumunu yapmanız lazım. Bunun için de:
wget http://rocketeer.autopergamene.eu/versions/rocketeer.phar
chmod +x rocketeer.phar
sudo mv rocketeer.phar /usr/local/bin/rocketeer
Daha sonrasında terminalde, projenizin bulunduğu konumda rocketeer ignite yazmalısınız, bu sırada size bazı sorular soracak, host, username, şifre vb. gibi, bunları sırasıyla girin, veya hepsini atlayıp, .rocketeer klasöründe, config.php dosyasından bunları düzenleyebilirsiniz.
No connections have been set, please create one: (production)
No host is set for [production/0], please provide one:
No username is set for [production/0], please provide one:
No password or SSH key is set for [production/0], which would you use? (key) [key/password]
Please enter the full path to your key (/home/burak/.ssh/id_rsa)
If a keyphrase is required, provide it
No repository is set for [repository], please provide one:
No username is set for [repository], please provide one:
No password is set for [repository], please provide one:
production/0 | Ignite (Creates Rocketeer's configuration)
What is your application's name ? (laravel-5-simple-cms)
Unutmayın ki yine bir git repository'si gerekiyor, yoksa yine hüsrana uğrayabilirsiniz. Github'ta private repository'ler için ekstra para ödemeniz gerekirken, Bitbucket üzerinden private repository'nizi ücretsiz olarak oluşturabilirsiniz. Şimdi burada en önemli kısım, .rocketeer klasöründeki paths.php ve hooks.php dosyaları. paths.php dosyanızda php ve composer lokasyonlarını belirttikten sonra hooks.php dosyasında, her bir deploymenttan sonra yapılacak görevleri belirtebiliriz.

Örneğin deployment tamamlandıktan sonra alttaki gibi bir görev ekleyebiliriz.
'after'  => [
'setup' => [],
'deploy' => ['php artisan migrate'],
'cleanup' => [],
],
Deploy işlemini gerçekleştirmek için de rocketeer deploy yazmanız lazım. Diğer işlemleri de görmek için rocketeer list yazmanız yeterli. Neler yapacağınız size kalmış, daha fazla da detay verip her şeyi karıştırmayacağım, ancak her şeyi otomatikleştirebilmeniz ve olan biteni takip edebilmeniz açısından bunları duymuş olmanızın önemli olacağını düşünüyorum.

Alternatif olarak da Capistrano ile deployment yapabilirsiniz. Bunu da sunucu kurulumundan deployment'a kadar ayrıntılı olarak anlattığım ayrı bir makale bulunmakta: Laravel Nginx Konfigürasyonu, Git ve Capistrano ile Kolay Deployment

An itibariyle seriyi bitirmiş bulunuyoruz, seriye ait tüm makaleler alttaki gibidir.

  1. Laravel 5 ile CMS - Kurulum
  2. Laravel 5 ile CMS - Migration, Seed, Middleware, Elixir, Bower, Gulp, Blade
  3. Laravel 5 ile CMS - Controller, Model, Request, Provider, Form
  4. Laravel 5 ile CMS - WYSIWYG Filemanager, Çoklu Dil, Google Analitik API
  5. Laravel 5 ile CMS - Events, Email ve Frontend
  6. Laravel 5 ile CMS - FTP veya SSH ile Aktarım (Deployment)
Github üzerinden projenin son haline ulaşmak için: https://github.com/ozdemirburak/laravel-5-simple-cms