14.04サーバーへのデプロイメントを自動化する方法を示します。Gitフックを使用すると、データベース移行の実行などを手動でプルして実行する代わりに、変更を運用サーバーにプッシュするだけでアプリケーションをデプロイできます。アプリケーションでの作業を続けると、Gitフックなどの何らかの形の自動デプロイをセットアップすると、長期的に時間を節約できます。この特定のセットアップは、アプリケーションサーバーとしてのPuma、PumaへのリバースプロキシとしてのNginx、およびデータベースとしてのPostgreSQLに加えて、単純な「受信後」のGitフックを使用します。[Gitフックを使用して開発および展開タスクを自動化する方法]。前提条件Ubuntuサーバーでスーパーユーザー特権を持つ非ルートユーザーへのアクセスが必要になります。サンプルのセットアップでは、「++」というユーザーを使用します。14.04での初期サーバー設定]。パスワードを入力せずに展開する場合は、必ずSSHキーを設定してください。サーバーにRubyをインストールする必要があります。[rbenv]またはhttps://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-on-ubuntu-14-04-using-rvm[RVM]。ローカル開発マシンのgitリポジトリで管理されるRailsアプリケーションも必要です。持っていないのでフォローしたい場合は、簡単なサンプルアプリを提供します。始めましょう!PostgreSQLをインストールするほとんどの実動Rails環境はPostgreSQLをデータベースとして使用するため、今すぐサーバーにインストールしてみましょう。*運用*サーバーで、apt-getを更新します。update次に、これらのコマンドを使用してPostgreSQLをインストールします。物事を簡単にするために、運用データベースユーザーにアプリケーション名と同じ名前を付けましょう。アプリケーションの名前が「appname」の場合、次のようなPostgreSQLユーザーを作成する必要があります。-sデータベースユーザーのパスワードを設定したいので、次のようにPostgreSQLコンソールを入力します。psql次に、データベースユーザーのパスワード(この例では「appname」)を次のように設定します。\password希望のパスワードを入力して確認します。次のコマンドでPostgreSQLコンソールを終了します。\qこれで、適切なデータベース接続情報を使用してアプリケーションを構成する準備が整いました。Railsアプリケーションを準備する開発マシン、おそらくローカルコンピューターで、アプリケーションを展開する準備をします。オプション:Railsアプリケーションを作成する理想的には、デプロイしたいRailsアプリケーションがすでに存在します。この場合、このサブセクションをスキップして、それに沿って適切な置換を行うことができます。ない場合、最初のステップは新しいRailsアプリケーションを作成することです。これらのコマンドは、ホームディレクトリに「appname」という名前の新しいRailsアプリケーションを作成します。強調表示された「アプリ名」を別のものに置き換えてください。new次に、アプリケーションディレクトリに移動します。cdサンプルアプリの場合、scaffoldコントローラーを生成して、アプリケーションに表示するものを追加します。note:text次に、アプリケーションがgitリポジトリにあることを確認します。何らかの理由でアプリケーションがまだGitリポジトリにない場合は、初期化して最初のコミットを実行します。*開発マシン*で、アプリケーションのディレクトリに移動します。この例では、アプリは「appname」と呼ばれ、ホームディレクトリにあります。commit'次に、アプリケーションを調整して、実稼働PostgreSQLデータベースに接続する準備をします。データベース構成の更新*開発マシン*で、アプリケーションのディレクトリにまだ移動していない場合は変更します。この例では、アプリは「appname」と呼ばれ、ホームディレクトリにあります。cdここで、お気に入りのエディターでデータベース構成ファイルを開きます。*セクションを見つけ、それを本番データベースの接続情報に置き換えます。正確に設定された例を実行した場合、次のようになります(必要に応じて値を置き換えます)。これは、アプリケーションの本番環境がローカルホストの本番サーバーで「appname_production」というPostgreSQLデータベースを使用することを指定します。データベースのユーザー名とパスワードは環境変数に設定されていることに注意してください。これらは後でサーバー上で指定します。gemがまだ指定されていない場合は、ここで追加する必要があります。お気に入りのエディターでアプリケーションのGemfileを開きます。GemfileGemfileに次の行を追加します。'puma'end保存して終了。`gemを使用することを指定します。プーマを構成するPumaを構成する前に、サーバーのCPUコアの数を調べる必要があります。次のコマンドを使用すると、サーバー上で簡単に実行できます。テキストエディターでファイルを開きます。config/puma.rbこの構成をコピーしてファイルに貼り付けます。+`の数をサーバーのCPUコアの数に変更します。この例では、2つのコアがあることを前提としています。これにより、アプリケーションの場所と、ソケット、ログ、およびPIDの場所でPumaが構成されます。ファイルを自由に変更するか、必要な他のオプションを追加してください。最近の変更をコミットします。puma'次に進む前に、アプリの本番環境で使用される秘密鍵を生成します。SECRET_KEY_BASE`を設定します。initスクリプトを作成して、Pumaを簡単に起動および停止し、起動時に確実に起動できるようにします。Upstartツールをダウンロードします。+`ファイルを開いて、Pumaデプロイメントユーザーを設定します。+`を指定する2行を探し、「apps」を展開ユーザーとグループの名前に置き換えます。展開ユーザーが「展開」と呼ばれる場合、行は次のようになります。その下に次の行を追加し、PostgreSQLのユーザー名とパスワード、および以前に作成したrakeシークレットを必ず置き換えます。SECRET_KEY_BASE=''保存して終了。次に、スクリプトをUpstartサービスディレクトリにコピーします。そのインベントリファイルを作成して編集しましょう。+`で管理したいアプリケーションへのパスでなければなりません。ユーザーのホームディレクトリにある「appname」という名前のディレクトリにアプリケーションをデプロイします。この例では、次のようになります(アプリが存在する場所へのパスを必ず更新してください:/etc/puma.conf/home//保存して終了。これで、Upstartを使用して、起動時にアプリケーションが起動するように設定されました。これは、サーバーを再起動した後でもアプリケーションが起動することを意味します。アプリケーションをデプロイしていないため、まだ開始したくないことに注意してください。Nginxのインストールと構成アプリケーションがインターネットにアクセスできるようにするには、NginxをWebサーバーとして使用する必要があります。apt-getを使用してNginxをインストールします。nginx次に、デフォルトのサーバーブロックをテキストエディターで開きます。/etc/nginx/sites-available/defaultファイルの内容を次のコードブロックに置き換えます。10;}保存して終了。これにより、Nginxがリバースプロキシとして構成され、HTTPリクエストがUnixソケットを介してPumaアプリケーションサーバーに転送されます。必要に応じて自由に変更を加えてください。アプリケーションがまだサーバーに存在しないため、Nginxの再起動は今のところ控えています。次にアプリケーションを準備します。Remoteを準備する*本番サーバー*で、apt-getを使用してgitをインストールします。git次に、リモートリポジトリ用のディレクトリを作成します。「appname_production」というホームディレクトリにベアgitリポジトリを作成します。--bareこれはベアリポジトリであるため、作業ディレクトリはなく、従来のセットアップでは.gitにあるすべてのファイルはメインディレクトリ自体にあります。ポスト受信gitフックを作成する必要があります。pushを受信したときに実行されるスクリプトです。fidone以下の強調表示された値を必ず更新してください。+`コメントの間のコマンドを確認する必要があります。+)にプッシュされるたびに実行されるコマンドです。そのままにしておくと、サーバーはアプリケーションの実稼働環境に対して次のことを試みます。バンドラーを実行データベースを作成するデータベースを移行するアセットをプリコンパイルしますプーマを再起動Nginxを再起動します変更を加えるか、エラーチェックを追加する場合は、ここでそれを行ってください。受信後スクリプトの確認が完了したら、保存して終了します。次に、スクリプトを実行可能にします。+」を使用できるようにします(異なる場合は、ここにデプロイユーザー名を代入します)。+`コマンドを実行できます。デプロイユーザーがスーパーユーザー特権で実行できるコマンドを制限することに注意してください。少なくとも、SSHキー認証を使用し、パスワード認証を無効にする必要があります。Remoteを追加する実稼働サーバーですべての設定が完了したので、実稼働gitリモートをアプリケーションのリポジトリに追加しましょう。*開発マシン*で、アプリケーションのディレクトリにいることを確認します。+`を指す「production」という名前の新しいgitリモートを追加します。ユーザー名(展開)、サーバーIPアドレス、およびリモートリポジトリ名(appname_production)を置き換えます。pushでデプロイする準備が整いました。本番にデプロイするすべての準備が完了したら、次のgitコマンドを実行して、アプリケーションを運用サーバーに展開できます。masterこれは、先ほど作成した本番用のリモートにローカルマスターブランチをプッシュするだけです。+`フックスクリプトを実行します。すべてを正しくセットアップすると、アプリケーションは運用サーバーのパブリックIPアドレスで利用できるようになります。+`にアクセスして、次のように表示できるはずです。pushコマンドを実行して運用サーバーにデプロイできます。これだけでも、プロジェクトの全期間にわたって多くの時間を節約できます。このチュートリアルでは「受信後」フックについてのみ説明しましたが、展開プロセスの自動化を改善するのに役立つ他の種類のフックがいくつかあります。