How To Deploy With Mina: Getting Started
ステータス:非推奨
この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。
理由:
代わりに参照:このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。
序章
簡単な検索でわかるように、毎日実行するアクションの一部を容易にする方法を探している場合は、利用できるツールがいくつかあります。 それらをチェックすると、それらすべてがアプリケーションをオンラインにする手順を実行すると主張していることがわかります(つまり、 それを展開する)あなたにとってより簡単です。 ただし、それらは互いにほとんど違いがなく、使用も非常に複雑になる可能性があります。
Mina デプロイヤーと自動化ツールは、他のツールと同じように見えるかもしれませんが、実際には非常に特別です。 このDigitalOceanの記事では、 RAKE 上に構築されたBashスクリプトジェネレーターとリモート実行ツールであるMinaを使用して、プロセスの管理から実際のアプリケーションのデプロイまで、リモートサーバータスクを自動化する別の方法を学習します。 。
用語集
1. ミナとレーキを理解する
- Mina Deployer And Automation Tool
- RAKE-Ruby Make
2. ミナを取得
- システムの準備
- Ruby環境とRailsのセットアップ
- ミナのインストール
3. ミナの使用を開始する
- ミナを開始する
- DeploymentServerでのDeployerユーザーの作成
4. config/deploy.rbの操作
- サーバーの定義
- アプリケーションのデプロイ
- 展開タスクの定義
- タスクとサブタスクの操作
5. 例:Railsアプリケーションのデプロイ
ミナとレーキを理解する
幸いなことに、ミナの背後には「ロケット科学」はありません。 通常はデプロイメントに関連するリモートタスクの実行を自動化するのに役立つRuby/RAKEツールを使用するのは非常に簡単です。
Mina Deployer And Automation Tool
MinaはRubyベースのツールです。 日常の操作を容易にするために、実行するタスクのリストを名前の下にグループ化したスクリプトを作成するのに役立ちます。 Minaは、これらのRAKEベースのプログラミングファイルをBashスクリプトに変換し、定義されたリモートサーバーに接続して、それらを実行します。
サーバーに接続してBashプログラムを実行するだけなので、実際にはかなり高速で、おそらくそのジャンルのツールと同じくらい高速です。
ミナを批判し、原始的と呼ぶ人もいますが、その優れた機能(例: タスクのキューイング、非常に便利です!)非常にスムーズに、問題なく、非常に高速に多くのことを実行できます。
ミナだけでなく、そのようなツール全般についての理解を深めるために、ここでできることと、ミナがいつ役立つかについての短いリストを示します。
-
サーバーの準備とセットアップ:仮想サーバーの作成と破棄を繰り返し行う必要がある場合は、それらのセットアップに多くの時間を費やすことになります。 Minaを使用すると、プロセスを自動化できます。
-
アプリケーションのデプロイ: HTTPサーバーアプリケーションを配置しているかどうかに関係なく、Minaを使用して、デプロイメントマシン上のアプリケーションのソースコードを更新し、FTPを処理せずに新しいバージョンを自動的に起動して実行できます。または他のツール。
-
プロセスの管理:これは非常に一般的に聞こえますが、アプリケーションサーバー、プロキシ、または一般的なNginxフロントなどのサーバーで実行されているプロセスを管理する必要がある回数(おそらく1日あたり)を想像してみてください-リバースプロキシに面しています。 ミナのタスクを使用すると、これを容易にし、かなりの勢いを得ることができます-すべてを同時に整理しておくことができます。
-
Railsのない世界に住む:Minaは、Railsに厳密に依存したり、依存したり、忠誠を誓ったりすることなく、上記のすべてを実行できます。 Minaを使用すると、ほとんどすべてをデプロイできます。
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で任意のタイプのアプリケーションをデプロイできます。