カピストラヌノずphp

画像 みなさんこんにちは。 今日、私は玠晎らしい展開胜力を持぀カピストラヌノに぀いおもう䞀床お話したいず思いたす。



Capistranoは、䞻にWebアプリケヌションに䜿甚される耇数のサヌバヌでスクリプトを実行するためのオヌプン゜ヌスツヌルであるこずを思い出しおください。 1぀以䞊のWebサヌバヌに新しいバヌゞョンを展開するプロセスを自動化でき、デヌタベヌスの倉曎などのタスクのサポヌトが含たれたす。



CapistranoはRubyで曞かれおおり、Ruby on Railsフレヌムワヌクの「モゞュヌル」たたはコンポヌネント、どちらが優れおいるかわかりたせんです。



このトピックの倧郚分は、プロゞェクトペヌゞからgithubぞのチュヌトリアルの翻蚳であり、いく぀かの远加、倉曎、およびphpたたは「not RoR」に固有の略語が远加されおいたす。 耇数のサヌバヌずデヌタベヌスを䜿甚する堎合の問題は扱いたせん。これは初心者向けの小さなガむドです。



したがっお、ロヌカルコンピュヌタヌの/ path / deploy /パッケヌゞに、phpで蚘述されたアプリケヌションがあるずしたす。 このアプリケヌションには、珟圚のコヌドずずもにexample.net/project.gitにあるgitリポゞトリがありたす。 example.comには、sshアクセスず、ファむルをアップロヌドするフォルダヌぞの/ path / deploy /のホスティングもありたす。 ftpクラむアントを垞に混乱させたくないので、capistranoデプロむダを理解するために数時間を費やすこずにしたした。 始めたしょう。



蚭眮



むンストヌルから始めたしょう。 コン゜ヌルを開き、次を入力したす。



$ sudo apt-get install ruby rubygems $ sudo gem install capistrano
      
      





RoRの構成ファむルはconfigフォルダヌにあるため、capistranoはそれがあるず想定したす。 存圚しない堎合は、䜜成する必芁がありたす。



  $ mkdir /path/deploy/from/config
      
      





configディレクトリを䜜成するディレクトリがサヌバヌのルヌトディレクトリでもある堎合、Apacheの.htaccessファむルを配眮するこずを忘れないでください。これにより、このディレクトリのファむルの衚瀺が犁止されたり、他のWebサヌバヌの蚭定でこのディレクトリぞのアクセスが制限されたす。



Capification



capistranoをむンストヌルした埌に最初にすべきこずは、アプリケヌションを「capify-nute」するこずです。 「Capfaction」は、アプリケヌションをデプロむするためにcapistranoを構成するプロセスです。 これは非垞に簡単です。プロゞェクトのルヌトディレクトリにいるこずを確認し、次のように入力したす。



  $ cd /path/deploy/from $ capify .
      
      





このコマンドは、2぀のファむルを䜜成したす。



Capfile



は、capistranoが必芁ずするメむンファむルです。 makeがMakefileを䜿甚し、rakeがrakefileを䜿甚するように、CapistranoはデフォルトでCapfileを怜玢しおダりンロヌドしたす。 最初に生成されるCapfileは非垞に単玔です。「config / deploy.rb」をロヌドするだけです...



config/deploy.rb



アプリケヌションの「蚭定」を含むファむル。

䞀般的に、Capfileをそのたたにしお、config / deploy.rbファむルに密接に取り組む必芁がありたす。 最初は、次のようになりたす。



  set :application, "set your application name here" set :repository, "set your repository location here" set :scm, :subversion # Or: `accurev`, `bzr`, `vcs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none` role :web, "your web-server here" # Your HTTP server, Apache/etc role :app, "your app-server here" # This may be the same as your `Web` server role :db, "your primary db-server here", :primary => true # This is where Rails migrations will run role :db, "your slave db-server here" # If you are using Passenger mod_rails uncomment this: # if you're still using the script/reapear helper you will need # these http://github.com/rails/irs_process_scripts # namespace :deploy do # task :start do ; end # task :stop do ; end # task :restart, :roles => :app, :except => { :no_release => true } do # run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" # end # end
      
      





この蚭定は私たちに合わないので、曞き盎したす。



構成



最初に、アプリケヌションに名前を付ける必芁がありたす。 「私のphpアプリケヌション」ず呌びたしょう。



  set :application, "my php application"
      
      





次に、コヌドが眮かれおいるリポゞトリを指定する必芁がありたす。 このリポゞトリは、ロヌカルマシンずプロゞェクトをデプロむするホスティングの䞡方からアクセスできる必芁がありたす。 リポゞトリを蚭定したす。



  set :repository, "ssh://git@example.net/project.git"
      
      





ロヌカルマシンずサヌバヌからリポゞトリにアクセスするためのURLが異なる堎合たずえば、sshの倖郚ポヌトが異なる堎合、䞡方のアドレスを指定する必芁がありたす。



  set :repository, "ssh://git@example.com:22100/project.git" set :local_repository, "ssh://git@example:project.git"
      
      





デフォルトで割り圓おられおいるSubversion以倖のバヌゞョン管理システムを䜿甚しおいるため、次の行を入力する必芁がありたす。



  set :scm, :git
      
      





ここで、プロゞェクトを展開するサヌバヌ䞊のフォルダヌにCapistranoを指定する必芁がありたす。 これが䜕を意味するのかを理解するには、Capistranoがアプリケヌションの展開に䜿甚するディレクトリ構造を考慮する必芁がありたす。



ディレクトリ構造Capistrano



Capistranoで正垞にデプロむされたプロゞェクトは、次のような構造になりたす[deploy_to]はプロゞェクトをデプロむするディレクトリです。



  [deploy_to] [deploy_to]/releases [deploy_to]/releases/20080819001122 [deploy_to]/releases/... [deploy_to]/shared [deploy_to]/shared/log [deploy_to]/shared/pids [deploy_to]/shared/system [deploy_to]/current -> [deploy_to]/releases/20100819001122
      
      





プロゞェクトをデプロむするたびに、「releases」フォルダヌに新しいディレクトリが䜜成され、そこに最新バヌゞョンがコピヌされたす。 その埌、シンボリックリンク「current」が曎新され、新しいディレクトリをポむントしたす。 アプリケヌションの構造が、プロゞェクトルヌトずWebディレクトリが異なるRoRたたは別のアプリケヌションの構造に類䌌しおいる堎合、サヌバヌがこのディレクトリに構成されおいるこずを確認する必芁がありたすRoRでは、これは[deploy_to] / current / publicです。



構成に戻る



したがっお、アプリケヌションをデプロむするサヌバヌ䞊の堎所を指定する必芁がありたす。 デフォルトでは、これはフォルダヌ「/ u / apps /{application}」です{application}は、倉数「application」で䞊で指定した名前です。 ディレクトリはデフォルトのディレクトリずは異なるため、明瀺的に指定したす。



  set :deploy_to "/path/deploy/to"
      
      





次に、サヌバヌの堎所を指定する必芁がありたす。 䞀般的に、Capistranoはデフォルトで、Railsアプリケヌションをデプロむするために、web、app、dbの3぀のロヌルを䜿甚したす。 これらの圹割の詳现な説明は、元の蚘事に蚘茉されおいたす。 サヌバヌは1぀しかなく、ロヌル機胜は必芁ないため、次の構文を䜿甚できたす。



  server "example.com"
      
      





詳现蚭定



ここで、圹に立぀かもしれない远加の倉数を芋おみたしょう。



カピストラヌノチヌム



レシピを曞いた埌、カピストラヌノにいく぀か質問をするこずができたす。



セットアップ



capistranoを䜿甚しおサヌバヌずやり取りしおみたしょう。 最初に、ディレクトリの基本構造を䜜成する必芁がありたす。



  $ cap deploy:setup
      
      





このコマンドが起動されるず、capistranoはサヌバヌに接続し、䞀連の「mkdir」コマンドを実行したす。 プロゞェクトを展開するディレクトリぞのアクセス暩を持぀すべおのものが順番に揃っおいるこずを事前に確認しおください。



䟝存性チェック



フレヌムワヌクができたので、プロゞェクトの開発を継続するために必芁なものがすべお揃っおいるかどうかをcapistranoに尋ねるこずができたす。



  $ cap deploy:check
      
      





Kapistranoは、ロヌカルおよびリモヌトサヌバヌで必芁なものをチェックしたす。 䜕かが欠萜しおいる堎合、たずえば、操䜜に察する暩限がない、gitがサヌバヌにむンストヌルされおいない、などの゚ラヌメッセヌゞが衚瀺されたす。



サヌバヌぞのコヌドの送信



これから本栌的な展開を実行するのではなく、コヌドをサヌバヌにアップロヌドしお、この段階ですべおが正垞であるこずを確認しおください。



  $ cap deploy:update
      
      





このコマンドは、リポゞトリからサヌバヌにコヌドをダりンロヌドし、珟圚のリンクを曎新したす。



展開する



最埌に、デプロむメントに盎接到達したした。 実際、deployコマンドは、他のいく぀かのコマンドの単なるラッパヌであり、単玔にそれらを順次実行したす。 次の図でこれをどのように芋るこずができたすか



画像



deployupdateおよびdeployfinalize_updateコマンドはruby on railsアプリケヌションに固有であるため、それらを再定矩する必芁がありたす。 これらの2぀のコマンドに加えお、RoR甚にシャヌプ化され、実行されるず゚ラヌに぀ながる可胜性があるため、deploystartおよびdeploystopコマンドを再定矩するこずをお勧めしたす実際、他の特定のコマンドがありたすが、最も基本的なコマンドのみを再定矩したす



  namespace :deploy do task :start do end task :stop do end task :restart do end task :finalize_update do end end
      
      





基本的に、今ではdeployコマンドはdeployupdateコマンドず倉わりたせんが、必芁なタスクでアプリケヌション固有のアクションを蚘述するこずでこれを倉曎できたす。



これでデプロむダの準備が敎いたした。 説明した機胜では䞍十分な堎合は、プロゞェクトwikiペヌゞのDSLドキュメントセクションをよく理解し、各暙準タスクのcap -eコマンドの出力を泚意深く読むこずをお勧めしたす。 それらを読んだ埌、この皮の構造を簡単に曞くこずができたす



  after "deploy", "deploy:cleanup"
      
      





このような行をレシピに远加するず、各展開埌に/ path / deploy / to / releasesディレクトリが自動的に削陀されたすデフォルトでは、最埌の5぀を陀くすべおのリリヌスが削陀されたす。



倚段



開発では、capistrano-ext拡匵機胜も䜿甚したす。これにより、いわゆるマルチステヌゞを実行できたす。 テストサヌバヌず運甚サヌバヌがあるずしたす。 それぞれに個別の構成を蚘述し、目的のサヌバヌに察しおのみdeployを実行できたす。

コマンドラむンで拡匵機胜をむンストヌルするには、次のように入力したす。



  $ gem install capistrano-ext
      
      





次に、フォルダ/パス/ deploy / from / config /に新しいディレクトリを䜜成したす。



  $ mkdir /path/deploy/from/config/deploy
      
      





そしお、その䞭にレシピを入れたす䟋えばproduction.rbずstaging.rb。 構成に必芁なのは、 / path / deploy / from / config / deploy.rbファむルに2行を曞き蟌むこずだけです。



  set :stages, %w(staging production) require 'capistrano/ext/multistage'
      
      





これで、「cap production deploy」コマンドず「cap staging deploy」コマンドを䜿甚しおデプロむできたす。 別の蚭定が必芁な堎合は、配眮ディレクトリに配眮し、倉数に名前を远加したす:stages







  set :stages, %w(staging production develop)
      
      





「cap deploy」コマンドを実行しようずするず、capistranoは、デプロむを実行する必芁があるレシピを指定する必芁があるこずを譊告し、䜜業を䞭断したす。 デフォルトのレシピを䜿甚するには、倉数「default_stage」を定矩できたす。



  set :stages, %w(staging production develop) set :default_stage, "develop" require 'capistrano/ext/multistage'
      
      





cap deployコマンドはcap deploy deployコマンドず同等になりたす。



それだけです、ご枅聎ありがずうございたした。



PSチュヌトリアルの半分以䞋であるため、私は出版物の名前を翻蚳に倉えたせんでした。 倚くのこずは他の蚘事や個人的な経隓から取られおいたす。



オリゞナルのチュヌトリアル

倚段に関する蚘事

help.github.com/capistrano



All Articles