趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。※サイト移転しました(tomono.eleho.net ⇒ tomono.tokyo)
RSS icon
  • heroku+node.jsでHello Worldしてみた(1)

    投稿日 2015年 7月 24日 コメントはありません

    ずいぶん前から話題になっている heroku を試してみました。今回は、herokuとnode.jsを使ってHello Worldしてみましたので、その記録です。
    JavaScriptを使うのもほぼ初めて、herokuも初めて、当然Node.jsも初めて、という初めてづくしなのでおかしなところもあるかもしれません。環境はLinuxMint17.1 32bitです。

    参考にしたのは「2013-07-07 herokuでNode.jsの動く環境構築してみた!」です。基本的には(2)まではこの記事を辿っただけです。(途中からNode.js + Express環境前提での記載になります)

    1.herokuのアカウント作成&準備

    herokuのサイトでサインアップします。お決まりのメールアドレスをIDとするタイプです。
    メールアドレスをIDとして入力すると、そのアドレスに確認用のリンクアドレス付きのメールが送られてきます。そこにアクセスしてパスワードを設定します。

    パスワード設定後、ログインすると、どの言語を使うか(Getting Started with Heroku)聞いてきます。

    Screenshot-1000

    今回はNode.jsを選択してみます。

    Screenshot-1001

    Node.jsとnpmがインストールされていることが条件のようですので、ここで一旦herokuから離れます。

    2.node.jsとnpmのインストール

    すでにnodejsコマンドとnpmコマンドはインストール済みなので割愛。
    デフォルトで入っているアマチュアパケット無線用のnodeパッケージを削除(中身はないようだけど)して、node.jsをインストールします。

    無事にインストールできたようです。

    3.heroku toolbeltのインストール

    「Getting Started with Node.js on Heroku」のSet upのところで、heroku toolbeltのインストールをします。Debian/Ubuntuを選ぶと、コマンドラインで以下を実行するよう表示されます。

    Screenshot-1002

    Rubyがインストールされている必要があるようですので、以下の通りコンソールから入力します。

    とした後、

    としてインストールします。

    4.herokuにログイン

    問題なく成功したので、Set upのところの「I have installed the Toolbelt」をクリックします。すると次の「Prepare the app」に進みます。

    5.サンプルアプリを動かす

    Getting Started with Node.js on Heroku」の「Prepare the app」「Deploy the app」「View logs」に沿って操作していけばサンプルアプリは容易に動きます。
    詳細は省略。その後の説明は、

    • ログは「$ heroku logs –tail」で確認可能
    • Procfileにはアプリを起動するためのコマンドを記述する。プロセスタイプの「web」に続いて、node.jsの場合には「node ファイル名.js」。webはherokuのHTTPルーティングスタックを使うためのもので、デプロイされた時にWebトラフィックを受信する、ということみたい。
    • package.jsonにはアプリケーションの依存関係を記述する。ファイルは「$ npm init」で作成できる。packages.jsonはアプリケーションのherokuで動かす際のNode.jsのバージョンと、アプリケーションの依存関係の両方を決定する。アプリケーションがデプロイされると、herokuはpackages.jsonを読み込んでnpm installコマンドを使って適切なバージョンのnode.jsと依存ファイルをインストールする。
    • アプリケーションをローカルで動かすためには「$ foreman start web」とするが、LinutMint17.1では「node」コマンドはアマチュアパケット無線用のNodeとなっており、node.jsは「nodejs」コマンドで起動することになっているため失敗してしまう。.bashrcに「alias node nodejs」と記述して新しいterminalで起動してもダメ。「$ sudo ln -s nodejs node」としてからだと、

      となってやはりうまくいかない。
      ぐぐるさんに聞いてみると・・・同じ課題の人がいるようです。前の方の「2.node.jsとnpmのインストール」を修正しました。
      改めて試してみましたが、

      となってうまくいきません。(気を取り直して再起動すると、Synapticがherokuとheroku-toolbeltのアップデートを要求してきましたが、その後でもやはりダメ・・・)
      「$ npm install」したあと「$ npm init」で package.json を作りなおしたらうまくいった模様。
    • その他、herokuの外のサービスとして長大なログを取るもの、コンソール起動の仕方(ワンライナーを動かすなど)、環境変数の渡し方・取得の方法、データベースの使い方などの記載があります。

    (2)へ続きます。