LoginSignup
1
3

More than 5 years have passed since last update.

Vagrant@node

Last updated at Posted at 2017-03-14

Vagrant@node

下記の記事を参考にexpress x nginx x mongodb構成の開発環境を作成する。

参考記事

vagrant

boxの追加・初期化

公式box配布場所

$ vagrant box add centos7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
$ vagrant box list
# => centos7         (virtualbox, 0)
$ vagrant init centos7

pluginインストール、vagrantfile編集

# hostsをよしなに設定
$ vagrant plugin install vagrant-hostsupdater
Vagrant.configure(2) do |config|
  config.vm.box = "centos7"
  # `http://express-sample.local`
  config.vm.hostname = "express-sample.local"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./html", "/var/www/html"
end
$ mkdir html

起動、接続

$ vagrant up
$ vagrant ssh
# => Last login: Thu Jul 16 08:48:31 2015 from 10.0.2.2 Welcome to your Vagrant-built virtual machine.
[vagrant@express-sample ~]$ pwd
/home/vagrant

SELinux、Firewalledを無効化

開発環境なので無効化
(自分の環境だと仮想環境にホストPCからport80番でアクセスできなかった)
参考記事

node

nodebrew

[vagrant@express-sample ~]$ curl -L git.io/nodebrew | perl - setup
[vagrant@express-sample ~]$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
[vagrant@express-sample ~]$ source ~/.bashrc

node

[vagrant@express-sample ~]$ nodebrew ls-remote
[vagrant@express-sample ~]$ nodebrew install stable
# => install to v7.7.2
[vagrant@express-sample ~]$ nodebrew use v7.7.2
[vagrant@express-sample ~]$ node -v
# => v7.7.2

stableで最新の安定バージョン

nginx

インストール

[vagrant@express-sample ~]$ sudo yum install epel-release
[vagrant@express-sample ~]$ sudo yum install -y nginx
# 起動
[vagrant@express-sample ~]$ sudo systemctl start nginx.service
# 自動起動設定
[vagrant@express-sample ~]$ sudo systemctl enable nginx.service

centos7.xは、Extra Packages for Enterprise Linux (EPEL)のリポジトリをyumに追加する必要があった
centos7.xはserviceではなくsystemctrl

conf編集

[vagrant@express-sample ~]$ sudo vi /etc/nginx/conf.d/virtual.conf
virtual.conf
upstream node-backend {
    server localhost:3000;
}

server {
    listen       80;
    server_name  express-sample.local;

    location / {
        proxy_redirect                      off;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-Host   $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_pass http://node-backend;
    }

    charset utf-8;
    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log;
}
# 再起動
[vagrant@express-sample ~]$ sudo systemctl restart nginx.service

mongodb

インストール

[vagrant@express-sample ~]$ sudo vi /etc/yum.repos.d/10gen.repo
10gen.repo
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
[vagrant@express-sample ~]$ sudo yum install -y mongo-10gen mongo-10gen-server

設定

# 起動
sudo service mongod start
# 自動起動設定
sudo chkconfig mongod on

インストールしたmongodbはsystemctrlではなかった

express

インストール

実際はAPIサーバにするケースが多いと思うけど、ECT入れておく。

参考記事

[vagrant@express-sample ~]$ cd /var/www/html
[vagrant@express-sample ~]$ sudo yum -y install git
[vagrant@express-sample ~]$ npm i -g esperia/generator
[vagrant@express-sample ~]$ express -ect
[vagrant@express-sample ~]$ npm un express-generator
[vagrant@express-sample ~]$ sudo yum install -y tree
[vagrant@express-sample ~]$ tree
.
├── app.js
├── bin
│   └── www
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
└── views
    ├── error.ect
    ├── index.ect
    └── layout.ect
[vagrant@express-sample ~]$ npm i

配布用のboxファイル作成

ログアウト

[vagrant@express-sample ~]$ exit;
# => logout
$ vagrant halt

boxファイル作成、登録

# boxファイル作成
$ vagrant package
# vagrantにboxを登録
$ vagrant box add MEEN-stack package.box

配布された人はvagrant init MEEN-stackで初期化できる
(MEEN = mongodb, express, ect, node)..(┐「ε:)

1
3
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
1
3