問題
弊社では、さまざまなオペレーティングシステム、特にMac OS XとLinuxに必要なすべての環境をインストールする際に問題が発生しました。
Linuxでは簡単なタスクのように見えますが、Macでは少し複雑ですが、すべてがさらに複雑になりました。 私たちのプロジェクトは標準ではありません。 drupalとrailsの地獄のような混合物。 このプロジェクトは、レールに移行する過程にあります。 そして、環境の設定に精通していないフロントエンドプログラマにとって、すべてをポピーの下で友だちにすることはそれほど単純な作業ではありませんでした。 彼らはubuntuまたは他のLinuxのインストールを断固として拒否した。
解決策
じゃあ rails-dev-boxのような素晴らしいプロジェクトが最速のソリューションとして選ばれました。
このプロジェクトは、Ruby on Railsカーネルを開発するためのインストールを自動化します。 私たちのニーズには、これは非常に適しています。
Virtual Boxをインストールして、Vagrantジャムをカットする必要があります。 どちらも簡単にインストールできます。
その後、いくつかのコマンドを実行するだけです。
host:~$ git clone https://github.com/rails/rails-dev-box.git host:~$ cd rails-dev-box host:~$ vagrant up
それだけです その後、すでに設定されたubuntuにsshすることができます:
vagrant ssh Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686) ... vagrant@rails-dev-box:~$
必要なものはすべて、PHPとWebサーバーを除いて、仮想システムに既にインストールされています。
- Git
- RVM
- Ruby 1.9.3(バイナリRVMインストール)
- バンドラー
- SQLite3、MySQL、およびPostgres
- nokogiri、sqlite3、mysql、mysql2、およびpgのシステム依存関係
- Active Recordテストスイートの実行に必要なデータベースとユーザー
- アセットパイプライン用のNode.js
- Memcached
phpとnginxのインストールは考慮しません。この記事の範囲外です。 Linuxで行うのは非常に簡単です。
ホストシステムのrails-dev-boxを使用してフォルダーにプロジェクトをコピーし、vagrantの下からrailsサーバーを実行するだけです。
vagrant ssh cd /vagrant/my_project bundle exec unicorn -E development -D
仮想システムとホストシステムには同じフォルダーが表示されるため、お気に入りのエディターで編集して、以前と同じようにページを開くことができます。
localhost:3000
PHPの場合、ポート1080をスローする必要があります(ルートアクセスが必要になるため、ポート80はスローできません)
これは非常に簡単です。 Vagrantfileに入力する必要があるのは1行のみです。
config.vm.forward_port 80, 1080
Railsのページが1分近くロードされたことが判明したとき、私は驚きました。 Drupalは、何も起こらなかったかのように機能しました。 速度はネイティブファイルシステムとほとんど区別できません。
Vagrantがデフォルトで使用するVirtualBox共有フォルダーは非常に遅いことがわかりました。
Vagrantドキュメントのベンチマーク:
VirtualBox Shared Folders: 5m 14s Host File System: 10s Native VM File System: 13s NFS Shared Folders: 22s NFS Shared Folders (warm cache): 14s
ご覧のとおり、NFSを使用する以外に選択肢はありません。 Mac OSでは、このデーモンはすでにプリインストールされています。 Linuxでのインストールも一般的です。パッケージをインストールする必要があります。
その後、Vagrantfileを編集し、次の行を追加します。
config.vm.share_folder "v-root", "/home/vagrant/shared-folder", ".", :nfs => true config.vm.network :hostonly, "33.33.33.100"
ホスト専用オプションは、2番目の仮想アダプターを作成するために使用され、nfsはそれを介して機能します。
ここで、仮想マシンを再起動する必要があり、仮想システムのプロジェクトはすでに
/home/vagrant/shared-folder
ユニコーンを起動すると、ページが適切な速度でロードされていることがわかります。
オプショナル
Virtual BoxとVagrantのバンドルは素晴らしい作品です。 上記のすべてを自動化するために、サードパーティサービスからプロジェクトリポジトリのクローンを作成したり、nginx / apache、php、unicorn configsを構成するなど、追加のレシピ(パペットを使用)を書くことができます。
ご清聴ありがとうございました。
参照資料
rails-dev-box githubソースコード
VagrantおよびNFS共有フォルダー