LZH形式の圧縮ファイル
Microsoft 圧縮 (LZH 形式) フォルダは、エクスプローラ上で LZH 形式で圧縮されたファイルの表示や展開を行なう Microsoft Windows XP 用のアドオン
随机应变 ABCD: Always Be Coding and … : хороший
LZH形式の圧縮ファイル
Microsoft 圧縮 (LZH 形式) フォルダは、エクスプローラ上で LZH 形式で圧縮されたファイルの表示や展開を行なう Microsoft Windows XP 用のアドオン
cloud front
-> 負荷を分散させ、大量のリクエストに対する対策を実施、通信にかかるレイテンシ(遅延)を改善
Amazon CloudFrontは、Amazon Web Services(AWS)のCDN(コンテンツデリバリネットワーク)サービス
– コンテンツファイルをサーバーから直接配信せず、CDNを介してユーザーに配信
– コンテンツをCloudFrontから配信すると、サーバーへのアクセスを減らせます。動的コンテンツをキャッシュすれば、データベースの負荷軽減も可能
– コンテンツがキャッシュされている限り、ユーザーは安定したレスポンスを得られる
config/deploy/development.rb
role :app, %w{vagrant@locahost} role :web, %w{vagrant@locahost} role :db, %w{vagrant@locahost} server 'localhost', user: 'vagrant', roles: %w{web app} task :first_task do run_locally do execute "echo hello world" end end
[vagrant@localhost capistrano]$ cap development first_task
00:00 first_task
01 echo hello world
01 hello world
✔ 01 vagrant@localhost 0.026s
なんじゃこりゃーーーーーーーーーーーーーーーーーーーー?
はああああああああああああああ?
run_locally executeなので、localにログインらしい。。
ちょっとまてよ。なんだこれは。
git cloneは git init、リモートリポジトリの各種設定(※)、git pullを一気に実行
set :application, 'finalge_sample_app' set :repo_url, 'git@github.com:mumoshu/finagle_sample_app.git' task :update do run_locally do application = fetch :application if test "[ -d #{application} ]" execute "cd #{application}; git pull" end else execute "git clone #{fetch :repo_url} #{application}" end end end
task :archive => :update do run_locally do sbt_output = capture "cd #{fetch :application}; sbt pack-archive" sbt_output_without_escape_sequences = sbt_output.lines.map { |line| line.gsub(/\e\[\d{1,2}m/, '')}.join archive_relative_path = sbt_output_without_escape_sequences.match(/\[info\] Generating (?<archive_path>.+\.tar\.gz)\s*$/)[:archive_path] archive_name = archive_relative_path.match(/(?<archive_name>[^\/]+\.tar\.gz)$/)[:archive_name] archive_absolute_path = File.join(capture("cd #{fetch(:application)}; pwd").chomp, archive_relative_path) info archive_absolute_path info archive_name set :archive_absolute_path, archive_absolute_path set :archive_name, archive_name end end
task :deploy => :archive do archive_path = fetch :archive_absolute_path archive_name = fetch :archive_name release_path = File.join(fetch(:deploy_to), fetch(:application)) on roles(:web) do unless test "[ -d #{release_path} ]" execute "mkdir -p #{release_path}" end upload! archive_path, release_path execute "cd #{release_path}; tar -zxvf #{archive_name}" ここでアプリケーションの起動 end end
尋常じゃねー 差がありすぎて、追い付ける気が全くしねー
だいたいscalaなんて、全然やりこんでねーぞ。。。
capistranoの理解は若干進んだが、後退している気しかしねー
ステージ間共通の設定を書く
– アプリケーション名
– レポジトリ名
– 利用するSCM
– タスク
– それぞれのタスクで実行するコマンド
※SCMとは?
Software Configuration Management(ソフトウェア構成管理)の略。 ソフトウェア開発プロジェクトの成果物を管理する方法論。
set :repo_url, 'git@github.com:mumoshu/finagle_sample_app' fetch :repo_url
task
task: uptime do task somthing end
task :uptime do run_locally do localmachine command end on server do server command end end task :uptime do run_locally do localmachine command end on roles(:web) do server command end end
executeによるコマンド実行
task :uptime do run_locally do localmachine command execute "uptime" end on roles(:web) do server command execute "uptime" end end
caputerによるコマンド実行結果の取得
output = caputer “uptime”
infoによるログ出力
output = caputer “uptime”
info output
config/deploy/${stagename}.rb
-そのステージで作業対象サーバ
-そのステージだけで実行するタスク
ステージの意味がわからん。タスクのひとまとまりって解釈でOK?
作業対象サーバ例
-ホスト名、サーバーロール、ログインユーザ、SSH設定、その他、そのサーバに紐づく任意の設定
server 'localhost', user: 'vagrant', roles: %w{web}
localhostを対象に、webサーバーというロールを与え、vagrantでログインする
ディレクトリです
config/deploy/test.rb
-作業サーバの設定を行う
config/deploy.rb
-capistranoデフォルトタスクの消去
-タスク「ソースコードの取得」の定義
-タスク「ビルドとアーカイビング・パッケージング」の定義
-タスク「アプリケーションのビルドとインストール」「アプリケーションの起動と停止の定義」
うおーrubyの文法忘れた~
deploy.rb
framework_tasks = [:starting, :started, :updating, :updated, :publishing, :published, :finishing, :finished] framework_tasks.each do |t| Rake::Task["deploy:#{t}"].clear end Rake::Task[:deploy].clear
[vagrant@localhost capistrano]$ gem list
capistrano (3.11.0)
既に入ってますね。
cap installでインストールします。
[vagrant@localhost capistrano]$ cap install
mkdir -p config/deploy
create config/deploy.rb
create config/deploy/staging.rb
create config/deploy/production.rb
mkdir -p lib/capistrano/tasks
create Capfile
Capified
Ruby製の自動デプロイツール
デプロイ作業をコマンド数行で実行
Capistranoタスク自体は「コマンドを順番に実行する」だけ
覚えること
-Capistranoのモデル
-Capistranoのワークフロー
-Capistranoの設定ファイルの書き方
capistranoを理解する為に必要なこと
-Capistrano
-ライブラリ
-設定ファイル
-ホスト
Capistranoの要素
-capコマンド
-Capistranoのライブラリ
-デフォルトのデプロイタスク
ライブラリやデフォルトタスクを利用して設定ファイルを記述し、capコマンドで事項する。
ライブラリ
Capistranoはフレームワークでライブラリを利用できる。具体的には以下。
-Rubyライブラリ
-Capistrano拡張
設定ファイル
一度だけ使う設定はライブラリではなく、設定ファイルに記述する。
– config/deploy.rb
– config/deploy/任意のステージ名.rb
ホスト
デプロイにあたって、実行する対象マシンは「ローカルマシン」と「サーバー」の二つ
Capistranoのワークフロー
– capitstranoインストール
– 設定ファイルのひな形をつくる
– 設定ファイルのカスタマイズ
– capコマンドを実行
primary keyとは
-> 他のカラムと重複不可、nullも不可
-> ユーザーIDなどによく使われる
サンプル
CREATE TABLE テーブル名 ( カラム1 型情報 NOT NULL PRIMARY KEY, カラム2 型情報 );