最近になって、やっとPCを買い替え、OSもVistaからWindows10に変わった。
PCが変わると、最初は色々なプログラムをインストールしたり、設定したりが面倒くさいのだが、漢塾のホームページ管理上Wordpressの開発環境を構築しておく必要があり、これが最も面倒だ。
VCCWとの出会い
Wordpressのローカル環境構築にあたり、最近は簡単にインストールできるツールがネット上に色々とある。そんな中で、VCCWというものを見つけた。どうやら、Wordpressのローカル環境を構築するのはもちろん、wordmoveというローカル(自分のPC)とリモート(レンタルサーバー等)を簡単に同期してくれるツールも入っているという。
Wordpressのローカルとリモートの同期において、テーマ関係ファイルはアップロードすれば良いだけだが、最も面倒なのがデータベースの同期だ。例えば、ローカルからリモートへ同期する場合、データベースはローカルからファイルにエクスポートして、そのファイルに必要な情報変換を加え、サーバーのデータベースにそのファイルをインポートするという作業が必要だ。リモートからローカルへの同期もその逆の作業が必要だ。以前からこの煩わしさを解消してくれるツールを探していたのだが、いつの間にかそれを叶えてくれるwordmoveなるものが出現していた。
VCCWをインストールすれば、そんなツールも含みつつ、Wordpressのローカル環境を構築してくれるというのだから、誘惑されない訳がない。
しかし、VCCWはもともとWindowsのために準備されたものではなく、ネット上でもMacへのインストール記事が中心である。Windowsへのインストール記事を見つけると、いかに不具合を避けるか、いかに不具合から復帰するか、そんな内容ばかりだ。
WindowsへのVCCWのインストールは難しい
結局、俺の場合、VCCWのインストールには、延べ2〜3日を要したと思う。これは、仮想環境やコマンドプロンプト、ssh等の根本的なことを理解していなかったことが主な要因で、何度もインストールとアンインストールを繰り返した。おそらく、Macであればsshなんかは意識しなくてもインストールは一発で完了しそうなのだが。Windowsへのインストールが難しいのは、このsshが上手く行かない事が主要だろう。
誘惑に負けてしまったが、俺レベルで手を出して良いものではなかったかもしれない。
Windows10へのVCCWのインストールのながれ
VCCWをWindows10へインストールしようとした場合の作業の概要は次の通りだ。- VirtualBoxをインストール
- Vagrantをインストール
- Vagrantのプラグインをインストール
- gitをインストール
- gitでVCCWをローカルへクローン
- CygwinとOpensshをインストール
- 設定ファイル(site.yml)を作成
- Vagrantを起動し仮想環境を構築(ここまでで、Wordpressのローカル環境は整う)
- Wordpress同期用のファイル(Movefile)を編集
- 仮想環境からリモートへssh接続
- wordmoveで同期
これらを基本、コマンド操作で行っていかなければならないのだが、慣れてない人には苦痛以外の何物でもない。
WindowsへのVCCWインストール時の注意点
VCCWのインストールに当たっては、次の連載が非常に分かりやすいので、この連載を中心に他の情報も検索しながら作業すれば、インストールできる。超簡単に本番と同期できるWordPressおすすめローカル環境構築までの道のり
しかし、心底からの素人である俺には、この親切な連載でも分からなかった部分があったので、その点について、以下の通り整理しておく。
VCCWのインストール(クローンコピー)フォルダについて
以降、Cygwinによる作業について説明しているが、このCygwin、フォルダ名に日本語が含まれていると簡単に操作できない。無用なトラブルを避けるために、VCCWのインストールフォルダには日本語を使わない方がいいだろう。
コマンドプロンプトの基本について
コマンドプロンプトで作業する際に「移動する」とサラッと説明されている場合があるが、移動は「cd」コマンドで行う。 C:\hoge\hoge>cd test
C:\hoge\hoge\test>
ドライブも変わる場合は「cd/d」コマンドで。
C:\hoge\hoge>cd/d D:\hoge\hoge\test
D:\hoge\hoge\test>
コマンドプロンプトで作業する際に「移動する」とサラッと説明されている場合があるが、例えば、Opensshでssh接続する際は、そのプログラムがどこにあるかを「path」コマンドでシステムに事前に教えてあげるということだ。
その後に、sshコマンドでssh接続を行う。
path C:\Program Files (x86)\OpenSSH\bin
ssh user@domain.sakura.ne.jp
Cygwinについて
Cygwinは、見た目がコマンドプロンプトと似ている。Windowsではフォルダやファイルのパーミッション(アクセス権限)の設定が行えないので、コマンドプロンプトでパーミッションを設定するコマンド「chmod」を打ち込んでも機能しない。
しかし、Cygwinを使えば、この問題を解消できるようである。
VCCWを使うにあたっては、ssh接続を使ったほうが良いようなので、作業はコマンドプロンプトではなく、Cygwinを使ったほうが問題が起きにくい。
なお、「vagrant up」のコマンドを行う際は、Cygwinを管理者権限で立ち上げなければ、処理は正常に終了しない。管理者権限で立ち上げるには、Cygwinのアイコンを右クリックし「その他」から「管理者として実行」を選べばよい。
なお、Cygwinでは、CドライブやDドライブなどは、全て「cygdrive」にぶら下がっていることとなっているようなので、注意してほしい。
ssh接続(公開鍵のリモート設置)について
紹介した連載におけるローカルとリモートのssh接続においては、リモートサーバーをエックスサーバーとして説明されているが、俺はさくらのレンタルサーバーであったため、公開鍵のリモート設置の方法が異なった。作業は全て、Cygwinで行う。Vagrantを立ち上げ、仮想環境にssh接続し、仮想環境の立場で秘密鍵と公開鍵を作成し、それらのパーミッションを書き換え、リモートサーバーに公開鍵を名前を変えてコピーし、リモートサーバーの公開鍵のパーミッションを書き換える。
実際のコマンドは次のとおりだ。
# VCCWのフォルダへ移動
cd /cygdrive/D/hoge/hoge/vccw/
# Vagrantを立ち上げる
vagrant up
# 仮想環境にssh接続
vagrant ssh -t rsa
# 鍵を生成
ssh-keygen
# パーミッション書き換え等
chgrp -R Users ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub
# リモートサーバーに公開鍵をコピー
scp ~/.ssh/id_rsa.pub ユーザー名@初期ドメイン.sakura.ne.jp:~/.ssh/authorized_keys
# リモートサーバーにssh接続
ssh ユーザー名@初期ドメイン.sakura.ne.jp
# パスワードを入力
# リモートの公開鍵のパーミッション書き換え
cd vagrant
chmod 400 ~/.ssh/authorized_keys
# 終了処理
logout
vagrant halt
ローカルサーバーが重い
ローカルサーバーにアクセスすると、ページが表示されるまでにとてつもない時間がかかる。
これもWindowsであるが故の問題らしいが、インターネット上には幾つかの対策が紹介されている。
一つは、「site.yml」の10行目付近、Virtual Machine Settingsのメモリの量を「512」から「1024」や「2048」に増加させることだ。
#
# Virtual Machine Settings
#
memory: 1024
cpus: 1
ここで、「cpus」を増加させたいところだが、Windowsではいじらない方がよさそうである。もう一つは、WindowsがNFSに対応していないことが原因で時間を要していることを解決する方策で、NFSに対応できるようプラグインを導入し、VagrantfileにNFS関係の設定を書き込んでいく。
まずは、プラグインをインストールする。
vagrant plugin install vagrant-hostsupdater
そして次に、「vccw」フォルダ内にあるVagrantfileの60行目付近を次のとおり書き換える。
#元の記載
config.vm.synced_folder ".", "/vagrant",:mount_options => ['dmode=755', 'fmode=644']
config.vm.synced_folder _conf['sync_folder'], _conf['document_root'], :create => "true", :mount_options => ['dmode=755', 'fmode=644']
#次のとおり書き換え
config.vm.synced_folder ".", "/vagrant", type: "nfs"
config.vm.synced_folder _conf['sync_folder'], _conf['document_root'], type: "nfs"
最後に
さて、VCCWの一番のメリットは、wordmoveによるデータベースの同期である。頻度が低ければ、それ以外にVCCWでなければならない理由は特に見当たらない。これだけ苦労してWindowsでVCCWを使うかどうかは、検討したほうが良いだろう。
0 コメント:
コメントを投稿