初めてのvccw環境構築で躓いたあれこれ

## 今回実現したいこと

- BitBucketのリポジトリからローカル環境へのクローン
- vccwを用い、OSの環境に依存しないWordPress開発環境を構築する
- gulpの導入

## 手順

- BitBucketのリポジトリページ「クローンの作成」からコマンドをコピーし、<br>リポジトリを配置したいディレクトリ下で`git clone〜`を実行
- [vccwの導入](http://vccw.cc/)
- [gulpの導入「gulpへの理解を深め、環境構築をしてみよう！」](https://qiita.com/yurippine/items/c306b15e738ac927ffca)

## つまずきポイント

```:git&nbsp;cloneの際にパスワード入力求められるが設定した覚えがない
Password for ‘https://[ユーザ名]@bitbucket.org’:

```

**原因**：BitbucketにGoogle認証でユーザ登録しただけでは、パスワードが発行されない為
**対処**：Bitbucketのトップページから個人設定でパスワードを発行する
**参考サイト**：[BitbucketにGoogle認証している人はcloneためにパスワードを発行しましょう](https://zenn.dev/grahamian/articles/58381c7fef9a3b)
<br>

```:VirtualBox起動時のエラー
VirtualBox COMオブジェクトの確保に失敗しました。アプリケーションを終了します。

Document is empty.
Location: ‘/Users/ユーザ名/Library/VirtualBox/VirtualBox.xml’, line 1 (0), column 1.
/Users/vbox/tinderbox/6.1-mac-rel/src/VBox/Main/src-server/VirtualBoxImpl.cpp[740] (nsresult VirtualBox::init()).

```

**原因**：VirtualBox.xmlファイルの中身が空になっていた
**対処**：
1. rmコマンドでVirtualBox.xmlを削除　
2. VirtualBox.xml-prevというバックアップファイルをVirtualBox.xmlという名前に更新する
<br>

```:vagrant&nbsp;upでのエラー①
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or,
get an ID of a target machine from `vagrant global-status` to run
this command on. A final option is to change to a directory with a
Vagrantfile and to try again.

```

**原因**： カレントディレクトリの相違
**対処**： Vagrantfileがあるディレクトリへ移動してから再実行
<br>

```:vagrant&nbsp;upでのエラー②
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["import", "/Users/ユーザ名/.vagrant.d/boxes/vccw-team-VAGRANTSLASH-xenial64/
20180107/virtualbox/box.ovf", "--vsys", "0", "--vmname", "vccw-xenial64_default_1515
273345584_52233_1633075723925_27924", "--vsys", "0", "--unit", "13", "--disk",
"/Users/ユーザ名/VirtualBox VMs/vccw-xenial64_default_1515273345584_52233_1633075723925_27924/box-disk001.vmdk"]

```

**原因**： ホストOS側の容量不足(importコマンドでエラーが発生した場合は読み込み周りを疑う！)
**対処**： ストレージ開放し、空き容量を確保する。
<br>

```:vagrant&nbsp;upでのエラー③
default: Warning: Authentication failure. Retrying…

```

**原因**： VMで生成されるSSH秘密鍵とゲストOS上のSSH公開鍵の不一致
**対処**： SSH秘密鍵から公開鍵を生成し、ゲストOSで設定されている公開鍵を書き換える。

1. **秘密鍵を確認**<br>`$ vagrant ssh-config` => IdentityFileに表示される部分が秘密鍵ファイル 
2. **秘密鍵ファイルを用いて、公開鍵を生成する**<br>`$ ssh-keygen -yf ****/vagrant_private_key > public_key`
3. **vagrant sshでログインし、authorized_keysの公開鍵の情報を先ほど生成した公開鍵の中身に置き換える。**<br>`$ vi /home/vagrant/.ssh/authorized_keys`
4.  **vagrantの再起動**<br>
`$ vagrant reload`
<br>
<br>


```:vagrant&nbsp;upでのエラー④
TASK [Download the Composer] ***************************************************
fatal: [****.local]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to validate the SSL certificate for [getcomposer.org:443](<http://getcomposer.org:443/>). Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible. The exception msg was: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)."}
to retry, use: --limit @/vagrant/provision/playbook.retry

PLAY RECAP *********************************************************************
****.local            : ok=4    changed=3    unreachable=0    failed=1

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

```

ansibleで失敗しているとのことだったので、一度これを削除し、最新版を再インストール！
`$ brew uninstall ansible —force`
`$ brew install ansible`

…しかし直らず(インストールにはかなり時間が掛かりました)。

**原因**：おそらくcloneしてきたファイルからvagrant initにて自動生成されたVagrantfileの設定が、現在のバージョンと合わなかったため。
**対処**：[VCCW](http://vccw.cc/)の.zipフォルダから取得してきたデフォルトのVagrantfileを使用する
<br>

```:npm&nbsp;install&nbsp;-gでのエラー
pm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /usr/local/lib/node_modules
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules’
npm ERR!  [Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules’] {
npm ERR!   errno: -13,
npm ERR!   code: ‘EACCES’,
npm ERR!   syscall: ‘access’,
npm ERR!   path: ‘/usr/local/lib/node_modules’
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
```
**原因**：  npmのパスを通す(=プログラム名だけで実行できるようにする)必要がある
**対処**： 
1. `$ mkdir ~/.npm-global`
2. `$ npm config set prefix '~/.npm-global'`
3. `$ echo ' export PATH=~/.npm-global/bin:$PATH' >> ~/.bash_profile`
4. `$ source ~/.bash_profile`
5. `$ npm install -g gulp`
<br>

### 最後に
かなり初歩的なミスも散見されると思いますが、自戒の念を込めて記録しておくことにしました。
何か間違いなどありましたら、そっとお伝えください！