第2章 API Deployment On Microsoft Azure
API はプラットフォームに依存しないため、任意のプラットフォームにデプロイできます。このチュートリアルでは、Microsoft Azure での高速 Web API デプロイメントです。Ruby Grape gem を使用して、API インターフェース、NGINX プロキシー、シンサーバー、および Capistrano を使用してデプロイします。
本チュートリアルでは、サードパーティーサーバーで実行中の Ruby ベースの API を使用するか、Echo-API のクローンを作成することができます。
2.1. Microsoft Azure 仮想マシンの作成および設定 リンクのコピーリンクがクリップボードにコピーされました!
SSH を Azure 仮想マシンに 2048 ビットの RSA キーペアを使って X509 証明書を生成します。これは、仮想マシンを設定する場合に役立ちます。
このタイプのキーを生成するには、次のコマンドを実行します。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout myPrivateKey.key -out myCert.pem
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout myPrivateKey.key -out myCert.pem
次に、Microsoft Azure アカウントを作成して開始します。このチュートリアルでは、無料トライアルオプションを使用できます。Azure アカウントの作成後に、Virtual Machines タブの Dashboard に移動します。次は、最初の仮想マシンを作成するガイドです。from gallery オプションを選択し、Ubuntu Server 12.04 LTS を選択します。
ステップ 2 では、前のステップで作成した pem をアップロードできます。
手順 3 および 4 で、ニーズに最も適したオプションを選択します。
仮想マシンの準備が整うまでに数分かかります。その場合には、そのダッシュボードにアクセスできます。このダッシュボードでは、仮想マシンのアクティビティー(CPU、ディスク、ネットワーク)を監視し、そのサイズをアップグレードできます。
仮想マシンにはいくつかのパッケージがインストールされるため、他のコンポーネントをインストールする必要があります。キーが作成されると、仮想マシンに ssh を実行できます。
ssh -i myPrivateKey.key -p 22 username@servicename.cloudapp.net
ssh -i myPrivateKey.key -p 22 username@servicename.cloudapp.net
仮想マシンで以下のコマンドを実行し、必要なものをすべてインストールします。
sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y install ruby1.9.3 build-essential libsqlite3-dev libpcre3 libpcre3-dev libssl-dev openssl libreadline6 libreadline6-dev libxml2-dev libxslt1-dev
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install ruby1.9.3 build-essential libsqlite3-dev libpcre3 libpcre3-dev libssl-dev openssl libreadline6 libreadline6-dev libxml2-dev libxslt1-dev
以下を実行して Ruby インストールが完了していることを確認できます。
ruby -v
ruby -v
ruby 1.9.3p194(2012-04-20 リビジョン 35410)[x86_64-linux] などの出力が表示されるはずです。
bundler および thin をインストールする必要もあります。
sudo gem install bundler sudo gem install thin
sudo gem install bundler
sudo gem install thin
ここでは、仮想マシン上で必要なすべてのものが存在するはずです。Dashboard に戻り、Endpoints タブをクリックします。ポート 80 に HTTP エンドポイントを追加し、フィールドは自動的に入力する必要があります。