10
12

More than 5 years have passed since last update.

Windows+VagrantでRails・ファイル共有が激遅

Posted at

Windows + Vagrantで快適なRails開発がスタート!。。するはずだった。
現実は、Railsアプリの応答が遅すぎてページを開くだけで数十秒かかる始末。
どうやらvagrantが使用しているファイル同期が遅いのが原因らしい。

■挫折 プロトコル変更

だったらファイル同期のプロトコルを変更しよう!
nfsは、Windowsではできない。
rsyncも基本できないけど、導入の解説してくれてる人いるじゃん!!
え、rsyncって双方向同期してくれないの。。
ゲストOSでファイル追加、編集できないのは困る。。

■解決策 ネットワーク経由でゲストOSのファイルを直接編集

ゲストOSにフォルダ(/home/vagrant)を公開してもらいます。
ファイルサーバ機能はSambaを利用。
Sambaのインストールは、ほぼ下記のサイトを参考にしています。
どうにかブログやってるよ: windowsとvagrant間のファイル共有はsambaを使う

■設定手順

●ゲストOSにログイン
コンソールでログイン。

●Samba インストール
yum install samba

●Sambaユーザーの登録
pdbedit -a vagrant

●設定ファイルのオリジナルをバックアップした上で空ファイルに
cp -p /etc/samba/smb.conf /etc/samba/smb.conf_org && cp /dev/null /etc/samba/smb.conf

●設定ファイルを編集する
vi /etc/samba/smb.conf

/etc/samba/smb.conf


#======================= Global Settings ==================
[global]
    # 文字コード設定 CentOS
    unix charset = UTF-8

    # 文字コード設定 Win
    dos charset = CP932
    display charset = UTF-8

# ----------------------- Network Related Options ----------
    # Widnows グループの設定 コンピュータのプロパティから調べる
    workgroup = WORKGROUP

    # Allow within local network
    # Vagrantfile に設定してあるゲストOSのIP(デフォだと192.168.33.10)
    hosts allow = 192.168.33. 127.

#============================ Share Definitions ==============
[homes]
    comment = Home Directories
    # ホームディレクトリをSAMBAで共有する
    path = %H
    browseable = no
    writable = yes

ちなみにこのsmb.confはfuturismoさんが作成した設定ファイルがベースらしいです。

●Samba/NMBの起動
/etc/init.d/smb start
/etc/init.d/nmb start

●vagrant起動時にsambaを起動する設定
chkconfig smb on
chkconfig nmb on

●ホストOS(Windows)からアクセスするためにiptableを変更
vi /etc/sysconfig/iptables
以下の内容を"追記"

/etc/sysconfig/iptables
# samba
-A INPUT -p tcp --dport 139 -j ACCEPT
-A INPUT -p udp --dport 137 -j ACCEPT
-A INPUT -p udp --dport 138 -j ACCEPT
-A INPUT -p tcp --dport 445 -j ACCEPT
# samba end

●iptablesを再起動
/etc/init.d/iptables restart

●SELinuxがオフか確認
getenforce
上記を実行して【disabled】と出てればOK
でなければ、SELinuxをdisabledにしてください。

●ゲストOSから公開したいRailsプロジェクトのフォルダを移動する
/home/vagrantに編集したいRailsプロジェクト(例 rails_project)のフォルダを移動する。

mv /vagrant/[rails_project] /home/vagrant/[rails_project]

●動作確認1 ファイルが編集可能か
ホストOS側からエクスプローラの下記を入力する。
\\192.168.33.10\vagrant
rails_projectが見れたら、ネットワーク越しに編集可能になってます。

●動作確認2 Railsが爆速か
ゲストOSからRailsプロジェクト([rails_project])を起動。
ホストOSのブラウザから動作確認。
きっと爆速になってます。
(なってなかったら/home/vagrant/がファイル"同期"対象になってるかも。対象から外してください。)

Windows + Vagrantで快適なRails開発を!

10
12
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
12