.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Linuxを触りたかったので、SHIRASAGIハンズオンの開発環境準備をしてみた。

開発環境の準備

以下を参考にして、開発環境を準備する。

  • SHIRASAGIハンズオンの開発環境は、Vagrant + VirtualBox?で準備する。

インストール

64ビット Windows

私はWin 10 proを用意しました。

VirtualBox?をインストール

  • VirtualBox?
    Oracle社のホストOS型の仮想マシン。
  • 注意
    • Hyper-V とは同居できない。
    • default VM folder を日本語を含まないディレクトリにする。
      参考: incompatible character encodings: CP850 and Windows-1252

Vagrantをインストール

※ SHIRASAGI開発環境として、動作確認のとれた vagrant バージョンをインストールする。

  • Vagrant
  • 仮想マシンの構築・管理のコマンドラインツール。
  • Rubyで実装されていて、Windows、Mac OS X、Linuxで動作する。
  • VirtualBox?をはじめとする仮想マシンやChefやSalt、Puppet
    といった構成管理ソフトウェアのラッパーとみなすこともできる。
  • Vagrantを用いると、構成情報を記述した設定ファイルを元に、
    仮想マシンの構築から設定までを自動的に行うことができる。
  • 注意
    • ユーザ名に日本語が含まれる場合、Vagrant が起動しない場合がある。
    • 環境変数 AGRANT_HOME を日本語を含まないディレクトリに設定する。
    • Vagrant up 時に次のエラーが表示される場合、
      An error occurred while downloading the remote file.
      The error message, if any, is reproduced below.
      Please fix this error and try again.
      以下をインストールする(2 つともインストール)

Tera Termをインストール

Tera Term などの SSH クライアントが必要。

  • Tera Term
    • SSH・telnet・シリアルの各通信プロトコルに対応したリモートログオンクライアント
    • Microsoft Windowsで使用できる。

開発環境の構築

Vagrantによる環境設定

Vagrantfileというファイルを作成

Vagrantfile は Ruby の簡単な変数代入で書かれている。
公式にも「Rubyの知識は必要ない」と書いてある。

  • パス
    c:\shirasagi-dev\Vagrantfile
  • 内容
    Vagrant.configure(2) do |config|
      config.vm.box = "ss-vagrant-v1.6.0-rc"
      config.vm.box_url = "https://github.com/shirasagi/ss-vagrant/releases/download/v1.6.0-rc/ss-vagrant-virtualbox-x86_64.box"
      config.vm.network :forwarded_port, guest: 3000, host: 3000
      config.vm.network "private_network", ip: "192.168.33.10"
      config.vm.network "private_network", ip: "192.168.33.11"
      config.vm.network "private_network", ip: "192.168.33.12"
    
      config.vm.provider :virtualbox do |vb|
        # see: http://blog.shibayu36.org/entry/2013/08/12/090545
        # IPv6 と DNS でのネットワーク遅延対策で追記
        vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
        vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
      end
    end

Vagrantを使用し開発環境を起動

  • 以下のような表示がされるので、暫く待つ。
    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Box 'ss-vagrant-v1.6.0-rc' could not be found. Attempting to find and install...
        default: Box Provider: virtualbox
        default: Box Version: >= 0
    ==> default: Box file was not detected as metadata. Adding it directly...
    ==> default: Adding box 'ss-vagrant-v1.6.0-rc' (v0) for provider: virtualbox
        default: Downloading: https://github.com/shirasagi/ss-vagrant/releases/download/v1.6.0-rc/ss-vagrant-virtualbox-x86_64.box
        default: Progress: nn% (Rate: nnnnk/s, Estimated time remaining: n:nn:nn)
  • 設定が進むので色々と許可する。
    ==> default: Successfully added box 'ss-vagrant-v1.6.0-rc' (v0) for 'virtualbox'!
    ==> default: Importing base box 'ss-vagrant-v1.6.0-rc'...
    ==> default: Matching MAC address for NAT networking...
    ==> default: Setting the name of the VM: shirasagi-dev_default_1506394717167_57655
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
        default: Adapter 2: hostonly
        default: Adapter 3: hostonly
        default: Adapter 4: hostonly
    ==> default: Forwarding ports...
        default: 3000 (guest) => 3000 (host) (adapter 1)
        default: 22 (guest) => 2222 (host) (adapter 1)
    ==> default: Running 'pre-boot' VM customizations...
    ==> default: Booting VM...
    ==> default: Waiting for machine to boot. This may take a few minutes...
        default: SSH address: 127.0.0.1:2222
        default: SSH username: vagrant
        default: SSH auth method: private key
  • default: SSH auth method: private key から先に進まない。
    Timed out while waiting for the machine to boot. This means that
    Vagrant was unable to communicate with the guest machine within
    the configured ("config.vm.boot_timeout" value) time period.
    
    If you look above, you should be able to see the error(s) that
    Vagrant had when attempting to connect to the machine. These errors
    are usually good hints as to what may be wrong.
    
    If you're using a custom box, make sure that networking is properly
    working and you're able to connect to the machine. It is a common
    problem that networking isn't setup properly in these boxes.
    Verify that authentication configurations are also setup properly,
    as well.
    
    If the box appears to be booting properly, you may want to increase
    the timeout ("config.vm.boot_timeout") value.
  • 問題を分析するために、GUIモードを有効にする(以下をVagrantfileに追加)
    vb.gui = true
    • Vagrant で仮想ウィンドウを GUI モードで起動する設定 | WEB ARCH LABO
      https://weblabo.oscasierra.net/vagrant-vb-gui/

      仮想マシンを起動した際に仮想ウィンドウを表示する場合、GUI モードで起動する。

  • 以下のコマンドを再実行する。
    >vagrant up
  • 以下、試行錯誤
    • VirtualBox?のコンソールを開いたら、設定に問題がある旨が表示されていたので修正。

      [ディスプレイ] ---> [リモートディスプレイ] ---> [サーバーを有効化]のチェックをオフ

  • VirtualBox?の [一般] -> [基本] -> [バージョン] から [Red Hat (64-bit)] を選択。

    VirtualBox?でゲストOSを起動すると「This kernel requires an x86-64 CPU, but only detected an i686 CPU.
    Unable to boot - please use a kernel appropriate for your CPU.」エラー - 日々精進
    http://anton0825.hatenablog.com/entry/20140510/1407818313

  • 無事、問題をクリアした。
        default: SSH auth method: private key
        default: Warning: Remote connection disconnect. Retrying...
        default: Warning: Remote connection disconnect. Retrying...
        default: Warning: Remote connection disconnect. Retrying...
        default:
        default: Vagrant insecure key detected. Vagrant will automatically replace
        default: this with a newly generated keypair for better security.
        default:
        default: Inserting generated public key within guest...
        default: Removing insecure key from the guest if it's present...
        default: Key inserted! Disconnecting and reconnecting using new SSH key...
    ==> default: Machine booted and ready!
    ==> default: Checking for guest additions in VM...
    ==> default: Configuring and enabling network interfaces...
    ==> default: Mounting shared folders...
        default: /vagrant => C:/shirasagi-dev
    ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
    ==> default: flag to force provisioning. Provisioners marked to run always will still run.

開発環境への接続

仮想ウィンドウで接続

GUIモードが有効な場合、仮想ウィンドウを使用できる。

Tera Termで接続

以下からTera Termで接続する。

  • 接続情報
    host: 192.168.33.10
    port: 22

共通

  • ログイン
    user: vagrant
    password: vagrant
  • SHIRASAGI を起動
    $ cd $HOME/shirasagi
    $ bundle exec rake unicorn:start
    bundle exec unicorn_rails -c /var/www/shirasagi/config/unicorn.rb -E production -D
  • ホストOSからブラウザで "http://localhost:3000/" にアクセスすると、SHIRASAGIのCMSサイトにアクセスできる。

    これは、ポートフォワーディングでホスト:3000からゲスト:3000(Web Server)に接続しているため。

Windows の共有フォルダにマウント

Windows 版 Vagrant Box の共有ファイルは非常に遅く、
Windows の共有フォルダを使った方が、 早くて快適なので、
必要に応じてWindows の共有フォルダにマウントする。

CIFSをインストール

  • 以下コマンドで、CIFSをインストールする。
    $ yum -y install cifs-utils
  • 以下のように表示されたら、
    Loaded plugins: fastestmirror
    You need to be root to perform this command.
  • 再度、CIFSをインストールする。

Windowsの共有フォルダを作成

  • Windows 側で開発ディレクトリを www という名前で作成・共有
  • Microsoftアカウントでないローカルアカウントを作成して、
    共有フォルダとNTFSの両方にアクセス許可を与えておく。

共有フォルダをマウント

  • 以下コマンドで、Windowsの共有フォルダをマウントする。
    ユーザー名(user=xxxxx)は環境に合わせて変更する。
    $ sudo mkdir -p /var/www
    $ sudo mount -t cifs -o user=xxxxx //10.0.2.2/www /var/www
    Password for aaa@//10.0.2.2/www:  *******

ちなみに、10.0.2.2は、VirtualBox?のゲストOSからホストOSにアクセスするIP。

  • 以下のように表示されたら、
    mount error(112): Host is down
    Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
    • FW設定などを疑ってみる。
    • 私の場合は、SMB1.0が無効になっていたため、version指定が必要だった。
      $ sudo mount -t cifs -o user=aaa,vers=2.0 //10.0.2.2/www /var/www

マウントの確認

以下コマンドで、マウントできたかどうかを確認できる。

  • dfコマンド
    $ df
    Filesystem              1K-blocks      Used Available Use% Mounted on
    ・・・
    //10.0.2.2/www          248540444 132646056 115894388  54% /var/www
  • treeコマンド
    $ tree -L 2 /var/www
    /var/www
    0 directories, 0 files

動作確認

以下のサイトに接続可能かどうか確認する。

自治体サンプルサイト

http://localhost:3000/

企業サンプルサイト

http://192.168.33.10:3000/

子育て支援サンプルサイト

http://192.168.33.11:3000/

オープンデータサンプルサイト

http://192.168.33.12:3000/

LPサンプルサイト

http://192.168.33.13:3000/

グループウェア

http://localhost:3000/.g1

管理画面

http://localhost:3000/.mypage

参考

VirtualBox?

Vagrant

Tera Term

default: SSH auth method: private key

から先に進まない。ググると色々出てくるが、
平たく言って、諸事情によりOSが起動していないケースが多い。

シラサギハンズオン in 広島

懇親会 候補

で、実際は、

でやった。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-27 (金) 09:53:21 (1189d)