2016/11/28

Node.js + Express4 + Sequelize + PostgreSQLでRESTful APIサーバをつくる

3tierシステム(Webサーバ+APサーバ+DBをサーバ)のWebサービスをつくる一人プロジェクトをしており、今回はサーバサイドのNode.js + Express4 + Sequelize + PostgreSQLの構成でRESTfulなAPIサーバをつくった。

実行環境は以下のとおり。

  • Windows7
  • Node.js >= 6.0
  • Express - 4.14.0
    • Node.js用のWebフレームワーク
  • body-parser - 1.15.2
    • POSTでボディパラメータを受け取るため
  • Sequelize - 3.27.0
    • PromiseベースのORMライブラリ
  • pg - 6.1.0
    • PostgreSQLのNode.js用クライアント
  • PostgreSQL - 9.4.7
    • さくらのクラウド データベースアプライアンス(プレビュー版)

2016/11/24

Node.js + ORM SequelizeでPostgreSQLをCRUD操作する

普段はフロントエンドを生業としているのだが、フロントエンド一本では食っていけない。そう思ってサーバサイドに挑戦している。
まず手始めに、Node.jsからPostgreSQLに操作してみる。ただ直接SQLをいじるのはツライのでORMライブラリのSequelizeを使う。

実行環境は以下のとおり。

  • Windows7
  • PostgreSQL - 9.4.7
    • さくらのクラウド データベースアプライアンス
  • Node.js >= 6.0
  • sequelize - 3.27.0
    • PromiseベースのORMライブラリ
  • pg - 6.1.0
    • PostgreSQLのNode.js用クライアント

2016/11/22

Node.js + Express4でSSL/TSL通信をする方法

フロントエンドをHTTPS化対応したとき、サーバサイドの対応を忘れて以下のようなエラーが表示され、APIを実行できなかった。

Mixed Content: The page at 'https://xxx.xxx.xxx.xxx/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://xxx.xxx.xxx.xxx/'. This request has been blocked; the content must be served over HTTPS.
XMLHttpRequest cannot load http://xxx.xxx.xxx.xxx/. Failed to start loading.

httpsとhttpが混在してるよ。ページはhttpsで読み込まれてるけど、そこからhttpへリクエストしようとしてるからブロックしといた。やるならhttps経由でやってくれ。という内容。

ということで、Node.js + Express4で開発していたサーバサイドをhttps化してSSL/TSL通信できるようにしたので、その対応方法をまとめる。

2016/11/21

haltを実行してもSystem haltedで止まり電源が落ちない(halt, shutdown, poweroffの違いまとめ)

photo by winterofdiscontent

いつもお世話になっているITProのLinuxコマンド集に「haltshutdown -h -q now」と書かれていたので、ためしにhaltコマンドを実行してみたところ、なぜか「System halted」で止まってしまい電源が落ちてくれなかった。

ちなみにshutdown -h nowの場合は、電源まで落ちてくれた。

疑問に思ったので、いろいろ調べてみた。


シャットダウン関係のコマンド


シャットダウン関係のはコマンドには、以下の3つがある。

  • poweroff
  • halt
  • shutdown

2016/11/17

docker-composeのvolumesで指定したホストのディレクトリがマウントされずハマった

Dockerで複数のコンテナを一度に扱いたいときに便利なツール「docker-compose」を使ったとき、volumesで指定したホストのディレクトリがマウントされずにハマった。

結果からいうと、マウントされるタイミングを勘違いしていたという話。

対処法についても一緒にまとめる。

2016/11/16

DockerでNginxのコンテナを作成し、https化してWebページやサービスを公開する方法

自作Webサービスを公開するために、WebサーバはApacheより人気がでてきているNginxを採用した。しかし普通にCentOSなどにNginxをインストールして設定して、など手動やシェルスクリプトでやりたくなかったので、環境構築にはDockerを使うことにした。

ということで、DockerでNginxのコンテナをつくり、Webページ(サービス)を公開する手順をまとめる。

今回つかう環境は以下のとおり。

  • CentOS 7.2(ホストOS)
  • Docker 1.12.3
  • Nginx 1.11.5


ホストOSの準備


ホストOSは、さくらのクラウドの1コア/1GBプランのCentOS 7.2を使うことにした。
イベントやたまーにWeb上で2万円クーポンを配布しているので、ありがたく使わせてもらう。

CentOSの初期設定などは、以下の記事を参考にしていただければ、スクリプト一発で完了する。

サーバを作成したら、SSHで接続、ログインする。