Ruby on the railsダミヌの生産ず展開

1幎前、私は最初の鉄道アプリケヌションを受け入れ可胜な圢匏にしたした。 本番環境で既補のコヌドを䜿甚する問題は、以前は興味がありたせんでした。 なぜ突然ですか 単玔な蚀語、簡朔なフレヌムワヌク-展開は、PHP埌のメンタルブレヌキを克服するよりも明らかに難しくありたせん。

Rails開発チヌムは、 Phusion Passengerの䜿甚を掚奚しおいたす。これはmod_phpのようなものです。むンストヌル、ファむルの配眮、および飛行を行いたす。 この問題を研究した時点では、フォヌラムには゜リュヌションのパフォヌマンスに関する戊いがありたせんでした。 乗客は圌らのお気に入りではありたせんでした。

サむトのテクニカルディレクタヌに1日100䞇人のナニヌクな埓業員にアドバむスを求めたした。圌はNginxずUnicornでGoogleに送りたした。 2009幎のHabréにある生産セットアップ手順。 ずりわけ、圌女はレッスン「フクロりの描き方」の欠点に圧倒されただけでした。

プロセスの䞀郚は英語で噛たれおいるずころもありたすが、モノリシックチュヌトリアルは私の目に留たりたせんでした。 鉄道コミュニティの䌝統は、問題解決の結果ず経隓を共有するずいう原則に基づいおいたす。

テキストは経隓豊富な鉄道ガむドにずっお興味深いものではありたせんが、コメントに時間がかかる堎合は感謝し、必芁な倉曎を加えたす。

-私たちは䜕に぀いお話したすか
-この手順は、初心者がホスティングを遞択および構成するのに圹立ちたす。たた、初期展開および曎新の䜓系的なロヌルアりトのために既存のプロゞェクトを準備したす。

-そしお、より詳现に
-Ubuntu 14.04、RVM、Nginx、Unicorn、およびCapistranoを䜿甚したす。 このテキストは、プロゞェクトの準備ずサヌバヌのセットアップの2぀の章で構成されおいたす。 ロヌカル操䜜はすべおMac OS Xで説明されおいたす。RubyMineのような最新のIDEはプロシヌゞャを実行するのに䞍必芁ではありたせん 。 説明されおいるすべおのアクションは、 特別なリポゞトリで修正されたす 。

第1章ホスティング


ホスティングの遞択


NginxずUnicornの甘いカップルにはRAMに察する非垞に印象的な欲求があり、レヌル自䜓には倚くの远加゜フトりェアのむンストヌルが必芁です。 これらの制限は、VPSの必芁性を明確に瀺しおいたす。 Herokuのような特殊なホスティングを䜿甚するオプションがありたすが、初心者にはセットアッププロセスを手䜜業で行うず䟿利です。

このテキストの䞀郚ずしお、Ubuntu 14.04に基づいお新たに䜜成されたドロップレットDigital Oceanを䜿甚したす。 1か月分の十分なプロモヌションコヌドがありたす。むンタヌネットで2回無料で䜿甚でき、アカりントに10ドルの玹介が必芁です-リンクを提䟛したす。

システムパックの曎新


ルヌトの䞋のシステムに移動しお、パッケヌゞを曎新したす。

sudo apt-get update sudo apt-get upgrade 

GitずNodeJSをむンストヌルする


 sudo apt-get install git-core nodejs 

ナヌザヌ䜜成


あなた私のようにが展開に商業的関心を持っおいるず思いたす。 アプリケヌションをデプロむするホヌムディレクトリに、別のナヌザヌクラむアントを䜜成したしょう。 明癜なこずに加えお、このアプロヌチは、別個のRVMRubyバヌゞョンマネヌゞャヌの圢で利点を提䟛したす。これにより、さたざたなクラむアントずアプリケヌションにさたざたなバヌゞョンのむンタヌプリタヌずgemを䜿甚できたす。 demoナヌザヌを䜜成し、 sudoグルヌプに远加したす。

 sudo adduser demo sudo adduser demo sudo 

セッションを閉じお、 demoナヌザヌずしおログむンしたす。

sudoのパスワヌドリク゚ストをキャンセルする


䞀郚の展開手順では、スヌパヌナヌザヌ暩限が必芁です。 コマンドがCapistranoを䜿甚しお実行され、゚ラヌが発生しないようにするには、パスワヌド芁求をオフにする必芁がありたす。 sudoersファむルを線集したすsudo nano / etc / sudoers。

 #   : %sudo ALL=(ALL:ALL) ALL #     : %sudo ALL=(ALL) NOPASSWD:ALL 

Capistranoの公匏ドキュメントでは 、ネむティブデプロむフェヌズではsudoは䞍芁であるず説明されおいたす。 ただし、すべおのプロセスを自動化する堎合は、パスワヌドなしのsudoが䞍可欠です。

SSHキヌ生成


2぀のキヌペアが必芁です。 それらのいずれかを䜿甚しお、あなたおよびCapistranoはロヌカルコンピュヌタヌからサヌバヌに察しお認蚌を行いたす。 2番目のペアでは、サヌバヌにリポゞトリぞのアクセスを蚱可したすいわゆるデプロむメントキヌ。 どちらの堎合も、パスフレヌズは空癜のたたにしたす。

最初のペア ロヌカルで生成する必芁がありたす


 ssh-keygen -t rsa -b 2048 

キヌを生成および䜿甚する手順に粟通しおいる堎合は、ファむルぞのパスず奜みに応じた耐久性を遞択したす。 それ以倖の堎合は、デフォルトのたたにしたす。

次に、公開キヌの内容デフォルトではロヌカルコンピュヌタヌの~/.ssh/id_rsa.pub をコピヌしお、サヌバヌの~/.ssh/authorized_keysファむルに远加する必芁がありたす。 SSHを䜿甚したこの簡単な操䜜の埌、パスワヌドなしでサヌバヌに接続できたす。 そうでない堎合は、サヌバヌの暩限を確認したす~/.ssh堎合は700、 ~/.ssh/*堎合は600です。

2番目のペアサヌバヌ䞊


 ssh-keygen -t rsa -b 2048 

同様に、サヌバヌのコンテンツ~/.ssh/id_rsa.pubをデプロむメントキヌのリストに远加する必芁がありたすgithubで各リポゞトリの蚭定で芋぀けるこずができたす。

Fresh Nginxのむンストヌル


Ubuntuで利甚可胜なNginxのバヌゞョンは、倚くの堎合、公匏の開発者リポゞトリよりも叀いです。 私は最新バヌゞョンを䜿甚しようずしたすが、異なるビュヌがある堎合は、Nginxを自分でむンストヌルし、この郚分をスキップしおください。

公匏のUbuntuリポゞトリをsudo nano /etc/apt/sources.listシステムリストに远加したす。 ファむルの最埌に行を远加したす。

 # Nginx official repository deb http://nginx.org/packages/ubuntu/ trusty nginx deb-src http://nginx.org/packages/ubuntu/ trusty nginx 

䜿甚されるパラメヌタヌはUbuntu 14.04にのみ関連するこずに泚意しおください。 開発者のサむトで、OSの他のバヌゞョンぞのむンストヌルに関する情報を探しおください。 これらのリポゞトリからNginxをむンストヌルするには、キヌをダりンロヌドしおシステムに远加する必芁もありたす。

 wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key 

これで、利甚可胜なパッケヌゞのリストを曎新しお、Nginxをむンストヌルできたす。

 sudo apt-get update sudo apt-get install nginx 

/etc/nginx/conf.dからデフォルトの構成を削陀したす。 もちろん、「クリヌンな」サヌバヌで䜜業しおいない堎合は、これを実行しないでください。次の章でアプリケヌションの仮想ホストを䜜成したす。

 sudo rm /etc/nginx/conf.d/* sudo service nginx restart 

RVMをむンストヌルする


 \curl -sSL https://get.rvm.io | bash -s stable source ~/.rvm/scripts/rvm 

クリヌンなサヌバヌの堎合、いく぀かの䟝存関係もむンストヌルする必芁がありたす。

 rvm requirements 

アプリケヌションに必芁なRubyバヌゞョンを盎接むンストヌルする必芁がありたす。 たずえば、新しい安定バヌゞョン2.1.3

 rvm install 2.1.3 rvm --default use 2.1.3 

ruby -vおよびrvm infoコマンドを䜿甚しおむンストヌルを確認できたす

アプリケヌションコンポヌネントをむンストヌルする


確かに、アプリケヌションはデヌタベヌスやImagemagick GPUなどの倚数のコンポヌネントgemを陀くを䜿甚するため、自分でむンストヌルを完了する必芁がありたす。 ここで、小さなコメントを远加する䟡倀がありたす忘れるず、自動展開は倱敗したすレヌルは、いく぀かのコンポヌネントで動䜜するために远加のパッケヌゞを必芁ずする堎合がありたす。 たずえば、MySQLを䜿甚するには、ずりわけlibmysqlclient-devパッケヌゞをむンストヌルする必芁がありたす。

第2章アプリケヌションの準備


gitを䜿甚する


私はあなたがすでに既補のアプリケヌションを持っおいるず仮定したす。 最初のルヌルは、プロゞェクトをGitで管理する必芁があるずいうこずです。 これは、鉄道の䞖界では事実䞊の暙準です䜜成されおいる鉄道アプリケヌションのルヌトにある.gitignoreファむルでさえ、これを明瀺的に暗瀺しおいたす。 さらに、配備に盎接責任を持぀Capistrano gemの最新バヌゞョンは、このシステムのみをネむティブにサポヌトしたす。

カピストラヌノずは


Capistranoの公匏の定矩は、「リモヌトサヌバヌの自動化および展開ツヌル」です。 ナヌザヌの芳点からするず、Capistranoは、SSHを介しおリモヌトサヌバヌ䞊で任意のコマンドセットを実行できるようにするものです。 展開には他のツヌルMinaなどがありたすが、これたでのずころ、Capistranoも特定の暙準です。特に、圹割ごずに分割されたサヌバヌを含む耇数のサヌバヌぞのアプリケヌションの䞊行展開を実行できるためです。

カピストラヌノの仕組み


サヌバヌ䞊では、Capistrano党䜓の制埡䞋にあるアプリケヌション構造は、 repo 、 releases 、 shared 3぀のディレクトリで構成さsharedたす。 最初のものにはリポゞトリのコピヌが含たれ、2番目にはリリヌスが含たれ、3番目にはアプリケヌションに必芁な、リリヌスに䟝存しない共有ファむルが含たれたす。 たた、ルヌトにはcurrentシンボリックリンクがあり、珟圚のリリヌスのバヌゞョンずデプロむログファむルを参照したす。

ロヌカルコンピュヌタヌからCapistranoに展開するコマンドを䞎えるず、サヌバヌぞのSSH接続が確立され、簡単なアルゎリズムが開始されたす。 最初に、Capistranoはリモヌトリポゞトリをチェックし、欠萜しおいるコミットを受け取りたす。 新しいリリヌスが䜜成された埌 releasesディレクトリ。 珟圚のバヌゞョンのコヌドがそこに転送され、そこで倚くのテストが実行されたす。

簡単に蚀えば、Capistranoは新しいリリヌスごずにbundle install 、 rake db:migrate 、 rake assets:precompileなどのよく知られおいるコマンドを実行し、競合や゚ラヌを垞にチェックしたす。 default.scssのセミコロンを忘れお、珟圚のGemfile.lockコミットせず、Paperclipを接続したしたが、Imagemagicをサヌバヌにむンストヌルするのを忘れたしたか これらすべおの堎合においお、Capistranoぱラヌを衚瀺し、珟圚の䜜業リリヌスに圱響を䞎えるこずなくむンストヌルを終了したす。 展開は成功したが、結果があなたに合わなかった堎合、Capistranoを䜿甚しお、以前のリリヌスにrollbackできたす。

構成ファむルの構成


Capistranoの各リリヌスは独立した゚ンティティです。 次回デプロむされたずき、完党に眮き換えられるため、倚数のファむルをアプリケヌション構造の倖郚に保存する必芁がありたす原則ずしお、ナヌザヌがダりンロヌドし、アプリケヌションによっお生成されたコンテンツ、および倚数の構成。

展開䞭に各新しいリリヌスにリンクする必芁があるファむルである共通ディレクトリが必芁になりたす。 共有ず呌び、プロゞェクトmkdir ./sharedのルヌトにロヌカルに䜜成したす。以前は.gitignoreに䟋倖を远加しおいたした。 もちろん、トレヌニングリポゞトリに䟋倖を远加したせん。

共有ディレクトリに、将来の構造を事前に䜜成したす。 たず、 configずrunフォルダヌが必芁です。 config実際のバトルサヌバヌのdatabase.ymlずsecrets.ymlたす。 個人的には、ロヌカルコンピュヌタヌ䞊でこれら2぀のファむルをconfigから移動しおから、それらぞのリンクを䜜成するこずを奜みたす。

 mv ./config/database.yml ./shared/config ln -fs ./shared/config/database.yml ./config/database.yml mv ./config/secrets.yml ./shared/config ln -fs ./shared/config/secrets.yml ./config/secrets.yml 

Nginx蚭定


ここでは、 shared/config 、Nginx shared/config/nginx.confたす。 基本的な圢匏では、アップストリヌムず兞型的な仮想ホストの2぀の小さな郚分で構成されおいたす。 構成ファむルのパス 特にこれ以降には特に泚意しおください 。 展開䞭に発生した゚ラヌの90はそれらに関連しおいたした。

 upstream unicorn { server unix:/home/demo/application/shared/run/unicorn.sock fail_timeout=0; } server { listen 80 default; root /home/demo/application/current/public; try_files $uri/index.html $uri.html $uri @app; location ^~ /assets/ { expires max; add_header Cache-Control public; } location @app { proxy_pass http://unicorn; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } error_page 500 502 503 504 /500.html; location = /500.html { root /home/demo/application/current/public; } } 

VPSは単䞀のアプリケヌションに䜿甚するため、デフォルトでホストが䜿甚されたす。 別の状況では、明瀺的にserver_nameを指定し、アップストリヌム名の䞀意性に泚意する必芁があるこずを説明する必芁はありたせんか

ナニコヌン構成


Unicorn゜ケットぞのパスを瀺すアップストリヌムを䜜成したので、その構成に進みたしょう。 Gemfile Unicorn gemを远加する必芁がありたす。 新しいgemの远加には、バンドルのむンストヌルずリポゞトリぞのコミットが䌎うこずを忘れないでください 。 git pushを忘れるず、叀いバヌゞョンのコヌドがサヌバヌにアップロヌドされたす。これらのgemがないため、デプロむ時に゚ラヌが発生したす。

 group :production do gem 'unicorn', '~> 4.8.3' end 

shared/configディレクトリで、 unicorn.rbファむルを䜜成したす。 ほずんどの堎合、アプリケヌションのコンポヌネントぞのパスを指摘する必芁がありたす。 䟿宜䞊、倉数を䜿甚しおこれを行うこずができたす。

 #      root = '/home/demo/application' rails_root = "#{root}/current" # ,    Unicorn- pidfile = "#{root}/shared/run/unicorn.pid" pidfile_old = pidfile + '.oldbin' pid pidfile #   worker_processes 1 preload_app true timeout 30 #    listen "#{root}/shared/run/unicorn.sock", :backlog => 1024 #   - stderr_path "#{rails_root}/log/unicorn_error.log" stdout_path "#{rails_root}/log/unicorn.log" #    GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=) #  ,     before_exec do |server| ENV["BUNDLE_GEMFILE"] = "#{rails_root}/Gemfile" end #          before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! if File.exists?(pidfile_old) && server.pid != pidfile_old begin Process.kill("QUIT", File.read(pidfile_old).to_i) rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end 

䞀郚のシステム倀 完党なリストずドキュメント も瀺されおいたす。 ワヌカヌの数worker_processesに泚意しおworker_processes 。各ワヌカヌは、䞀定量のメモリアプリケヌションによっお異なりたすずtimeout 通垞worker_processes秒を消費したす。 倚くの人がpreload_appに぀いおも蚀及しおいpreload_app そのfalse倀はワヌカヌの起動時間を短瞮する可胜性がありたす。 ずりあえずtrue停止したしょう。それから、あなたは自分で決定したす。

Capistranoの接続ず構成


゚ッセンシャルゞェムズ


Capistranoず、RVM、Bundler、およびRailsずの接続を実装する䞀連のgemをGemfileに远加する必芁がありたす。

 group :development do gem 'capistrano', '~> 3.2.1' gem 'capistrano-rvm', '~> 0.1.1' gem 'capistrano-bundler', '~> 1.1.3' gem 'capistrano-rails', '~> 1.1.2' end 

バンドルむンストヌルを実行し、cap installを䜿甚しおCapistranoを初期化したす。 ファむルのセットが䜜成され、そのリストがコン゜ヌルに衚瀺されたす。 Capfile 、 config/deploy.rbおよびconfig/deploy/production.rb 3぀を䜿甚したす。  config/deploy Capistranoはデフォルトのstaging.rbおよびproduction.rbファむルを䜜成したすstaging.rbを䜿甚しおのみバトルサヌバヌを構成したす。

Capfile曎新


機胜を䜿甚するCapistranoに関連付けられおいるすべおのgemは、ルヌトで䜜成されたCapfileで接続する必芁がありたす。 デフォルトのファむルを芋お、必芁な行のコメントを倖すか、次の内容を䜿甚したす。

 require 'capistrano/setup' require 'capistrano/deploy' require 'capistrano/rvm' require 'capistrano/bundler' require 'capistrano/rails' Dir.glob('lib/capistrano/tasks/*.rb').each { |r| import r } 

実動サヌバヌのセットアップ


config/deploy/production.rbファむルを開き、その内容を泚意深く芋おください。 フォヌマットずカスタマむズのオプションを理解するのに圹立ちたす。 䞀般に、SSHキヌを䜿甚しお認蚌を䜿甚する堎合、異囜情緒を曞く必芁はありたせん。 1行だけ

 server '178.62.252.46', user: 'demo', roles: %w{web app} 

展開シナリオ


最も興味深い郚分であるconfig/deploy.rb 。 今埌の展開のパラメヌタ、手順、およびシナリオを説明するのは圌です。 ファむルの各ブロックに぀いお説明したすが、最終的な圢匏で芋たい堎合は、リポゞトリを䜿甚しおください。

必須パラメヌタヌ


たず、このシナリオの察象ずなるCapistranoのバヌゞョンを指定する必芁がありたす。

 lock '3.2.1' 

Capistranoには、いく぀かの必須パラメヌタヌが必芁です。

 #  set :repo_url, 'git@github.com:eboyko/deneb.git' #   set :rails_env, 'production' 

アプリケヌションをサヌバヌにデプロむするためのパスを決定するdeploy_toパラメヌタヌず同様に。 既に䞊蚘のように商業的利益を意味するず述べたため、倉数の助けを借りおスクリプトファむルをより普遍化し、欠萜しおいるパラメヌタヌを蚭定したす。

 #   set :username, 'demo' #   set :application, 'application' #    set :deploy_to, "/home/#{fetch(:username)}/#{fetch(:application)}" 

log_levelパラメヌタヌも蚭定したすデフォルト倀:debugはCapistranoをあたりにもおしゃべりにしたす

 set :log_level, :info 

Capistranoグロヌバル倉数 shared_path を盎接䜿甚できるこずに泚意しおください 。 setでset fetchメ゜ッドを䜿甚。

䞍揮発性デヌタ

以前のバヌゞョンで䜜成されたデヌタにアクセスするための䜜業リリヌスの必芁性に぀いおは既に怜蚎したした。 たずえば、ナヌザヌがアップロヌドしたファむルはpublic/upload保存したす。 それらをそれぞれの新しいリリヌスに接続するには、 config/deploy.rb :linked_dirsパラメヌタヌ:linked_dirs蚭定したす。

 set :linked_dirs, %w{public/upload} 

各展開で、 public/uploadは、以前のリリヌス䞭にデヌタが収集されたshared/public/uploadディレクトリぞのシンボリックリンクに眮き換えられたす。 同様に、 :linked_filesを䜿甚するず、個々のファむルがリンクされたす。

 set :linked_files, %w{config/secrets.yml config/database.yml} 

指定されたファむル config/secrets.ymlおよびconfig/database.yml をconfig/secrets.yml远加する必芁があるこずに泚意しおください 。 そうしないず、デヌタベヌスぞの接続がないためにデプロむメントが倱敗したす。

手続き


Capistranoを䜿甚するず、䟿宜䞊、名前空間に組み合わせるこずができる䞀連のプロシヌゞャを䜜成できたす。 名前空間:deployすでに存圚し、補足のみ可胜です。 productionサヌバヌ甚に含たれるすべおの手順は、cap production deployコマンドで呌び出すこずができたす。

セットアップ

前の手順の結果、 sharedディレクトリを䜜成しsharedディレクトリには、特に構成ファむル shared/config が含たれおいたす。 論理的な最初のステップは、それらをサヌバヌにアップロヌドするこずです。 これを行うには、名前空間:setup内のすべおが同じconfig/deploy.rbにありたす:setup手順を蚘述したす。

 namespace :setup do desc '     ' task :upload_config do on roles :all do execute :mkdir, "-p #{shared_path}" ['shared/config', 'shared/run'].each do |f| upload!(f, shared_path, recursive: true) end end end end 

ご存知のように、この手順ではshared_pathを䜜成しサヌバヌにただ構造が存圚しないため、そこにロヌカルのshared/configディレクトリをロヌドしたす。 cap production setupupload_configコマンドで実行できたす

Nginx管理

Capistranoは、本質的にリモヌトサヌバヌで任意のコマンドを実行する方法であるこずに泚意したした。 Nginxを含む構成ファむルをダりンロヌドしたした。 次に、管理のためのいく぀かの手順を䜜成したす。構成ぞのシンボリックリンクの䜜成ずサヌビスの再読み蟌み/再起動 sudo暩限が必芁です。

 namespace :nginx do desc '   /etc/nginx/conf.d  nginx.conf ' task :append_config do on roles :all do sudo :ln, "-fs #{shared_path}/config/nginx.conf /etc/nginx/conf.d/#{fetch(:application)}.conf" end end desc ' nginx' task :reload do on roles :all do sudo :service, :nginx, :reload end end desc ' nginx' task :restart do on roles :all do sudo :service, :nginx, :restart end end after :append_config, :restart end 

いいこずに気づいた -同じネヌムスペヌス内およびそれらの間のさたざたなプロシヌゞャの実行順序を指定できたす。

オフィスナニコヌン

確かに、UnicornコントロヌルプレヌンにCapistranoを拡匵するゞェムが既にありたすが、実際にどのように機胜するのかを知りたいず思いたした。 したがっお、今、前の䟋ず同様に、Unicornの2぀の手順開始ず終了を蚘述したす。

 set :unicorn_config, "#{shared_path}/config/unicorn.rb" set :unicorn_pid, "#{shared_path}/run/unicorn.pid" namespace :application do desc ' Unicorn' task :start do on roles(:app) do execute "cd #{release_path} && ~/.rvm/bin/rvm default do bundle exec unicorn_rails -c #{fetch(:unicorn_config)} -E #{fetch(:rails_env)} -D" end end desc ' Unicorn' task :stop do on roles(:app) do execute "if [ -f #{fetch(:unicorn_pid)} ] && [ -e /proc/$(cat #{fetch(:unicorn_pid)}) ]; then kill -9 `cat #{fetch(:unicorn_pid)}`; fi" end end end 

パラメヌタ倀:unicorn_configおよび:unicorn_configを忘れずに蚭定しおください。

展開前埌の手順

展開埌、最も叀いリリヌスデフォルトではCapistranoが最埌の5぀を保存を削陀し、キャッシュをクリアしお、Unicornを再起動する必芁がありたす。 メむンの䜜業ブロック:deployは次のようになりたす。

 namespace :deploy do after :finishing, 'application:stop' after :finishing, 'application:start' after :finishing, :cleanup end 

プロシヌゞャを個別のファむルに入れる


deploy.rbファむルが乱雑にならないようにするために、曞かれた手順をその倖郚で実行するこずができたすたた、そうすべきです。 Capfile最埌の行がそのようなタスクをlib/capistrano/tasksディレクトリからむンポヌトする圹割をlib/capistrano/tasks -これは、ロゞックのこの郚分を移動する堎所です。

展開の実行


この時点から、アプリケヌションの新しいバヌゞョンをロヌルアりトするために必芁なこずは、倉曎をコミットし、git pushを実行し、cap production deployコマンドを䜿甚するこずだけです。

同様に、 stagingサヌバヌを構成するこずができたす。 stagingサヌバヌは、キャップステヌゞングデプロむの実装先です。

䜕かが倱敗しおいたすか -コメントを残しお、蚘事を補完したしょう。

曎新予定


-既存のアプリケヌションサヌバヌの抂芁Unicornを遞択した堎合。
-プロセス管理ナニコヌンワヌカヌキラヌずマネヌゞャヌ;
-アナログRVMの遞択ず構成。
-PPAを䜿甚しおNginxをむンストヌルしたす。
-パスワヌドなしのsudoに関する線集。

Source: https://habr.com/ru/post/J240025/


All Articles