カテゴリ: notes

localhost:3000に接続できません[vagrant centos rails]

Mavericksにしたらvagrantやrailsが起動しなくなったので入れなおしたです。

特にportの所は数日ハマったつД`)・゚・。・゚゚・:.。..。.:・゚

Mavericksにしたらプリインスコされてるアパッチのhttpd.confが書き換わっていたり「!?」な事が続いています。

ファンもぶんぶん回るようになりました。

virtual box再インスコ

とりあえず、virtual boxは再インスコ。

これで、毎回vagrant upで出るエラーは直るです。

下記、エラー内容

There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["hostonlyif", "create"] Stderr: 0%... Progress state: NS_ERROR_FAILURE VBoxManage: error: Failed to create the host-only adapter VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterface, interface IHostNetworkInterface

virtual box4.3.2インスコ(vagrant1.3.4以下は動かない)

vagrant1.3.5インスコ

mkdir arround_jp
cd arround_jp
vagrant init centos64
vagrant up
vagrant ssh

ひとまず、エラーなくssh接続できた

gemパッケージ入れる


su
vagrant
yum -y install gcc openssl-devel make git

//sudoコマンドだと/rootにインストールされるとかあるらしいのでroot権限でやる

ruby2.0インスコ

cd /usr/local
git clone git://github.com/sstephenson/rbenv.git rbenv
mkdir rbenv/shims rbenv/versions
groupadd rbenv
chgrp -R rbenv rbenv
chmod -R g+rwxXs rbenv
git clone git://github.com/sstephenson/ruby-build.git ruby-build
cd ruby-build

./install.sh

vi /etc/profile.d/rbenv.sh 下記を記述 export RBENV_ROOT=”/usr/local/rbenv” export PATH=”/usr/local/rbenv/bin:$PATH” eval “$(rbenv init -)”

gem i bundler

exit exit

vagrant reload vagrant ssh

su vagrant rbenv install -l rbenv install 2.0.0-p247 rbenv global 2.0.0-p247 rbenv rehash ruby -v

無事、ruby2.0.0-p247が入った事を確認

railsインスコが早くなるおまじない

vi /etc/resolve.conf
下記を追加

options single-request-reopen

vi ~/.gemrc gem: –no-ri –no-rdoc

rubygemsアップデート

gem update --system
rbenv rehash
update_rubygems

railsインスコ

gem i sdoc
gem i json
gem i sqlite3
rbenv rehash

gem i rails rbenv rehash rails -v

※root権限から戻る exit rails new arround_jp –skip-bundle cd arround_jp

vi Gemfile コメントアウトする #gem ‘turbolinks’のとこ

コメントアウト外す therubyracerのとこ

vi app/views/layouts/application.html.erb < %= stylesheet_link_tag “application”, media: “all” %> < %= javascript_include_tag “application” %>

vi app/assets/javascripts/application.js 一行削除//= require turbolinks

bundle install rails s

http://localhost:3000とか http://0.0.0.0:3000にアクセスするも 「Google Chrome では 0.0.0.0:3000 に接続できませんでした」とか言われる。

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.2.0        *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         10.0.2.2        0.0.0.0         UG    0      0        0 eth0

\(^o^)/オワタ port空いてないワロタ

ついでにifconfig打ってみたけどやっぱり空いてない

ポートあけるよー

su
vagrant

vi /etc/sysconfig/iptables
下記を追加
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT

中身を見てみる
cat /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

exit
exit

vagrant reload
vagrant ssh
cd arround_jp
rails s

http://localhost:3000 にアクセス まだつながらない

exit
exit
vi Vagrantfile
下記を記述
config.vm.network :forwarded_port, guest: 3000, host: 3000

vagrant reload
起動ログの中に空いたっぽいのがでた
[default] -- 3000 => 3000 (adapter 1)

vagrant ssh

http://localhost:3000 にアクセス

無事つながったb

Started GET "/" for 10.0.2.2 at 2013-11-21 18:25:04 +0000
Processing by Rails::WelcomeController#index as HTML
  Rendered /usr/local/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-4.0.1/lib/rails/templates/rails/welcome/index.html.erb (14.6ms)
Completed 200 OK in 58ms (Views: 57.6ms | ActiveRecord: 0.0ms)

推察

おそらくだけど、vagrant側のポートはiptablesで空ける必要があって、

guestから叩いたポート(guest)をvagrant側に届けてくれるNATぽい事をforwarded_portがやってくれてるんだと想像してみる

forwardedは転送って意味だし(´・ω・`)b

About

はらぺこ

職業:フロントエンドエンジニア
趣味:自転車/テニス/空手
愛車:
 ✓ブリヂストン オルディナs5
 ✓アンカー RS8 EL

神戸にて爆誕。
友人から「お前がマスターして教えてくれ」と渡された『HTML&スタイルシート ポケットリファレンス』がキッカケでWeb業界への一歩を踏み出す事になる。

2013年7月にクロスバイクを購入して自転車にドハマリする。
全力で遊ぶ合間に、ほどほどに頑張る日々を過ごしています。

飼い主 はっぴー

2014年10月20日(誕生日)の引っ越し日、捨て猫になっていた所、運命の出会いを果たす。 
(その日は雨で、3日間雨が続く寒い日だった。このまま放っておけないと自転車生活と秤にかけて、はっぴーを選択する)
5時間かけて油断させ、近づいてきた所をガッと拾い上げ、そのまま家へ猛ダッシュ、玄関の鍵を閉めて家族になる。以後オレたちはファミリーだ。

助けたつもりが、実際は自分の方が精神的に救われている。はっぴーなしでは生きていけない。(最早「飼い主」と言って差し支えないだろう)

「はっぴー」という名前の由来は、『幸せになってほしい』という想いで名付けた。