開発者ドキュメント

How To Deploy With Mina: Getting Started

ステータス:非推奨

この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。

理由: CentOS 6は2020年11月30日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このため、このガイドは維持されなくなりました。

代わりに参照:このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。

序章


簡単な検索でわかるように、毎日実行するアクションの一部を容易にする方法を探している場合は、利用できるツールがいくつかあります。 それらをチェックすると、それらすべてがアプリケーションをオンラインにする手順を実行すると主張していることがわかります(つまり、 それを展開する)あなたにとってより簡単です。 ただし、それらは互いにほとんど違いがなく、使用も非常に複雑になる可能性があります。

Mina デプロイヤーと自動化ツールは、他のツールと同じように見えるかもしれませんが、実際には非常に特別です。 このDigitalOceanの記事では、 RAKE 上に構築されたBashスクリプトジェネレーターとリモート実行ツールであるMinaを使用して、プロセスの管理から実際のアプリケーションのデプロイまで、リモートサーバータスクを自動化する別の方法を学習します。 。

用語集


1. ミナとレーキを理解する


  1. Mina Deployer And Automation Tool
  2. RAKE-Ruby Make

2. ミナを取得


  1. システムの準備
  2. Ruby環境とRailsのセットアップ
  3. ミナのインストール

3. ミナの使用を開始する


  1. ミナを開始する
  2. DeploymentServerでのDeployerユーザーの作成

4. config/deploy.rbの操作


  1. サーバーの定義
  2. アプリケーションのデプロイ
  3. 展開タスクの定義
  4. タスクとサブタスクの操作

5. 例:Railsアプリケーションのデプロイ


ミナとレーキを理解する


幸いなことに、ミナの背後には「ロケット科学」はありません。 通常はデプロイメントに関連するリモートタスクの実行を自動化するのに役立つRuby/RAKEツールを使用するのは非常に簡単です。

Mina Deployer And Automation Tool


MinaはRubyベースのツールです。 日常の操作を容易にするために、実行するタスクのリストを名前の下にグループ化したスクリプトを作成するのに役立ちます。 Minaは、これらのRAKEベースのプログラミングファイルをBashスクリプトに変換し、定義されたリモートサーバーに接続して、それらを実行します。

サーバーに接続してBashプログラムを実行するだけなので、実際にはかなり高速で、おそらくそのジャンルのツールと同じくらい高速です。

ミナを批判し、原始的と呼ぶ人もいますが、その優れた機能(例: タスクのキューイング、非常に便利です!)非常にスムーズに、問題なく、非常に高速に多くのことを実行できます。

ミナだけでなく、そのようなツール全般についての理解を深めるために、ここでできることと、ミナがいつ役立つかについての短いリストを示します。

Minaのdeploy.rbスクリプトは、実際にはグループ化されたタスクの束を含むRAKEファイルです。 すべてがRubyで記述されており、他の種類の構成を処理する必要はありません。二度と使用することのない新しいものに精通する必要はありません。

RAKE-Ruby Make


Web開発者、プログラマー、および科学やコンピューターを扱う人は、使用するツールをよく理解している必要があります。 ミナの場合、魔法はRAKEから来ています。

しかし、RAKEとは何ですか?

RAKEは、 GNU Make と性質が似ている一連のコンポーネント、ツール、および定義です。 Makeは、最も普及していて人気のあるユーティリティの1つであり、1970年代後半に導入されて以来Unixシステムに組み込まれています。 システムに依存しない性質と、コマンドと命令を1つのファイルに結合する機能(「makefiles」と呼ばれる)で非常に人気がありました。 これらのファイルとツールとしてのMakeは、アプリケーションの構築に使用されます(つまり、 ソースコードをコンパイルし、実行可能バイナリを生成します)。

Rakeは、ビルド言語と呼ばれることがあります。 これは、コマンドラインで実行される構造化された方法でタスクを簡単に定義するために使用されます。 本質的に、これらのコマンドは通常、アプリケーションの展開やサーバーの管理など、システム管理に関連しています。 このRakeの構造は、Rubyで記述されたドメイン固有言語と呼ばれ、すべてが境界内で特定の方法で定義および設定されます。 前述のように、その操作は通常、何かの構築に関連しているため、ビルドツールと呼ばれます(例: ライブラリ、アプリケーションなど)

RAKEはRubyGemsから入手できます。

RAKEプロジェクトの公式ページにアクセスするには、ここをクリックをクリックしてください。 RAKEの詳細については、このテーマに関するこの優れた詳細な記事Rakeビルド言語の使用を確認してください。

ミナを取得


Minaを使用する場合は、gemなど、必要な依存関係がインストールされ、正常に動作している安定したRuby環境を用意する必要があります。

このセクションでは、CentOS6システムでRuby環境を作成することから始めます。 そこから、Minaを使用してデプロイメントサーバーでの手順を自動化できるようになります。

システムの準備


Rubyをインストールするには、まず、最小限の出荷のCentOSサーバーを準備する必要があります。

次のコマンドを実行して、CentOSベースのVPSのデフォルトツールを更新します。

yum -y update

# This command will update all the base applications
# that come with CentOS by default. Which are mostly
# reserved for use by the operating system. 

次のコマンドを実行して、開発ツールを含むバンドルをインストールします。

yum groupinstall -y 'development tools'

# With more recent versions of CentOS, such as 6.5 in our case,
# you can simply run:
# yum groupinstall -y development
# instead.

# This bundle of applications contains various tools
# Such as: gcc, make, automake, binutils, git etc.

便利なライブラリとパッケージの一部(例: libyaml-devel、nginxなど)は、公式のCentOSリポジトリ内に見つかりません。 物事を単純化し、手動でインストールする必要がないように、YUMパッケージマネージャーが使用するEPELソフトウェアリポジトリを追加します。 これにより、追加のソフトウェアを簡単にダウンロードできるようになります。

# Enable EPEL Repository
sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'

# Update everything, once more.
yum -y update

最後に、このチュートリアル用にcurl-develと他のいくつかのツールとライブラリを入手する必要があります(例: Railsにはsqlite-develが必要です)。

それらをインストールするには、以下を実行します。

yum install -y curl-devel nano sqlite-devel libyaml-devel

Ruby環境とRailsのセットアップ


注:このセクションは、専用の記事 CentOS6.5にRuby2.1.0をインストールする方法の要約です。

Rubyバージョンマネージャー(RVM)を使用して、Rubyインタープリターをダウンロードしてインストールします。

次の2つのコマンドを実行して、RVMをインストールし、Rubyのシステム環境を作成します。

curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

最後に、システムへのRubyのインストールを完了するために、RVMにRubyバージョン2.1.0をダウンロードしてインストールさせましょう。

rvm reload
rvm install 2.1.0

Railsが機能するには、何よりもまずJavaScriptインタープリターが必要なので、Node.jsもセットアップする必要があります。 この目的のために、デフォルトのシステムパッケージマネージャーYUMを使用します。

次のコマンドを実行して、yumを使用してnodejsをダウンロードしてインストールします。

yum install -y nodejs

次のコマンドを実行して、gemを使用してレールをダウンロードしてインストールします。

gem install bundler rails

ミナのインストール


ミナをダウンロードする方法はいくつかあります。 最も簡単な方法は、RubyGemsを使用することです。

以下を実行して、Minaをダウンロードしてインストールします。

gem install mina

ミナの使用を開始する


minaをプロジェクトに導入する場合、最初に必要なことは、プロジェクトディレクトリ内でminaを開始することです。

その後、Minaによって作成されたconfig/deploy.rbを編集して、実行するサーバーとタスクを定義できます。

ミナを開始する


プロジェクトディレクトリに入り、次のコマンドを実行します。

# Enter your project directory:
cd ~/project_dir

# Initiate Mina
mina init

# -----> Created ./config/deploy.rb
#        Edit this file, then run `mina setup` after.

DeploymentServerでのDeployerユーザーの作成


Minaによって使用および呼び出されるデプロイメントのアクションを実行するために、root以外のユーザーを作成することは正しい選択です。 この目的のために、リモートホストでdeployerユーザーを作成しましょう。

新しいシステムユーザーを作成します。

adduser deployer

デプロイヤのパスワードを設定します。

passwd deployer

# Enter a password
# Confirm the password

テキストエディタnanoを使用して/etc/sudoersを編集します。

nano /etc/sudoers

ファイルを下にスクロールして、rootが定義されている場所を見つけます。

..

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)	ALL

..

root ALL =(ALL)ALLの直後に次を追加します。

deployer ALL=(ALL) ALL

/etc/sudoersファイルのこのセクションは次のようになります。

..

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root     ALL=(ALL)	ALL
deployer ALL=(ALL) ALL

..

CTRL + Xを押し、Yで確定して保存して終了します。

config/deploy.rbの操作


次に、Minaによって作成されたdeploy.rbファイルを開いて、デプロイメントサーバーを定義し、タスクを設定します。

nano config/deploy.rb

サーバーの定義


最初のステップは、:domain行を編集して、サーバーのアドレスを設定することです。

仮想サーバーの構成に一致するように、関連する構成を見つけて修正します。

# Basic settings:
#   domain	 - The hostname to SSH to.
#   deploy_to    - Path to deploy into.
#   repository   - Git repo to clone from. (needed by mina/git)
#   branch	 - Branch name to deploy. (needed by mina/git)

# Default:
# set :domain, 'foobar.com'

# Change the default to match your server's address
# Example:
set :domain, 'server.domain.tld'
# or
# set :domain, '162.243.74.190'

# Optional settings:
#   set :user, 'foobar'    # Username in the server to SSH to.
#   set :port, '30000'     # SSH port number.

set :user, 'deployer'
set :port, '22'

アプリケーションのデプロイ


Minaを使用すると、Githubなどの中央のホストされたリポジトリからアプリケーションを簡単にデプロイできます。 前のセクションで説明したように、これはdeploy_toおよびrepositoryパラメーター、および必要に応じてbranchを設定することで実現できます。

例:

# Application's deployment location on the remote server
# Example:
set :deploy_to, '/var/www/my_app'

set :repository, 'git://...'
set :branch, 'master'

展開タスクの定義


Minaのdeploy.rbファイルには、Rails formina deployコマンドを対象としたいくつかのサンプルタスクセットが付属しています。

例:

desc "Deploys the current version to the server."
task :deploy => :environment do
  deploy do
    # Put things that will set up an empty directory into a fully set-up
    # instance of your project.
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'
    invoke :'bundle:install'
    invoke :'rails:db_migrate'
    invoke :'rails:assets_precompile'

    to :launch do
      queue "touch #{deploy_to}/tmp/restart.txt"
    end
  end
end

タスクとサブタスクの操作


Minaを使用してタスクを定義およびチェーンできます。これは、多くのシナリオで非常に便利です。

以下は、タスクを操作し、公式ドキュメントからそれらをチェーンする例です。

task :down do
  invoke :maintenance_on
  invoke :restart
end

task :maintenance_on
  queue 'touch maintenance.txt'
end

task :restart
  queue 'sudo service restart apache'
end

例:Railsアプリケーションのデプロイ


実際のRailsアプリケーションをデプロイする方法と、それに応じてdeploy.rbを操作する方法については、DigitalOceanコミュニティの記事セクションのMinaを使用してRubyonRailsアプリケーションをデプロイする方法を確認してください。

注:同じプリンシパルを使用して、Minaで任意のタイプのアプリケーションをデプロイできます。

投稿者: https ://twitter.com/ostezer
モバイルバージョンを終了