WindowsにVagrantとか入れてLAMPサーバ+αを立てるまでを１から説明する - 暗号通貨のウェブウォレットを(ry その１

# 追記@2018/03/20
この連載は休止となりました。詳しくは初回の投稿をご覧ください。

- [暗号通貨のウェブウォレットっぽいものをPHPで作る その０](http://qiita.com/syoboon77/items/917c3ce6190ca61b6795)


#以下、追記前の本文
このページは「暗号通貨のウェブウォレットっぽいものをPHPで作る」計画の一部です。計画については前回のページをご覧ください。


# 概要
前回は、計画の経緯や全体像の説明を行いました。今回は、WindowsのPCに必要なツールをインストールし、Webサーバ（LAMPサーバ）とmonacoindが仮想マシン内で動作するようになるまでの解説を行います。  
なお、作業手順16までを行って手順17以降を行わなければ、LAMPサーバだけがセットアップされます。暗号通貨とは関係なくVagrantでLAMPサーバを立てたい方の参考にもなれば幸いです。

また、作業中に `myapp` と記載されている部分はプロジェクト名であり、任意の文字列に置き換えても動作する…はずです。  

# 作業内容の要約
## 1. 下記の5つをインストールして、使えるように整える。
- Vagrant: 仮想開発環境構築ソフトウェア。VPS(＝本番環境)とほぼ同じ環境の仮想PC(開発環境)をPCの中に作る
- Tera Term: ターミナルエミュレータ。Vagrantで作成した開発環境やVPSに接続し、コマンドラインで操作する
- Filezilla: ファイル転送ソフトウェア。開発環境やVPSなどのサーバに接続し、ファイルを送受信する
- Git: バージョン管理ソフトウェア。サイトを構成するプログラムの編集履歴を管理できる
- Visual Studio Code: 実際にプログラムを作成するための高機能テキストエディタ (以下VSCode)
- SourceTree: Gitの操作をGUIで行うことができる、フロントエンド

## 2. Vagrantで仮想マシンを作成して、サーバ環境を整える。

作業の途中でパスワードを設定したりする場面がいくつかあります。  
パスワードなどの情報をメモしておけるよう準備しておくことをお勧めします（PC上のテキストエディタでも大丈夫）  
また、パスワード生成サイトなどを別タブで予め開いておくと、新しいパスワードを考える必要がなくなる…かも？

# 作業

## 1. Vagrant、Tera Term、FileZilla、Git、VSCodeをインストール
以下のサイトに従うか、あるいは自力でインストールしてもOK。  
※上から順にインストールするのを強く推奨  
※SourceTreeのインストール中に「Atlassianアカウント」が必要になる。リンク先の手順に従って登録してOK

- Vagrant: https://weblabo.oscasierra.net/install-vagrant-onto-windows/
- Tera Term: http://www.j-oosk.com/teraterm/install/42/
- FileZilla: https://bibabosi-rizumu.com/backup-filezilla/
- Git: http://vdeep.net/git-for-windows
- VSCode: https://eng-entrance.com/texteditor-vscode
- Sourcetree: http://itstudio.co/2016/05/15/5652/

## 2. VSCodeに拡張機能をインストール
VSCodeを起動して[Ctrl+Shift+X]を押し、「拡張機能」タブを開く。 
検索欄に「PHP」と入力して出てくる「PHP Debug」と「PHP IntelliSense」をインストールする。

## 3. インストールボタンがあった場所に「再読み込み」ボタンが表示されるので、２つのうちどちらかをクリック
VSCodeがリフレッシュ？されるが、当分の間使わないので閉じる。

## 4. Vagrant用の作業フォルダを作成し、設定？を行う
コマンドプロンプトを開き、以下を実行

```
> cd c:/
> mkdir vagrant
> cd vagrant
> mkdir myapp
> cd myapp
> vagrant init bento/ubuntu-16.04
```

※上記を実行した後、コマンドプロンプトを閉じないこと

これにより、Vagrantが自動的に設定ファイル「Vagrantfile」を作成します。  
このファイルには、どのようなOSで仮想マシン（＝仮想PC）を作成し、どのような設定で動作させるか…などが記載されています。

## 5. 動作設定を少し変更するため、Vagrantfileを編集。
VSCodeを起動して[Ctrl+O]を押し、 C:\vagrant\myapp\Vagrantfile を開きます。

## 6. 最終行（「end」とのみ記述されている）の前に新たな行を作り、以下をコピペして保存、閉じる。

```
  # メモリを1GBに
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024" 
  end
  # 共有フォルダのパーミッションを777に
  config.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=777']
  # ホストの80番ポートへのアクセスを仮想マシンの80番ポートに転送
  config.vm.network "forwarded_port", guest: 80, host: 80
  # 仮想マシンのIPアドレスを 192.168.33.10 とし、ホストから接続できるように
  config.vm.network "private_network", ip: "192.168.33.10"
```

## 7. 以下のURLを開いて「Raw」ボタンをクリックし、出てきたテキストを保存。３つあるのでもう一度繰り返す。

- https://gist.github.com/syoboon77/aa4e3574d93353e6f3d9c95f01d574c9
- https://gist.github.com/syoboon77/e5df180a6e00b6110d5969f7ef0d57a0
- https://gist.github.com/syoboon77/317e46cefc201f7021cccc98e8a759f3

## 8. 保存した sed_apache2_conf.txt と sed_php_ini.txt を C:\vagrant\myapp\ にコピー。

## 9. コマンドプロンプトで以下を実行

```
> vagrant up
```

VagrantがVagrantfileから仮想マシンを作成し(初回のみ)、設定を読み込んで起動します。

## 10. Tera Termを起動し、 `127.0.0.1:2222` と入力して接続。
認証を求められたら、ID/パスワード共に「vagrant」でログインできます。  
このような画面が表示されれば、仮想マシンの作成までは完了です！
![oujQU01.png](https://qiita-image-store.s3.amazonaws.com/0/198234/2547b540-a182-db3c-c16b-9a3760d3d266.png)


## 11. そのままTera Termで以下を実行します。もしパスワードを要求されたら「vagrant」でOK。
（Vagrant内の仮想マシンはsudoでパスワードを要求しない…？）

```
$ sudo apt-get update
$ sudo apt-get install vim curl git apache2
```

これにより、以下の4つがインストールされました。
- Tera Term上で設定ファイルなどの編集ができる「Vim」
- 同じくTera Term上でファイルのダウンロードなどができる「Curl」
- 同じくバージョン管理を行える「Git」
- 説明不要のWebサーバ「Apache」

またセットアップ作業も自動で行われるので、この時点で http://127.0.0.1/ にアクセスすると「It works!」などと書かれたページを見ることができます。

## 12. MariaDBのインストール

```
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.2/ubuntu xenial main'
$ sudo apt-get update
$ sudo apt-get install mariadb-server
```

最後まで実行し終えると、データベースのrootユーザのパスワードを設定するよう求められます。  
新しいパスワードを一つ作ってメモしておき、それをTera Termに2回入力すれば元の画面に戻ります。

これで、MySQL互換のデータベース「MariaDB」がインストールされました。1行毎の説明は以下の通りです。
- リポジトリ(ソフトウェア配信元)を追加するのに必要なものをインストール
- リポジトリの追加
- 同上
- 情報の更新
- MariaDBのインストール

## 13. MariaDBの初期設定

```
$ sudo mysql_secure_installation
```

まずMariaDBのrootパスワードを尋ねられるので、先ほどのパスワードを入力します。  
いくつか選択を要求されるので、以下のように。
- rootのパスワードを変更するか？ → 「n」と入力して [Enter]
- 匿名ユーザを削除するか？ → 「y」と入力して [Enter]
- リモートからのrootでのログインを禁止するか？ → 「y」
- testデータベースを削除するか？ → 「y」
- テーブルのアクセス権をいますぐリロードするか？ → 「y」

これで、MariaDBの初期設定も完了しました。

## 14. PHPのインストールされて、バージョン情報の表示テスト

```
$ sudo apt-get install php libapache2-mod-php php-mysql php-mbstring php-mcrypt php-curl php-xml php-zip
$ php -v
```

## 15. 公開フォルダにphpinfo.phpを作成し、動作を確認
続いて、Tera Termで以下を実行。

```
$ sudo touch /var/www/html/phpinfo.php
$ sudo chmod 666 /var/www/html/phpinfo.php
$ echo "<?php phpinfo();" > /var/www/html/phpinfo.php
```

一度ブラウザを開いて http://127.0.0.1/phpinfo.php を開いてみてください。  
PHPや、それを動かしている仮想マシンなどの情報が表示されればPHPのインストールも完了です。

## 16. apache2.confとphp.iniを編集し、反映するためApache2を再起動。
内容は手順7のリンク先（GitHub Gist）で確認できます。  
Tera Termで以下を実行。

```
$ sudo sed -i.bk -f /vagrant/sed_apache2_conf.txt /etc/apache2/apache2.conf
$ sudo sed -i.bk -f /vagrant/sed_php_ini.txt /etc/php/7.0/apache2/php.ini
$ sudo systemctl restart apache2
```

念の為、phpinfo.phpを開いていたブラウザ画面を更新して正常に表示されるか確認。

## 17. monacoindとsupervisorをインストール
```
$ sudo add-apt-repository ppa:visvirial/monacoin
$ sudo apt-get update
$ sudo apt-get install monacoind supervisor
```

## 18. 暗号通貨ウォレット管理用のユーザーを作成
ユーザー `coinmaster` を作成します。予めパスワードを作っておきましょう。
Tera Termで以下を実行。

```
$ sudo adduser coinmaster
```

パスワードを２回要求されるので入力し、その後の質問は全て空欄で [Enter] すれば元の画面に戻ります。

## 19. 暗号通貨のデータを格納するフォルダを作成
Tera Termで以下を実行。

```
$ sudo mkdir /coindata
$ sudo mkdir /coindata/monacoin-main
$ sudo chown -R coinmaster /coindata
$ sudo chmod -R 700 /coindata
```

## 20. monacoindの動作設定をsupervisorに登録し、反映させる
Tera Termで以下を実行。

```
$ sudo cp /vagrant/monacoin-main.conf /etc/supervisor/conf.d/monacoin-main.conf
$ sudo supervisorctl reload
$ sudo supervisorctl status
```

返ってきた情報を見て、 `monacoin-main` の右に `RUNNING` と表示されていれば完了です！

# To be continued...
次はcomposerを導入し、Laravelを使ってWebサイトを作れるようになるまでの解説を行う予定です。

- [monacoind入れたLAMPサーバにLaravelも入れる - 暗号通貨のウェブウォレットを(ry その２ - Qiita](http://qiita.com/syoboon77/items/0d15bafdf8c630fb0063)