Azureで自分のホームページ(と呼べるほどの代物でもないけど。。)をホスティングしていますが 何と月々のフリークレジットの85%以上をこれらのWebアプリが占めていました... 😱
エッ、まじ?
どうりでディープラーニング学習用に使える分が残ってないはずだ...
ということで、これらのWebアプリを無料で運用できるところへ引っ越しさせました。
HTMLサーバーを Azure Web Apps から Netlify へ
無料でホームページを公開したいときの選択肢としてGitHubPagesもありますが前から少し気になっていたNetlifyを使ってみました。
Netlifyのサインアップをして、
- 管理画面から New site from Git
- ホームページを管理しているBitbucketのプライベートのリポジトリを選択
以上です。
簡単でした。🙂
このままだとURLが (ランダムな文字列).netlify.com
なので 好きな名前に変えます。
Site settings > General > Site details > Change site name で変更できました
Node.jsアプリを Azue Web Apps から Now へ
Nowというのは Node.jsやDocker用のPaaSです。 今回、引越し先を探していて初めて知りました。
Dockerでのデプロイができるということは事実上何でもよいということですね。 試しにRailsアプリをDockerでデプロイしたら無事動いてくれました。:-)
デプロイの方法(Node.jsアプリ)
CLIツールのインストール
$ npm install -g now-cli
起動用の
package.json
を用意する{ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, }
デプロイ
$ now
これだけです。メールアドレスを尋ねられて入力するとそのメールアドレスに認証コードを含むメールが飛んできます。リンクをクリックして認証が済むとデプロイが進行します。
以上です。
評判通りに驚くほど簡単でした。🙂
プロダクション用のURLの設定
now
コマンドでデプロイすると毎回違ったURLが発行されるのでプロダクション用にURL固定にしたいときはエイリアスを設定します。
now.json
{ "alias": "panoplaza-multiscreen" }
というファイルを用意し、$ now alias
とすれば
$now
でデプロイしたURLは https://panoplaza-multiscreen.now.sh/
としてアクセスできるようになります。
Node.jsのバージョンの設定
package.jsonの中でenginesのフィールドを設定すればいいようです。
{ "engines": { "node": "6.x.x" }, }
なお、デフォルトは 6.x.x のようですが今後デフォルトのバージョンが変わったときのために念のためセットしてあります。
デプロイの状態を見る
$ now ls > 1 deployment found under xxx@yyy.com [1s] panoplaza_multiscreen (1 of 1 total) url inst # state age panoplazamultiscreen-ezswrmhgyn.now.sh 1 READY 2h
デプロイのIDを確認できます。
ログを見る
$ now logs panoplazamultiscreen-ezswrmhgyn.now.sh
("panoplazamultiscreen-ezswrmhgyn.now.sh" は自分のデプロイIDに置き換えてください)
デプロイを削除する
公式ページのDocsで見つからずググったらBLOGのページが見つかりました。
$ now rm panoplazamultiscreen-ezswrmhgyn.now.sh
("panoplazamultiscreen-ezswrmhgyn.now.sh" は自分のデプロイIDに置き換えてください)
注意点
無料のOSSプランだとソースコードもログも丸見えになっちゃいます。
確かに https://zeit.co/tsuyoshi/panoplazamultiscreen/utusmcofyf のページは認証がかかってなくソースコードやログが誰でも見えちゃいます。。
(右上のLogsもSourceもパブリック)
ソースコードはともかくログまで見えちゃうのは少し気持ち悪いです 🤔
(https://(デプロイで発行されたURL)/_src
でもソースコードが見れるURLに遷移します)
今回のプロジェクトはソースコードにパスワードやsecret key等の秘密情報を含んでないので公開でも問題ないですがそういった場合は、環境変数を使ったりsecretコマンドを使えばいいようです。
あと、OSSプランは以下のように制限がそこそこありますがちょっとしたものを公開するには問題ないでしょう
- BANDWIDTH: 1GB
- LOGS: 100MB
- INSTANCES: 3
- MAX FILE SIZE: 1MB
- STORAGE: 1GB