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


はじめに

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

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

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


試行環境

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

ソフトウェア バージョン
MacOS 10.15.6
Apache 2.4.41 2
PHP 7.3.11
MySQL 8.0.21

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


homebrewをインストール

Homebrew

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


node brew, nodeをインストール

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

$ brew install nodebrew
$ nodebrew install-binary latest

yarnをインストール

$ brew install yarn --ignore-dependencies

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


PHPをインストール

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

$ brew install [email protected]
$ brew link --force --overwrite [email protected]
 ~ 中略 ~
$ echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
& echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc

composerのインストール

$ brew install composer

MySQLのインストール

$ brew install mysql

現在、上記のコマンドだとMySQL 8がインストールされてしまう
サーバーに合わせて[email protected]をインストールしたかったが、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/[email protected]/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


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


さいごに

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

備忘録は大事


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

  2. プリインストール