AWS+laraveのDBセッティング
laravelで使うDBの選定
AWSのRDBサーバーを別に立てようかと思ったのですが、
無料枠で2インスタンスを起動させるのは無料枠を出てしまう。
お金をかけてがっつり使うならAmazon Auroraも候補に入れていました。
ここで無料で使う候補としては
- mysql
- postgres
- mariadb
mysql・mariadb系とpostgres系だとpostgres系の方が
インスタンス料金が高いので、今回はミニマムで作る予定なので
mysql・mariadbを採用します。
最初はmariadbを採用する予定でしたが、途中で少し使い辛い所があり
mysqlを採用に変更しました。
mariadbのインストールの場合
sudo yum install -y mariadb-server
mariadbの起動
sudo systemctl start mariadb
mysqlをインストールの場合
mysql8.0リポジトリの追加(このリポジトリに5.7も含まれています)
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
mysql8.0リポジトリの無効化
sudo yum-config-manager --disable mysql80-community
mysql5.7リポジトリの有効化
sudo yum-config-manager --enable mysql57-community
mysql5.7がインストールできるか確認
yum info mysql-community-server
下記コマンドでインストール
yum -y install mysql-community-server
mariadbとmysql共通
mysqlの起動
sudo systemctl start mysqld.service
rootのパスワードの確認
cat /var/log/mysqld.log | grep password
初期設定
mysql_secure_installation
ログイン
mysql -u root -p
ユーザーを作成する。
create user ユーザー名
パスワードを変更する。
set password for ユーザー名 = password('設定するパスワード');
データベースの作成
create database データベース名
LaravelとDBの接続設定
設定ファイルを編集する。Laravelを編集したフォルダに移動する。
.envファイルを編集する。
config/database.phpもあるが、.envを設定すればenv()関数で値を参照するようになっているのでこちらはいじらなくて良い。
vi .env
でファイルを下記のように編集
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=作成したデータベース名を入力
DB_USERNAME=ユーザー名を入力
DB_PASSWORD=パスワードを入力
今回はAPサーバーとDBサーバーが同じなのでDB_HOSTはlocalhostを設定する。
ポート番号は初期は3306なので変更はないが確認する場合はsqlコマンドで
show variables like 'port';
を実行すれば確認できる。
Laravelのマイグレーションを実行
laravelをインストールしたフォルダに移動して下記コマンドでテストテーブルを作成する為のマイグレーションファイルをdatabase/migrations配下に作成してくれます。
php artisan make:migration create_tests_table --create=tests
上記以外で、さくっと認証画面を作成するコマンドを使ってDBと画面遷移をテストする場合は下記のコマンドを実行する。
php artisan make:auth
マイグレーションの実行
php artisan migrate
コマンドを実行してMigration table created successfully.が表示されれば成功。
追加でマイグレーションファイルを追加した場合は下記コマンドで実行する。
php artisan migrate:refresh
上記がうまくできていれば、DBにテーブルが作成されているのですが、今後使いやすいようにクライアントにDBeaverと言うクライアントソフトで接続して確認する。
DBeaverのインストール
下記よりDBeaverをダウンロードしてインストールする。
DBeaverの設定としては下記の通り
SSHタブを選択しAWS接続の際に使用したpemファイルを読み込ませて接続すれば完了。
テーブルが見る事ができれば完了