SNSでシェアする

Railsアプリを超簡単にデプロイできる「Sqale」でアカウント取得からデプロイまで徹底解説

SNSでシェアする

スポンサーリンク
 
是非購読クリックお願いします☆

sqale

今回は、Ruby on Railsでサーバーにアップロード(デプロイ)を超簡単にできる「Sqale」について、誰でも簡単にアカウント取得からデプロイまで出来るように記事にしました。

Ruby on Railsで作成したアプリのデプロイで詰まっている方がいらっしゃれば、参考にしていただければと思います。

Ruby on Railsは他のフレームワークよりも比較的扱いやすい事でも有名で、
日本でも人気の高いフレームワークの一つです。(以下よりrailsといいます)

そんなrailsですが、アプリを作るのは比較的簡単でもその後に弊害が待っています。

それはなんと言っても、、、
デプロイ時の知識の壁の高さがハンパじゃない!ってことですね。
(とにかくrailsはデプロイがむずいです)

「ローカル環境でアプリも出来たし、さぁデプロイしよう!」
とサーバーを探しても、難しそうなサーバーばかり。。

railsに対応しているいわゆる“レンタルサーバー”がほぼ無いんですね。。
(てかあるの?ってぐらい)

ワードプレスのようなPHP言語だとレンタルサーバーが豊富なのですが、railsに対応しているものは本当に少ないです。

経験ある方はわかると思うんですが、ワードプレスなんてサーバーの知識が無くても参考サイトが腐るほどあるので、それ見ながらやれば一時間もあれば本番環境にアップロードできます。

いざrailsになると、、、「なになに!? クラウド!? VPS!? AWS!? ファ!?」

と、ワードプレスのデプロイとはかけ離れた領域の知識が必要であることがわかります。

「せっかくrailsを勉強してアプリを作れるようになったのに、
 今度はサーバーも勉強しないといけないの・・・!? カンベンしてよ・・・」

と、落胆された方も少なくないはず。(私がそうでした)

そして、railsアプリをデプロイするための参考サイトも少ないんですよね。。

あったとしても、ある程度の知識がある前提の記事がほとんどです。
(いやいや、そこ何言ってるかワカラナイヨ・・・みたいな)

実際に僕はAWSにデプロイしたことがあるんですが、
勉強+デプロイ完了まで二週間程度かかりました。(ちょっとかかりすぎですけどね…笑)

しかも、運用コストがくそ高い!!
スペックはさすがに良いですが、そんな良いスペック必要ないよって方には割高だと思います。

(ちなみにAWSでデプロイは難しいですが、知識として覚えておいて決して損はないです)

スポンサーリンク

そんな時に見つけたサービスが「Sqale」というサーバー

感覚としては、「heroku」と「AWS」の間って感じですかね。(個人的な感想です)

しかもこのSqale、割とスペックも良いみたいです。

railsアプリなら、Webサーバーには「Nginx」、Rackサーバーには「Unicorn」を使っていてハイスペックな仕様となっています。(別にここを無理に理解する必要はないです)

しかも、gitまたはSFTPのどちらかお好みの方法で公開(デプロイ)できます。

gitが苦手な方でもCyberduckのようなSFTPツールを使ってドラックアンドドロップでデプロイできるのは嬉しいですね。

そして、なんと言っても、デプロイまでのサポートが手厚い。

このブログでわざわざ説明しなくてもSqaleのホームページにサポートページがあるので、それ通りにやればデプロイできちゃいます。
(ちなみに更にわかりやすいように当ブログでは解説していきます)

あと、レスポンスは若干遅いですが、ちゃんとサポートのメールでも色々と教えてくれます。(返信まで大体2~3日程度)

そして、なんと言っても運用コストが安い!
月額940円(H28.4.5現在)で利用することができます。

さらにアクセスが増えてくれば好きな時にリソースを追加してパフォーマンスをアップできるのも安心ですね。

通常のレンタルサーバーでは、こんな簡単にスペックを拡張できないですよね。
サーバーを乗り換える必要がありました。

そんな素晴らしいサービス「Sqale」でデプロイまでをご説明していきましょう。

前置きがめちゃくちゃ長くなってしまいました。。すいません。。

それでは本題へと進めていきます。

「Sqale」でrailsアプリをデプロイ(公開)しよう!!

まずは「Sqale」でアカウントを取得しましょう。

ちなみに15日間の無料お試し期間がありますので、
気に入らなかったら無料のまま辞退できます。

https://sqale.jp/signup

こんな画面になると思うので、情報を入力しアカウントを取得します。
sqale

TwitterやFacebook、githubといったSNSからもサインアップできるようですね。

アカウントを登録したらメールが来ると思うのでちゃんとIDとPASSはメモしておきましょう。

作業環境

今回ご紹介する方法での環境は以下の通りです。

PC環境:Mac
デプロイ方法:git
データベース:Mysql

また今回の方法では、github等で管理しているrailsアプリがすでに存在していることが前提です。

既存のrailsのアプリをこれからSqaleでデプロイする方法になります。

SFTPでデプロイする方法は今回ご紹介しておりません。
SFTPでデプロイしたいという方はこちらのサポートを参考にしてください。

まず最初にアプリケーションを作成する必要があります

Sqaleにログインして左メニューの「ダッシュボード」「新しいアプリケーションを作成」をクリックしてアプリケーションを登録します。
sqale2

アプリケーション名はご自身で管理しやすいように適切な名前にしておきましょう。
sqale3

すると以下のような画面になると思うので、
このページで30秒程度経過したらページをリロード(更新)します。
sqale4

そうすると以下のような画面になったかと思います。

後述しますが、まずは公開鍵の設定をしていきます。
sqale5

モザイクが入っている箇所はユーザー名になっているかと思います。

これがサイトのURLになるのですが、
後で独自ドメインを割り当てるので特に今ここは気にしなくて大丈夫です。

上の画像のように「公開鍵の設定」というリンクをクリックしてください。

ここから、ちょっと作業が必要になっていくので説明をしていきます。

Sqaleに公開鍵の設定をする

まず最初に公開鍵の設定をしていきます。

公開鍵とは?
http://e-words.jp/w/%E5%85%AC%E9%96%8B%E9%8D%B5.html

はい。なんか難しいですね。笑

まぁ簡単に言うと、ご自身で一対の鍵の組を持っていて、ご自身と特定のサービスを紐付けるものという感じでしょうか。

鍵には「公開鍵」「秘密鍵」というものがあって、一対になっているわけなんですね。

この一対になっている鍵はご本人しか持っていないはずなので、ちゃんと本人の証明書となり紐付いてくれるわけなんですね。

githubなどでもアカウントの紐付けに公開鍵は使うので設定の経験がある方はこの章は省略してください。

この鍵を使って、ご自身のPCとSqaleを本人の証明として紐付けるわけなんですね。

今回はMacの公開鍵を作って設定していきます。

この公開鍵の設定の方法はSqaleのサポートページが本当にわかりやすいので省略します。
https://sqale.jp/support/manual/public-keys-mac

ちなみに、「Sqaleのウェブサイトから秘密鍵をダウンロードして利用する方法」という方法でもやってみたのですが、なぜかうまくいきませんでした。。

多分、私の方法がどこか間違っていたのでしょうね。。
(ですので今回はMacの公開鍵で設定しました)

公開鍵の設定が終わったら次に進みます。

設定した「公開鍵」と「秘密鍵」を利用してSqaleにSSH接続する

ここからは先ほど作った鍵を使って、Sqaleに接続していきます。

以下のコマンドをターミナル(シェル)のホームディレクトリで実行します。

アプリケーションが一つだけの場合、コンテナに直接ログインするそうです。

今回の場合、一つしかアプリケーションは無い前提なので特に気にしなくて大丈夫です。

以下のようになっていれば接続は成功しています。
※多少表示が違っていても問題ありません。

アプリ名、ユーザー名と書いてある箇所は、Sqaleで設定したご自身の名称が入ります。



この時に以下のようになっていると設定が間違っているので注意してください。

↓パスワードを求められるケース↓

これは公開鍵の紐付けができていません。

もう一度以下の方法で設定しましょう。
https://sqale.jp/support/manual/public-keys-mac



↓公開鍵のパーミッション(権限)設定が間違っているケース↓

これはパーミッションの設定がおかしいので、
以下のコマンドをターミナルに打ち込み、再度接続し直してください。

Sqaleにrailsアプリをアップロードする(git)

接続が成功したら、いよいよrailsアプリをアップロードしていきます。

今回はgitでアップロードするのでデプロイ設定を「Git」に変更しておきます。
https://sqale.jp/settings/account

sqale6
Sqaleではこの設定をして、設定通りにデプロイしないとエラーになるようです。

いよいよSqaleにrailsアプリをアップロードする訳ですが、
大きく分けて2種類の方法があります。

  • ローカルからSqaleにpushする方法
  • GithubやBitbucketのようなサービスからSqaleにpullする方法

この二つの方法を順にご説明していきます。

以下の「ローカルからSqaleにpushする方法」の中に共通した作業内容がありますので、
こちらの章は必ず確認してください。

ローカルからSqaleにpushする方法

ローカル(自分のPC)からSqaleのリポジトリにpushするので、push先にSqaleを追加する必要があります。

以下のコマンドでpush先を追加できます。

Sqaleのユーザー名が「tanaka」で、
「test」というアプリケーション名だと以下のようになります。

また、ローカルでは「test-app」というアプリ名になっていると仮定します。

これでpush先の指定ができました。

gemfileをSqale用に変更する

以下のようになっていれば大丈夫です。

Gemfileを更新してコミットしましょう。

config/database.ymlの記述をSqale用に変更する

以下の通りに画面を進めてください。

Sqaleのダッシュボード > アプリケーション一覧 > アプリ名
の順にクリックすると詳細ページに移動します。
sqale7

データベース接続情報をクリックして詳細を確認します。
sqale8

以下のような画面になったら、「Railsのdatabase.yaml形式でコピー」の所の右側にあるアイコンをクリックします。(情報がコピーされる)
sqale9

以下はお手元のrailsアプリでの作業になります。

railsのdatabase.ymlというファイルを開きます。
config/database.ymlの中の「production:」の箇所の記述を以下のように書き換えます。

以下からはターミナル(シェル)での作業です。
変更を保存してコミットして、Sqaleにpushします。

※sqaleのアプリ名がtestの場合「$ git push test master」となります。

続いてSqaleにログインして、データベースのセッティングをします。

アプリケーションを再起動する。



最後にSqaleのダッシュボードに戻って以下のURLをクリックして、
ちゃんと表示されるか確認してみましょう。
sqale7

このURLをクリックして、ご自身のアプリが表示されていれば成功です!
sqale10

ちなみに、これがサイトのURLになるのですが、後述しますがドメイン管理会社でCNAMEレコードを作成すると独自ドメインを割り当てることもできます。

はい。これでデプロイは完了しました。

「えっ!?マジ!?」と驚かれる方もいらっしゃるかもしれません。

こんな簡単にデプロイができちゃうんですね〜(感動)

ちなみにローカルからpushするというのではなく、
gitからpullしたいって方は以下の方法で進めてください!

ちなみにmysqlの設定などは、両方同じなのでこちらの章の前述した
上記の「gemfileをSqale用に変更する」の箇所から以下を進めて下さい。

GitからSqaleにpullする方法

こちらの方法が一般的かと思います。

複数人でプロジェクトを管理している時はこの方法をお勧めしますし、
個人的にもこちらの方法がいいと思います。

まずはSqaleのコンテナにログインします。

アプリケーションは「current」というディレクトリ以下に配置されるようです。
currentにcdコマンドで移動しましょう。

このcurrentというディレクトリにgitで管理しているアプリをクローンしましょう。

githubやbitbucketで管理しているリポジトリまで行って、
以下の箇所をコピーしてください。

githubの場合
github

bitbucketの場合
bitbucket

コピーしたら、以下のコマンドでクローンしましょう。

例として、「tanaka』というユーザーの
「test」というリポジトリをクローンした時を想定すると以下のようになります。

(githubの場合)

(githubのsshの場合)

(bitbucketの場合)

(bitbucketのsshの場合)

あとは、bundle installしてrake db:migrateすれば大丈夫です。

このように、通常はGitからpullする方法が一般的な気がしますね。

いかがでしたでしょうか?

すごく簡単にデプロイできたかと思います!

最後に、独自ドメインの割り当て方法をご説明していきます。

Sqaleでデプロイしたアプリに独自ドメインを設定する方法

今回、ここでご説明するドメイン会社は「お名前.com」になります。

他のドメイン会社でもやる事は同じなのでご参考いただければと思います。

Sqaleでは「CNAMEレコード」というものをドメイン管理会社側で設定してあげる事で独自ドメインの割り当てが可能になります。

「CNAMEレコード」とは!?
http://help.onamae.com/app/answers/detail/a_id/7909

要は、Scaleで生成されたアプリケーションのURLに独自ドメインを別名として登録して、独自ドメインがアクセスされるとアプリケーションURLの内容が呼び出されるということ、みたいです。

まぁ、そこまで深く理解する必要なんてない気もしますが。(性格が出た)

以下の手順で進めてみてください。

アプリ名をクリックして詳細ページに移動します。
sqale7

移動したら、上のタブで「独自ドメイン管理」というところをクリックして、以下のように取得したドメイン(例:test.com)+wwwのようなホスト名を入れて入力します。
sqale11

後述しますが、Sqaleでは原則的に「sample.net」や「test.com」のようなAレコードに対して独自ドメインを設定することが仕様としてできないようです。

ですので、「test.com」というようなドメインを取得したと仮定すると「www.test.com」というようなホスト名付きのドメインを入力してください。

「登録する」をクリックした後、以下のようになっていれば大丈夫です。
sqale12

ちなみに、参照先のURLは後で「お名前.com」のようなドメイン管理会社で設定のために使うのでメモしておいてください。

以下から、Sqaleでの作業ではなくドメイン管理会社側の作業になります。

「CNAMEレコード」なるものをお名前.comに追加する

お名前ドットコムにログイン後、上のタブの「ドメイン設定」を選択し、「DNS関連機能設定」をクリック、次のページで任意のドメインを選択し「次に進む」をクリック、次ページで「DNSレコード設定を利用する」「設定する」ボタンをクリックして進んでください。

「ドメイン設定」 > 「DNS関連機能設定」 > 「DNSレコード設定を利用する」 > 「設定する」という流れになります。

onamae

「設定する」をクリックすると、以下の画面に移動しますので、
「入力」の項目からCNAMEレコードを追加していきます。

以下の画像を参考にして追加してください。

①ホスト名の入力は必須なので「www」のような任意のホスト名を入力します。
②TYPEはプルダウンで「CNAME」を選択します。
③VALUEはSqaleの「ドメイン管理」 > 「CNAME レコードに設定する参照先」のURLを入力します。
④その他はそのままで大丈夫ですので「追加」をクリックします。
onamae2

Sqaleの「ドメイン管理」 > 「CNAME レコードに設定する参照先」
onamae3

入力後はページ下の「確認画面に進む」というボタンから設定内容の確認を行い、
変更を確定させれば完了です。

ここで変更を確定させないと、
いつまで経っても反映されないので忘れないようにしておきましょう。
onamae4

独自ドメインが反映されるまでに数時間程時間かかるので、それまでお待ち下さい。

設定した「http://www.test.com」のようなURLにアクセスして、
サイトが表示されていれば完成です!

これで独自ドメインの設定は以上になります。

お疲れ様でした!!

簡単に設定できたのではないかと思います。

それでは最後に、Sqaleのメリットとデメリットについて書いておこうと思います。

Sqaleのメリットとデメリットについて

Sqaleのメリットについて

ここまで作業してきて感じたと思うんですが、
Sqaleを利用する最大のメリットは、この手軽さにあります。

私も初めはこんな簡単にデプロイできるなんて思ってもみませんでした。

railsアプリをパパッとデプロイするには本当に使いやすいサービスだなと感じています。

あとは、スペックですかね!
月額940円で必要充分なスペックを兼ね備えています。

万が一スペックを拡張したい場合にも、
簡単にアップグレードできる点も大きなメリットの一つだと思います。

Sqaleのデメリットについて

ここまで褒めに褒めまくっているSqaleなのですが、
その反面デメリットも少々あるように感じます。

最大のデメリットは、独自ドメインの設定ですね。

Sqaleでは原則的にsample.netのようなAレコードに対して
独自ドメインを設定することが仕様としてできません。

これは最大のデメリットではないでしょうか。

通常、webサイトというのは、「www.test.com」のようなドメインでも「test.com」のようなドメインでも両者アクセスできるように設定するのがベターですよね。

それがSqaleでは出来ないというのはデメリットとして挙げざるを得ません。

しかし!!
サポートから以下のような回答をいただいたので、設定することはできるみたいですね。

もしAレコードのようにアクセスをおこないたい場合は、
https://www.cloudflare.com などのサービスを使って、wwwなしのドメインでアクセスすることも可能です。
Cloudflare側 では Type を CNAME、Nameを example.jp(お客様のドメイン) で設定、 Sqale側に独自ドメイン example.jp(お客様のドメイン) を設定します。

■ CNAME Flattening: RFC-compliant support for CNAME at the root
https://support.cloudflare.com/hc/en-us/articles/200169056-CNAME-Flattening-RFC-compliant-support-for-CNAME-at-the-root

こちらはSqaleではサポートをおこなっておりませんので、
マニュアルをご確認いただいた後、お客様の責任のもとでご利用下さい。

ただ、Sqaleのサポート外なので自己責任でというような感じのようです。



あと、私が感じるデメリットはもう一点あります。

それは、
「Sequel Pro」のようなMysqlクライアントがセキュリティーの関係で使用できない
という点ですね。

これは自分の中でかなり大きいデメリットになります。

「Sequel Pro」に限らず、
Mysqlクライアントを日頃から使用されている方も多いかと思います。

Mysqlクライアントをプロダクション環境(本番環境)と紐付けておけば、カラムの値をちょっと変更する際なども楽に修正できますが、Mysqlクライアントを使用できないということは、わざわざコマンドでMysqlに接続して、すべてコマンドで手を加える必要があるということになります。

これはかなり辛いです・・・。Sqaleさんの今後のアップデートに期待したいところです。

以上の2点が私が思ったデメリットです。



ただ、デメリット以上にメリットが大きいので
私はこれからもSqaleを使っていこうと思っています。

railsアプリを簡単にデプロイしたいのであれば
Sqaleは非常にオススメできるサービスの一つだと思います!

SqaleでMysqlに接続する方法

上記のデメリットでも記載しましたが、SqaleではMysqlクライアントを使用できないので、コマンドからMysqlに接続する必要があります。

そこでMysqlに接続するためのコマンドをここにまとめておきました。

ご参考いただだけると幸いです。

まずはターミナル(シェル)からSqaleにログインする。

ここで、Mysqlに接続するための情報を確認しておきましょう。

「ダッシュボード」 > 「アプリケーション一覧」のアプリ名をクリック > 「データベース接続情報」をクリックで以下のページまで行けます。
sqale13

ターミナル(シェル)からMysqlに接続する

仮に、[データベース接続情報のUser]が「sqale_111」
[ホスト]が「mysql.sqale.jp」だったと仮定すると以下のようになります。

そうするとパスワードを求められますのでSqaleの「データベース接続情報」に書かれてある、上の画像の箇所のパスワードを入力します。(コピペでOK)

この時、自分が入力したものは表示されませんがペーストしたらキーボードの「return(enter)」で進んでください。

以下のようになったら大丈夫です。

その後、「show databases;」コマンドでデータベースの中身を見てみましょう。

あとは、「use [Database名];」コマンドでデータベースを選択できます。

その後は、ご自身で操作したい方法でSQL文を実行します。

作業が無事終われば「exit」で終了できます。

SQL文を使ったデータベースの操作はここでは解説しておりませんので、
「Mysql SQL」などでググってみてください。

まとめ

ここまで長らくご覧いただきありがとうございました。

いかがでしたでしょうか?
非常に簡単にrailsアプリをデプロイできたのではないでしょうか!?

railsの最大の壁であったデプロイがこんなに簡単にできるなんて非常に魅力的だと思います。

いろいろなサーバー会社が今後Sqaleのような動きをしてくれる事に期待しましょう!!

それでは、本記事はこの辺で終了したいと思います。

長らくご覧いただき、ありがとうございました!!

もしよろしければいいね!やシェア、ブックマークの登録等お願いします!!

下の「講読する」をクリックしていただくとブログの更新情報をご覧いただけます。

よろしければ、是非ご協力のほどお願い申し上げます。

スポンサーリンク
スポンサーリンク