homehome

Vagrant_rsyncのCygwin周辺の設定

Published

Vagrantの同期タイプを今更ながらrsyncに変えた。rsyncの設定自体は簡単だが、その前段階の周辺環境の設定でトラブってたのでメモ。

rsyncの利点

  • 同期が速い
  • ゲスト側のパーミッションを自由に変更できる

rsyncの欠点

  • 自動同期させるのにコマンドが必要
  • 同期はホストからゲストへの一方方向のみ

欠点の2つ目が問題になることある。例えば(自分の場合)、ゲストにComposerをグローバルインストールしてライブラリを揃えていた場合、このファイルがホストには見えない。そこでまずはホストにComposerを入れるところから始める。

PHPのインストール

ホストにPHPも入っていなかったので、先に入れておいた。DLしたzipをC:\phpで配置し、php.iniの記述とシステム環境変数にPathを通すだけ。ちなみにこの後にCygwinを入れるため、そこでPHPのパッケージを選択するのが一番簡単。

しかし、自分の場合Composerが一部コマンドでcygwin segmentation fault (core dumped)を吐いてしまい前に進めなかったため、今回はWindow純正で入れることにした。

Cygwin

公式サイトからインストーラーをDLし、実行。パッケージは以下を選択。

  • rsync
  • openssh
  • vim-Vi IMproved
  • wget
  • bash
  • zip
  • unzip
  • git
  • curl

CygwinでPHP+Composerを入れるなら以下のパッケージを入れる必要がある。

  • php
  • php-mbstring
  • php-intl
  • php-phar
  • php-json
  • php-zlib

💡もしCygwinのインストールがうまくいかない・導入手順がわからないという場合は、Cygwin Cheat Sheetが参考になります。Thanks, Marc。

初期起動

最初に起動するとホームに.bashrcなどが書き出される。

They will never be overwritten nor automatically updated.

'./.bashrc' -> '/home/maeda//.bashrc'
'./.bash_profile' -> '/home/am//.bash_profile'
'./.inputrc' -> '/home/maeda//.inputrc'
'./.profile' -> '/home/maeda//.profile'

ウィンドウの左上をクリックするとOptionsを開けるので、そこで好みの設定を行う。

最低限、TextでLocale:ja_JP, Character set: UTF-8にしておくといい。

環境設定

CygwinのホームディレクトリはWindowsとマッチしておらず気持ち悪いので、これを合わせる。

Cygwin64\etc\fstabを開き、以下を末尾に追加する。

C:/Users/ /home/ ntfs  override,binary,auto 0 0

シェル設定

自身のホームに以下のファイルを作成・配置する。先程初期起動時に書き出されたファイルをそのままコピーして編集するのがベター。

.bash_profileを開き以下を設定。

if [ -n "${BASH_VERSION}" ]; then
  if [ -f "${HOME}/.bashrc" ]; then
    source "${HOME}/.bashrc"
  fi
fi

if [ -d "${HOME}/bin" ] ; then
  PATH="${HOME}/bin:${PATH}"
fi

.bashrcに以下を追加

# 文字コード
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8

# プロンプト文字列の設定
export PS1="\[\e[36;1m\][@\h \w]\$\[\e[m\] "

.vimrcを配置(cygwin64\etc\vimrcに雛形アリ)

"文字コードをUFT-8に設定
set fenc=utf-8
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" 入力中のコマンドをステータスに表示する
set showcmd

" 行番号を表示
set number
" 括弧入力時の対応する括弧を表示
set showmatch
" コマンドラインの補完
set wildmode=list:longest

" Tab文字を半角スペースにする
set expandtab
" 行頭以外のTab文字の表示幅
set tabstop=2
" 行頭でのTab文字の表示幅
set shiftwidth=2
" 検索語をハイライト表示
set hlsearch

Composer

cd ~
curl -sS https://getcomposer.org/installer | php
# 後の作業のため.pharはつけたままとする
mv composer.phar /usr/local/bin/
chmod +x /usr/local/bin/composer.phar

上記の場合、例えばphp composer.phar require twig/twigとしても、Windows(PHP)がUnix向けのパスを解決できないため実行できない。

composrをプロジェクトディレクトリに置いた場合(ローカルインストール)は可。そこでComposerコマンドを解決できるように.bashrcにエイリアスを作成する。

alias composer='php C:\\cygwin64\\usr\\local\\bin\\composer.phar'

Cmder

Cygwinに結合されているminttyはタブ機能がないので、もし必要ならCmderを入れるといい。

サイトから最小バージョンをDLして、好きな場所に展開し一度起動。Option>Startup>Tasksで「+」を押しCygwinを追加。"Default task for new console, Taskvar jump lists, Default shell"をチェックし、下のCommandのボックスに以下を入力。

C:\cygwin64\Cygwin.bat -cur_console:a -cur_console:d:C:\cmder {cygwin}

StartupのオプションでSpecified named taskで{cygwin}を選択する。

Vagrant_rsync

vagrantfileにtype: "rsync"と記述すれば、あとは通常の同期と同じように利用できる。

vagrant up
vagrant rsync-auto
# 別のターミナル起動
vagrant ssh

デフォルトではrsync__chownはtrue。ファイル同期の際にvagrantで一括chownされる。これが嫌ならばfalseを設定すればいい。

また、rsyncのオプションはrsync__argsで設定できる。