[再インストールメモ1] - Laravel Homestead + phpMyAdmin 環境構築
0から1へ Laravel開発環境を構築し、phpMyAdmin GUIでMySqlデータベースを管理する

最近Macをリセットしたので、Laravel開発環境を再構築した手順を記録します。
環境要件
-
Vagrant :仮想環境構築ツール
-
VirtualBox :無料の仮想マシンソフトウェアです。すでにParallelsを購入している場合は、Parallelsを直接使用できます(ただし、プラグインのインストールが必要です)。
ダウンロードとインストールが完了したら、次の設定に進みます。
VirtualBoxのインストール時に再起動が必要で、「設定」->「セキュリティとプライバシー」->「VirtualBoxを許可」を有効にして、すべてのサービスを起動する必要があります。
Homestead 環境の設定
git clone https://github.com/laravel/homestead.git ~/Homestead
cd ~/Homestead
git checkout release
bash init.sh
phpMyAdmin
phpMyAdminはPHPをベースにした、Web上で動作するMySQLデータベース管理ツールで、管理者はWebインターフェースを使ってMySQLデータベースを管理できます。このインターフェースにより、複雑なSQL文の入力が簡単になり、特に大量データのインポート・エクスポートが便利です。 — Wiki
- [phpMyAdmin
phpMyAdmin](https://www.phpmyadmin.net/){:target=”_blank”} の公式サイトから最新バージョンをダウンロードしてください。
解凍 .zip -> フォルダ -> フォルダ名の変更 -> 「phpMyAdmin」:

phpMyAdmin フォルダを ~/Homestead フォルダに移動する:

phpMyAdmin 設定
phpMyAdmin フォルダ内の config.sample.inc.php を見つけて、config.inc.php に名前を変更し、エディタで開いて以下の設定に変更してください。
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* phpMyAdminのサンプル設定です。手動設定のベースとして使用できます。
* より簡単に設定するにはsetup/を使用してください。
*
* すべてのディレクティブはdoc/フォルダ内のドキュメント
* または<https://docs.phpmyadmin.net/>で説明されています。
*
* @package PhpMyAdmin
*/
declare(strict_types=1);
/**
* クッキー認証でパスワードを暗号化するために必要です。
* 32文字である必要があります。
*/
$cfg['blowfish_secret'] = ''; /* クッキー認証のために必ず入力してください! */
/**
* サーバー設定
*/
$i = 0;
/**
* 最初のサーバー
*/
$i++;
/* 認証タイプ */
$cfg['Servers'][$i]['auth_type'] = 'config';
/* サーバーのパラメータ */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'homestead';
$cfg['Servers'][$i]['password'] = 'secret';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
/**
* phpMyAdminの設定ストレージ設定。
*/
/* ストレージ操作に使用するユーザー */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* ストレージ用データベースとテーブル */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
/**
* サーバー設定の終了
*/
/**
* サーバーからのファイルの保存/読み込み用ディレクトリ
*/
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
/**
* テーブル行の操作セグメントでアイコン、テキスト、またはその両方を表示するかどうか。
* 値は 'icons', 'text', 'both' のいずれか。
* デフォルト = 'both'
*/
//$cfg['RowActionType'] = 'icons';
/**
* ブラウズモードで「すべて表示(レコード)」ボタンを表示するかどうか。
* デフォルト = false
*/
//$cfg['ShowAll'] = true;
/**
* 結果セットをブラウズするときに表示する行数。
* 結果セットにそれ以上の行がある場合、「前へ」と「次へ」が表示される。
* 指定可能な値: 25, 50, 100, 250, 500
* デフォルト = 25
*/
//$cfg['MaxRows'] = 50;
/**
* バイナリフィールドの編集を禁止する設定
* 有効な値は以下の通り:
* false 編集を許可
* 'blob' BLOBフィールドを除き編集を許可
* 'noblob' BLOBフィールドを除き編集禁止
* 'all' 編集禁止
* デフォルト = 'blob'
*/
//$cfg['ProtectBinary'] = false;
/**
* ブラウザやユーザーで定義されていない場合のデフォルト言語
* (localeフォルダ内にすべての言語があります)
* 使用したい行のコメントを外してください:
* デフォルト = 'en'
*/
//$cfg['DefaultLang'] = 'en';
//$cfg['DefaultLang'] = 'de';
/**
* データベースのテーブル表示に使用する列数
* (1より大きい値は一部情報が隠れることがあります)
* デフォルト = 1
*/
//$cfg['PropertiesNumColumns'] = 2;
/**
* DBベースのクエリ履歴を使用する場合はtrueに設定。
* falseの場合はJSルーチンでクエリ履歴を表示(ウィンドウを閉じると消失)
*
* これには設定ストレージの有効化が必要、上記参照。
* デフォルト = false
*/
//$cfg['QueryHistoryDB'] = true;
/**
* DBベースのクエリ履歴で保持するエントリ数
* デフォルト = 25
*/
//$cfg['QueryHistoryMax'] = 100;
/**
* JavaScriptエラー発生時にphpMyAdminチームへエラー報告を送信する前に
* ユーザーに確認するかどうか
*
* 選択肢
* ('ask' \\| 'always' \\| 'never')
* デフォルト = 'ask'
*/
//$cfg['SendErrorReports'] = 'always';
/**
* その他の設定オプションは
* doc/フォルダ内のドキュメントまたは<https://docs.phpmyadmin.net/>で確認できます。
*/
主に以下の3つの設定を追加・変更します:
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'homestead';
homestead のデフォルトMySQLユーザー名とパスワードは
homestead/secretです。
Homesteadの設定配置
エディタで ~/Homestead/Homestead.yaml 設定ファイルを開きます。
---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Projects/Web
to: /home/vagrant/code
- map: ~/Homestead/phpMyAdmin
to: /home/vagrant/phpMyAdmin
sites:
- map: phpMyAdmin.test
to: /home/vagrant/phpMyAdmin
databases:
- homestead
features:
- mysql: false
- mariadb: false
- postgresql: false
- ohmyzsh: false
- webdriver: false
#services:
# - enabled:
# - "postgresql@12-main"
# - disabled:
# - "postgresql@11-main"
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
-
IP: デフォルトは192.168.10.10で、変更してもそのままでも問題ありません。 -
provider:デフォルトはvirtualboxです。Parallelsを使用する場合のみ変更してください。 folders:に以下を追加- map: ~/Homestead/phpMyAdmin
to: /home/vagrant/phpMyAdmin
- map: ~/Homestead/phpMyAdmin
sites:に以下を追加- map: phpMyAdmin.test
to: /home/vagrant/phpMyAdmin
- map: phpMyAdmin.test
既にLaravelプロジェクトがある場合も、ここに追加できます。例えば、私のプロジェクトはすべて ~/Projects/Web にあるので、先にディレクトリマッピングを追加しました。
sites はローカルの仮想ドメインとディレクトリのマッピングを設定しますが、ローカルの Hosts ファイルを編集してドメインと仮想マシンのマッピングも追加する必要があります:
Finder -> 移動 -> /etc/hosts を開き、hosts ファイルを見つける;直接編集できないためデスクトップにコピーする
ドメイン名は自由に設定でき、自分のローカルマシンからのみアクセス可能です。
コピーした Hosts ファイルを開き、sites の記録を追加します:

<homestead IP アドレス> <ドメイン名>
修正したら保存し、その後コピーして /etc/hosts に貼り付けて上書きしてください。
Homestead バーチャルマシンのインストール&起動
cd ~/Homestead
vagrant up --provision
⚠️ご注意ください 、
--provisionオプションを付けないと設定ファイルが更新されず、URLにアクセスするとno input file specifiedエラーが表示されます。
初回起動時は、Homestead環境パッケージのダウンロードが必要で、時間がかかります。

特別なエラーが表示されなければ起動成功です。以下を実行してください:
vagrant ssh

sshで仮想マシンに接続します。
phpMyAdminが正しく接続されているか確認する
http://phpmyadmin.test/ にアクセスして、正常に開けるか確認してください。

成功!データベースを操作する必要がある場合は、ここで直接変更してください。
新しい Laravel プロジェクトの作成
既存のプロジェクトがある場合は、この段階でブラウザからローカルで動作確認ができます。もしない場合は、ここで新しい Laravel プロジェクトの作成方法を補足します。
~/Homestead
vagrant ssh
vagrant ssh でVMに入り、codeディレクトリに移動します:
cd ./code
下 laravel new プロジェクト名 を実行し、Laravelプロジェクトを作成します:(例として blog)
laravel new blog


blog プロジェクトの作成に成功しました!
次にプロジェクトの設定でローカルマシンからテスト用ドメインにアクセスできるようにします:
改めて ~/Homestead/Homestead.yaml 設定ファイルを開きます。
sites に新しいレコードを追加します:
sites:
- map: myblog.test
to: /home/vagrant/code/blog/public
hostsにも対応する記録を追加することを忘れないでください:
192.168.10.10. myblog.test
最後に homestead を再起動します:
vagrant reload --provision
ブラウザに http://myblog.test を入力して、正しく構築&動作しているかテストします:

完了!
補足 — MacでのComposerインストール
Homesteadを使えばComposerを別途インストールする必要はありませんが、PHPプロジェクトの中にはLaravelを使わないものもあるため、ローカル環境にComposerをインストールしておく必要があります。

ダウンロードセクションのコマンドをコピーし、php composer-setup.php を以下に置き換えてください:
php composer-setup.php - install-dir=/usr/local/bin - filename=composer
Composer v2.0.9 の例:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'インストーラーが確認されました'; } else { echo 'インストーラーが破損しています'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"
そして順番にターミナルでコマンドを入力します。
⚠️ご注意ください 上記の例をそのままコピーして使用しないでください。Composerのバージョンが更新されると、hashチェックコードも変わるためです。

composer -V を入力してバージョンとインストールの成功を確認しましょう!

参考資料
Post は ZMediumToMarkdown によって Medium から変換されました。



コメント