kitak.blogスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。読者です読者をやめる読者になる読者になるkitak.blogKみたいなエンジニアになりたいブログ2015-08-10Goで書いたWebサーバを本番(VPS)で動かすGolangOps最近、趣味で書くWebアプリは、いわゆるSPAで、バックエンドのJSONを返すAPIにはGo、フロントエンドは仕事で使うための検証・学習を兼ねて適当なJavaScriptのフレームワークを選択している。この記事は、Goで書いたWebサーバを本番(自分の場合、OSがCentOSのVPS)でどうやって動かすかという内容。プロセス管理ツールプロセスを複数立ち上げたり、プロセスが死んだ時に再び起動したりしてほしかったので、プロセス管理ツールを検討した。調べたところ、circusが以下の点でよさそうだった。インストールはドキュメント通りpipから。)circusのdaemon自体のマネージは、upstartやsystemdを使う。)、参考にしつつ自分の事情に合わせて修正した。JavaScript等の静的ファイルはGoで書いたサーバの前段にリバースプロキシ(nginx)を置いて配信している。JSONを返すAPIのパスにリクエストがきたら、後ろのGoで書いたサーバにまわす。socketに指定しようとしたけど、自分しか使わないアプリだしパフォーマンスはそこまで求めていないのと、ちょっと面倒そうだったのでローカルのポートを指定するようにした。その代わり、TCPのコネクションを張るコストを少しは意識してkeepaliveディレクティブを指定している。socketにするのそんなに面倒じゃなかった。)circusの[socket:web]のセクションを以下のようにするだけ。pathを指定すれば、勝手にfamilyはAF_UNIXとして扱ってくれるらしいけど、念のため明示しておく。AF_UNIXデプロイデプロイは、シンプルなデプロイツールのfabricを使って、手元のPCでCentOS用にビルドしたバイナリの転送&リモートでcircusctlを実行をするだけ。本番(VPS)のほうでアプリケーションの実行環境をあれこれ用意する必要がないのでだいぶ楽。)を参考にバージョン情報を埋め込んでいる。godepで依存管理しているので、アプリケーションのリビジョン番号が分かれば、依存しているライブラリのバージョン(リビジョン番号)も分かる。Blog|ブログを報告する。