LoginSignup
18
21

More than 5 years have passed since last update.

Vagrant + Node.js + CentOS7 環境構築

Last updated at Posted at 2016-04-24

少し時間が取れるようになったので、前から気になっていたNode.jsについて試してみようと思ったが、Vagrantのバージョンが古かったりで、環境構築に悪戦苦闘したのでそのメモ。

作業環境

■前提
VirtualBox, Vagrantインストール済み

■環境
OS:OSX10.10.5(Yosemite)
VirtualBox:4 → 5.0.18 (変更前忘れ)
Vagrant:1.6 → 1.8.1
ゲストOS:CentOS7
Node.js:v5.11.0
nvm:0.31.0

VirtualBox, Vagrantのバージョンアップ

NodejsからprivateIPでアクセスするため下記設定にする。(privateIPは任意)

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos7.0"
  config.vm.network "forwarded_port", guest: 1337, host: 1337
  config.vm.network "private_network", ip: "192.168.33.11" 
end

ってのっけからエラーか。。。
Vagrantfileにprivate_network指定を外すとエラーなし。
デバイス関連でエラー、調べてみるとCentOS7よりアダプタ名がeth0からenp0s8などに変わっていたためであった。
(無理やり?)enp0s8でvagrant upする方法、バグ対応プラグインインストールしたが起動せず。
Vagrant入れたのがCentOS7リリースされる前だったからだなと思い、バージョンアップで解決。
バージョンアップ方法は、
各サイトより最新版ダウンロードし、インストールするのみです。
[Qiita]Mac で vagrant をバージョンアップするを参考にさせて頂きました。

nvmでNode.jsインストール

Node.jsのバージョン管理ツール。バージョンの切り替えするやつすね。rubyのrbenv版ですね。nvmを利用してNode.jsインストールします。
(nvm:Node Version Manager)

$ vagrant up
$ vagrant ssh

−−仮想マシン−−
$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm help
$ nvm list-remote /* show Node.js version list */
 :
$ nvm install v5.11.0
$ nvm ls
->      v5.11.0
default -> v5.11.0
node -> stable (-> v5.11.0) (default)
stable -> 5.11 (-> v5.11.0) (default)
iojs -> N/A (default)

$ nvm alias default v0.10.26 /* default Node.js setting */

$ vi ~/.bash_profile

if [[ -s ~/.nvm/nvm.sh ]];
 then source ~/.nvm/nvm.sh
fi

[Qiita]centos + node.js + npm + nvm インストールを参考にさせて頂きました。

Node.jsでhello world!

$ node
> console.log("hello world!");
hello world!

ふむふむ。

ブラウザからhello world!

仮想マシン上の適当な場所にhello.jsを配置。

hello.js
// HTTPパッケージを読み込み
var http = require('http');

// WebServerObjectを作成
var server = http.createServer();
// HTTP RequestがあったらdoRequestで処理
server.on('request', doRequest);
// リクエストを受け取るポートを指定
server.listen(1337);
console.log('Server running!');

// リクエストの処理
function doRequest(req, res) {
    // ヘッダー
    res.writeHead(200, {'Content-Type': 'text/plain'});
    // 出力
    res.write('hello world!\n');
    // 終了
    res.end();
}
$ node hello
Server running!

これで待ち受け状態ね。

mac側ブラウザ
192.168.33.11:1337 にアクセス不可。。。localhost:1337 ももちろんダメ。
おう!なにも反応しないやんけ。

ブラウザからのアクセス不可対応

1, 仮想マシン側firewallの設定を無効にする。

$ sudo systemctl stop firewalld

2, Vagrantfileのforwarded_portにidを指定する。
Vagrant側のサイトにidの利用について記載ないので、詳細は不明。
ただデフォルトでsshのportをforwardするのから重複してだめなのかな?
変更前
config.vm.network "forwarded_port", guest: 1337, host: 1337
変更後
config.vm.network "forwarded_port", guest: 1337, host: 1337, id:"http"


ブラウザからアクセス・・・

hello world!

表示!192.168.33.11:1337 も localhost:1337 もOKだったよ。

okidoki.

18
21
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
18
21