LoginSignup
10
11

More than 5 years have passed since last update.

Centos7 Vargrant Node.js Forever Express4 Systemdで開発環境を構築する

Last updated at Posted at 2015-05-09

Node.jsの開発環境をVagrantで構築することがあったのでメモ。
Express4を使っていますが少し変えればNode.js全般で使えると思います。

やりたいこと

  • CentOS7.0 64bit上に構築する。
  • ソースコードを変更したら自動的にNode.jsを再起動する。
  • vagrant upしたら自動でNode.jsを立ち上げる。

Vagrantfile

まずVagrantfileは以下のようにします。

Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "your CentOS 7.0"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provision :shell, :inline => "sudo systemctl start forever", run: "always"
end

ディレクトリ構成

ゲストOSのディレクトリ構成は以下のようにする予定です。

/
├── vagrant
│   ├── app.js
│   ├── bin
│   ├── node_modules
│   ├── package.box
│   ├── package.json
│   ├── public
│   ├── routes
│   ├── Vagrantfile
│   └── views
├── opt
│   ├── node -> node-v0.12.2-linux-x64
│   ├── node-v0.12.2-linux-x64

/Vagrant以下はexpress-generatorを使用してプロジェクトのひな形を作成しました。簡単なので割愛します。

Node.jsのインストール

Node.jsは公式のバイナリの64bitを利用します。

vagrant ssh
Console
$ wget http://nodejs.org/dist/v0.12.2/node-v0.12.2-linux-x64.tar.gz
$ sudo mkdir /opt
$ cd /opt
$ sudo tar xvfz /path/to/node-v0.12.2-linux-x64.tar.gz
$ sudo ln -s node-v0.12.2-linux-x64 node

Foreverのインストール

Node.jsをdaemon化するツールはいろいろあるようですが今回はForeverを使用します。

Console
$ sudo /opt/node/bin/npm install -g forever

CentOS7.0からsystemdになったのでsystemdのunitを登録します。

$ sudo vi /etc/systemd/system/forever.service
/etc/systemd/system/forever.service
[Unit]
Description=Forever Server

[Service]
StandardOutput=syslog
SyslogIdentifier=forever
Type=forking
Environment=PATH=/opt/node/bin
WorkingDirectory=/vagrant
ExecStart=/opt/node/bin/forever start -w --pidFile /var/run/forever.pid ./bin/www
ExecStop=/opt/node/bin/forever stop ./bin/www
PIDFile=/var/run/forever.pid
User=root

確認

起動確認

Console
$ sudo systemctl start forever
$ curl localhost:3000
vagrant reload
vagrant ssh
$ curl localhost:3000

感想

本当はsystemdでの自動起動でforeverを立ち上げたかった。
しかし/vagrantがマウントされる前にforeverが起動してしまい、
/vagrant/bin/wwwが見つからなくて起動でコケてしまうので、
仕方なくVagrantfileのprovisionでsudo systemctl start foreverしました。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11