吾輩の開発環境構築手順をメモっておく【備忘録】

## はじめに

開発用のパソコンを新調すると必ずやってくる”開発環境の設定”
試行錯誤しながら整えた開発環境は、見様見真似でうまくいったりしているので、まとめたやろうとすると右往左往

今回もMacOSが64bit化したり、ツールがメジャーバージョンアップしていたりで、うろ覚えの作業ではスムーズに進められなかった

次回はサクサク作業が進むように、一連の手順をメモして公開しておきます [^0]

[^0]: 今までテキストデータで保存していたが、保存場所を忘れたりうっかり削除したりしてしまったのでQiitaに残すことにしました

---


## 試行環境

iMac (Retina 5K, 27-inch, 2019)

| ソフトウェア | バージョン |
|:--|:-:|
| MacOS | 10.15.6 | 
| Apache | 2.4.41 [^1] |
| PHP | 7.3.11 |
| MySQL | 8.0.21 |

[^1]: プリインストール

---

## ライブラリ群をインストールする

---

### homebrewをインストール

[Homebrew](https://brew.sh/index_ja)

今後のセットアップをスムーズに行うためには必要

---

### node brew, nodeをインストール

Javascriptをメインにフロントエンドを開発するには必須

```
$ brew install nodebrew
```
```
$ nodebrew install-binary latest
```

---

### yarnをインストール

```
$ brew install yarn --ignore-dependencies
```
公式などをみると上記のオプションを指定するように指示されているが、今回このオプションがあるとエラーが発生してしまった
オプションなしでインストールしたが、特にトラブルは発生していない

---

### PHPをインストール

brew経由でのインストールを反映させるため、PHPもプリンストールではなくbrewで新規にインストールする

```
$ brew install php@7.4
$ brew link --force --overwrite php@7.4
 ~ 中略 ~
$ echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.zshrc
& echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc
```

#### composerのインストール

```
$ brew install composer
```

---

### MySQLのインストール
```
$ brew install mysql
```
現在、上記のコマンドだとMySQL 8がインストールされてしまう
サーバーに合わせてMySQL@5.7をインストールしたかったが、SQLサーバ起動時にエラーが出てしまいどうやってもうまくいかなかった
解決できなかったエラーは以下の二つ

```
$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/XXXXXXXX.local.pid).
```
```
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
```

---

### MySQLのアカウント作成、およびデータ復元

#### アカウントを作成する

MySQL8.0では認証方式が変わっているため、それを従来のものに変更しておく

```
CREATE user [name]@localhost IDENTIFIED WITH mysql_native_password BY '[password];
```

```
SELECT user, host, plugin FROM mysql.user;
```

#### 受け皿となるスキーマを作成する

```
CREATE SCHEMA [database]
GRANT ALL ON [database].* TO [user]@localhost;
```

#### 稼働中のSQLサーバーからデータを取り出す

```
$ mysqldump -u [user] -p [database] > -backup_data.sql
```

#### 新しいSQLサーバーへデータを復元する

```
$ mysql -u [user] -p omni_connect < -omni_connect.sql
$ mysqldump -u [user] -p [database] > -backup_data.sql
```

---

## SQLiteの注意点（追記：2020-09-16）

マウントしたネットワークドライブのデータベースファイルにアクセスできない
ローカルにコピーして、ファイルパスを正しく設定すれば読み込むことができる

Catalinaのアクセス制限によるものだろうか

---

## ApacheやPHPの設定をする

---

### httpd.confを調整する

#### httpd.confの実行ユーザやサイトネームなどを調整する

```
User [name]
Group everyone

ServerName localhost
```

#### httpd.confにて必要なライブラリのコメントアウトを外して有効にする

```
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
```

#### webコンテンツの配置とエイリアス設定をする
複数あるのでSites以下に配置するのだが、SitesをDesktopに配置してapacheを起動するとアクセス権でエラーが出てしまった
パーミッションなどを調整したが、うまくいかなかったため、ユーザーのホームフォルダに配置した

```
<IfModule alias_module>
	Alias /graphql "/Users/[name]/GitHub/[appName]/public"
	<Directory "/Users/[name]/GitHub/[appName]/public">
  		AllowOverride All
  		Options None
  		Require all granted
	</Directory>
</IfModule>
```

テスト中のコンテンツを上記設定に合わせてコピーする

```
/Users/[name]/Sites/[appName]/
```

---

### MySQLを有効にする

既に有効になっていたようで、特に何もすることなくPHPからのデータ参照が行えた

#### Laravelのsocketを調整する

うまくいかない時のチェック項目
.envなどで設定しているMySQLのSocket情報を以下のコマンド結果と同じか確認する

```
$ mysql_config --socket
```

---

### SQLServerを有効にする

GNU make ツールやMicrosoft SQL Server 用 PHP ドライバーのインストールを行う

```
$ brew install autoconf automake libtool
$ sudo pecl install sqlsrv
$ sudo pecl install pdo_sqlsrv
```

php.iniの設定変更が必要なはずだが、特に何もしなくても自作APIが動いた

一方、Laravelで開発しているgraphqlのAPIはデータベース接続エラーが生じて動かない

https://go.microsoft.com/fwlink/?LinkId=163712 をみろと言われたが、どれをダウンロードしてどうすれば良いのやら・・・

追記

```
$ brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
$ brew update
$ HOMEBREW_NO_ENV_FILTERING=1 ACCEPT_EULA=Y brew install msodbcsql17 mssql-tools
```

上記コマンドを実行でアクセスに成功
参考：[Create PHP apps using SQL Server on macOS](https://www.microsoft.com/en-us/sql-server/developer-get-started/php/mac/?rtc=1)

---

### その他、必要なツールのインストール

- [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
- [MySQLWrokbench](https://www.mysql.com/jp/products/workbench/)
- [Google Chrome](https://www.google.co.jp/chrome/)

---

## さいごに

数年ぶりのテストサーバ（開発用PC）の入れ替えと再設定は右往左往でした
ライブラリなどのバージョンも変わっているため、同じバージョンの導入に難関があったりして、コピペですんなりとはいかない
特にSQLServerへのアクセスは変わらずつまずいてばかりでした

備忘録は大事