Vagrant_rsyncのCygwin周辺の設定
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
で設定できる。