21/05/2018 - CAPISTRANO, SYMFONY
Production ortamında uygulamaların gizli değişkenlerini tanımlamanın en iyi şekli, sistem üzerinden tanımlamaktır. Örneğin, terminal veya Apache/Nginx konfigürasyon üzerinden tanımlamak gibi. Eğer .env
dosyası ile tanımlamak isterseniz (production ortamında tavsiye edilmez ama geliştirme ortamında kullanılabilir) bu örneği kullanabilirsiniz. Sistemin tamamının kurulumu göstermeyeceğim ama isterseniz daha önceki yazılara bakabilirsiniz.
Terminalde $ composer require symfony/dotenv
komutunu çalıştırarak The Dotenv Component ekini yükleyin ve aşağıdaki dosyaları yaratın.
APP_ENV=prod
APP_SECRET=123123
Bunu sadece uygulamanın değişkenlere ulaşıp ulaşamadığını test etmek için yaratıyoruz.
parameters:
services:
...
App\Controller\DefaultController:
tags: ['controller.service_arguments']
arguments:
$env: '%env(APP_ENV)%'
$secret: '%env(APP_SECRET)%'
Aşağıdaki dosyalar capistrano ile ilgilidir.
/deploy export-ignore
Capfile export-ignore
Gemfile export-ignore
Gemfile.lock export-ignore
source 'https://rubygems.org'
gem 'capistrano', '~> 3.10'
gem 'capistrano-symfony', '~> 1.0.0.rc3'
set :deploy_config_path, "deploy/deploy.rb"
set :stage_config_path, "deploy/stages"
require "capistrano/setup"
require "capistrano/deploy"
require "capistrano/symfony"
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git
# If you use rake files
Dir.glob('deploy/tasks/*.rake').each { |r| import r }
# Locked capistrano version.
lock "3.10.2"
# The name of the application.
set :application, "api"
# The path on the remote server where the application will be deployed.
set :deploy_to, "/srv/www/#{fetch(:application)}"
set :tmp_dir, "/tmp/capistrano"
# The application repository.
set :repo_url, "git@github.com:inanzzz/api.git"
# Share files and folders between releases
set :linked_files, [".env"]
set :linked_dirs, ["var/logs"]
# Output styling.
set :format, :airbrussh
# Amount of releases to keep.
set :keep_releases, 5
# Asks branch to deploy.
ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
# The settings for remote servers to deploy at same time
server "192.168.99.60", user: "deployer", roles: %w{app db web}
server "192.168.99.70", user: "deployer", roles: %w{app db web}
Ayrıntılı bilgi için önceki yazıları okuyabilirsiniz.
deployer
kullanıcısını yaratın./srv/www
klasörünü yaratın.deployer
kullanıcısını ana klasörün sahibi olarak belirleyin.Ayrıntılı bilgi için önceki yazıları okuyabilirsiniz.
$ ssh-keygen -t rsa
komutu ile SSH anahtarlarını yaratın.$ bundle install
komutunu çalıştırın.$ bundle exec cap production deploy --trace
komutu ile iletimi gerçekleştirin.