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.


Uygulama


Terminalde $ composer require symfony/dotenv komutunu çalıştırarak The Dotenv Component ekini yükleyin ve aşağıdaki dosyaları yaratın.


.env


APP_ENV=prod
APP_SECRET=123123

config/services.yaml


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.


.gitattributes


/deploy export-ignore
Capfile export-ignore
Gemfile export-ignore
Gemfile.lock export-ignore

Gemfile


source 'https://rubygems.org'

gem 'capistrano', '~> 3.10'
gem 'capistrano-symfony', '~> 1.0.0.rc3'

Capfile


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 }

deploy/deploy.rb


# 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

deploy/stages/production.rb


# 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}

Production sunucuları


Ayrıntılı bilgi için önceki yazıları okuyabilirsiniz.



Deployment sunucusu


Ayrıntılı bilgi için önceki yazıları okuyabilirsiniz.