--
--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:

04
2016

Node.js開発用のVagrant環境構築

CATEGORY開発環境
お仕事代わって Node.js 使うことになってせっかくなので Vagrant で開発環境作ったのでメモ。
2016/7/12 Ansible版公開

ホストOSは普通に Windows10 想定。ゲストOSが CentOS7 で、Node.js と MariaDB のインストールまで一発な Vagrantfile はこんな感じ。
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
config.vm.box = "centos/7"

# ホストPCとゲストPCのネットワークを構築
config.vm.network "private_network", ip: "172.16.10.10"

# ホストPCのこのフォルダをマウント ※2016年11月現在のcentos/7だと明示的に指定しないとエラーになる
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

# メモリサイズ
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end

# 環境構築スクリプト
# OSを最新の状態に更新し、node.jsの6系とDB関連をインストール。FWは無効にする
config.vm.provision "shell", inline: <<-SHELL
yum check-update
sudo yum install -y epel-release
sudo yum update -y
curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
sudo yum install -y nodejs
sudo yum install -y mariadb
sudo yum install -y mariadb-server
sudo npm install -g express-generator
sudo npm install -g jsdoc
sudo npm install -g mocha
sudo npm install -g chai
sudo npm install -g pm2
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl enable mariadb
sudo systemctl start mariadb
SHELL
end
Ansible とか使って書きたかったけど、勉強が追い付かず今回は昔ながらのスクリプトで。
Ansible版公開しました。
本当は private_network でやりたかったけど、なんかうまくアクセスできなかったのでポート転送にした。。。
Microsoft Edgeだとプライベートサイト見れないのが原因で実は出来てたので差し替え。
firewalld は無効にしてる。っていうか CentOS7 がいろいろ変わり過ぎててよくわかってない(><

公式?の centos/7 のボックスは Guest Additions が入ってないので、事前にホストOS側で↓も推奨。
vagrant plugin install vagrant-vbguest
あと共有フォルダがデフォルト virtualbox のはずなのに rsync が無いとか言ってエラーになるので、明示的に書いた。バグ?
(rsync入れるのも試したけど、Vagrant 1.8.4 と cwRsync の組み合わせだと動かないらしいので注意!)

DBはSSHで入った後 mysql_secure_installation とかでセットアップして、コマンドとか、ホストOS側から MySQL Workbench でとかで操作する感じで。

Node.js を動かすのは、express-generator も入れてるのでこれで共有フォルダ /home/vagrant/sync /vagrant に↓みたいにExpressフレームワークのひな型を作成して、動かす想定。
共有フォルダだとシンボリックリンクが貼れずエラーになるので、npm install には --no-bin-links オプションをつける。
express sampapp
cd sampapp && npm install --no-bin-links
npm install mysql --no-bin-links --save
npm install sequelize --no-bin-links --save
pm2 start bin/www --name sampapp --watch

これで http://localhost:3000/http://172.16.10.10:3000/ で Express のサンプルが表示される。
実際の開発はこれからなので最適じゃないとこあるかもしれないけど、とりあえずこれで動かすまで出来た。

あと、Windows上からのSSHは teratermプラグインが便利だったのでそれ推奨! vagrant teraterm で入れるようになる。
アプリの起動はランチャーのpm2を使うのが楽。ただ、watchオプションはいまいち信用できないので直したらrestart推奨で。



2016/7/9 Vagrantfileをポートフォワードではなくプライベートネットワークを使う形に変更。npm でjsdoc, mocha, pm2 もインストールするよう変更。
手動で打つコマンドに --save つけるのと、pm2 や vagrant teraterm で起動するように変更。

2016/7/12 Ansible版公開に伴いリンクなど追加。
2016/7/12 テストライブラリの Chai もインストールするよう追記。
2016/11/3 centos/7のboxのパスが/home/vagrant/sync/vagrantと普通に変わっていたので差し替え。
スポンサーサイト

Tag: JavaScript Vagrant Node.js

0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。