Ruby on rails自動配置ツールMinaのsetup構成
5068 ワード
この2,3日ruby on railsのプロジェクトの配置を勉強していて、手に海外のvpsを持って個人のウェブサイトを作って、システムはcentos 7で、そこでネット上でいくつかの資料を調べてどのようにプロジェクトの配置をします.多くの記事では、Nginx+passenger+minaの使い方をお勧めします.Minaは自動的に配置されたスクリプトで、通常のプロジェクトがオンラインになっているような操作で、
インストール
gemファイルにminaを追加します.
コンフィギュレーション
基本パラメータの設定
mina setup
サーバが導入するディレクトリ構造は次のとおりです.
初期にサーバに対応するディレクトリ構造とファイルが確立されていないため、
minaが使用するタスクは
後で実行
正常に実行された情報が表示されます.
mina deploy
またmina deployのスクリプトは、ネット上で与えられた構成とほぼ一致しています.mina setupを実行する前にmina deployを実行すると、ディレクトリが存在しないことを示すメッセージが中断されるので、setup taskをセットしておく必要があります.
ブログ原文:http://www.zhuyuwei.cn/2018/m...
git
に基づいてローカルで開発されたプロジェクトをオンラインに公開し、異なるリリースを自動的にバックアップし、現在のバージョンを最新のバージョンに自動的に指向し、オンラインロールバックに役立ちます.くだらないことは言わないで、ネット上の関連する文章は多くの資料を調べることができて、私はネット上で提供したminaスクリプトに従って配置して、結果は各種の間違いが現れて、主に変数名が間違っていることを提示します.この時はMina公式ドキュメントが一番頼りになります.インストール
gemファイルにminaを追加します.
# Gemfile
gem 'mina'
bundle install
を運転し、取り付けを行います.コンフィギュレーション
mina init
を実行し、初期化プロファイルconfig/deploy.rb
が実行するタスクを生成してこのプロファイルを変更すればよい.基本パラメータの設定
set :application_name, 'demo'
set :domain, 'root@servername'
set :deploy_to, '/root/wwwroot/deploy'
set :repository, '[email protected]:virola/ror-events.git'
set :branch, 'master'
set :shared_paths, ['config/database.yml', 'config/application.yml', 'log', 'tmp/sockets', 'tmp/pids', 'public/uploads']
shared_paths
という変数は、共有するファイルとディレクトリがリストされており、配置後にcurrentにソフトチェーンがリンクされます.mina setup
サーバが導入するディレクトリ構造は次のとおりです.
/root/wwwroot/deploy/ # The deploy_to path
|- releases/ # Holds releases, one subdir per release
| |- 1/
| |- 2/
| |- 3/
| '- ...
|- shared/ # Holds files shared between releases
| |- logs/ # Log files are usually stored here
| `- ...
'- current/ # A symlink to the current release in releases/
初期にサーバに対応するディレクトリ構造とファイルが確立されていないため、
setup
taskを定義する必要があります.minaが使用するタスクは
rake
に合致するtaskで、以前はrakeについてあまり知らなかったので、ここではネット上で与えられた構成を使用すると多くの問題が発生しました.mina setup -v
で具体的な運行情報を見ることができ、#{deploy_to}
という変数が使用されているように認識されていないことがわかり、公式に与えられたtask exampleを調べると、command
コマンドと#{fetch(:deploy_to)}
コマンドが使用されていることがわかり、すべてこの変数に変更して試してみると、意外にも成功しました.task :setup do
# shared log
command %{mkdir -p "#{fetch(:shared_path)}/log"}
command %{chmod g+rx,u+rwx "#{fetch(:shared_path)}/log"}
# shared config
command %{mkdir -p "#{fetch(:shared_path)}/config"}
command %{chmod g+rx,u+rwx "#{fetch(:shared_path)}/config"}
command %{touch "#{fetch(:shared_path)}/config/database.yml"}
command %{touch "#{fetch(:shared_path)}/config/secrets.yml"}
# puma.rb puma
command %{mkdir -p "#{fetch(:deploy_to)}/shared/tmp/pids"}
command %{chmod g+rx,u+rwx "#{fetch(:deploy_to)}/shared/tmp/pids"}
command %{mkdir -p "#{fetch(:deploy_to)}/shared/tmp/sockets"}
command %{chmod g+rx,u+rwx "#{fetch(:deploy_to)}/shared/tmp/sockets"}
command %{touch "#{fetch(:deploy_to)}/shared/config/puma.rb"}
comment %{-----> Be sure to edit 'shared/config/puma.rb'.}
# tmp/sockets/puma.state
command %{touch "#{fetch(:deploy_to)}/shared/tmp/sockets/puma.state"}
comment %{-----> Be sure to edit 'shared/tmp/sockets/puma.state'.}
# log/puma.stdout.log
command %{touch "#{fetch(:deploy_to)}/shared/log/puma.stdout.log"}
comment %{-----> Be sure to edit 'shared/log/puma.stdout.log'.}
# log/puma.stdout.log
command %{touch "#{fetch(:deploy_to)}/shared/log/puma.stderr.log"}
comment %{-----> Be sure to edit 'shared/log/puma.stderr.log'.}
comment %{-----> Be sure to edit '#{fetch(:shared_path)}/config/database.yml'.}
end
後で実行
mina setup
正常に実行された情報が表示されます.
mina deploy
またmina deployのスクリプトは、ネット上で与えられた構成とほぼ一致しています.mina setupを実行する前にmina deployを実行すると、ディレクトリが存在しないことを示すメッセージが中断されるので、setup taskをセットしておく必要があります.
task :deploy do
# uncomment this line to make sure you pushed your local branch to the remote origin
# invoke :'git:ensure_pushed'
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'
invoke :'deploy:cleanup'
on :launch do
in_path(fetch(:current_path)) do
command %{mkdir -p tmp/}
command %{touch tmp/restart.txt}
end
end
on :clean do
command %{log "failed deployment"}
end
end
# you can use `run :local` to run tasks on local machine before of after the deploy scripts
# run(:local){ say 'done' }
end
ブログ原文:http://www.zhuyuwei.cn/2018/m...