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

初期起動

最初に起動するとホームに.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で設定できる。

コメント

  • 匿名 2017-02-28

    Cygwinでrsync-autoしてて、ctrl-Cでプロンプト戻しても、まだrsyncが生きてるんですが、解決策ありますか…?

    • maeda 2017-02-28

      「cygwin プロセス kill」でググると解決できるかもしれません。

コメントする




twelve + 20 =