はじめに(前提条件)
この記事では、AWS上でRDS (SQL Server)を作成し、EC2インスタンスからマイグレーションが成功することを目標とします。
そのためEC2でのLaravelアプリのデプロイは完了しているものとします。
Webサーバはnginxを使用しています。
RDSのDBインスタンス設定
データベースの作成
それではまずデータベースを作成します。
公式サイトに手順が分かりやすく載っていたのでそちらに沿って作っていきます。
SSMSからの接続まで説明されているのでせっかくなので接続できるか確認しておきましょう。
セキュリティグループの設定
次に、EC2からアクセスするために必要な設定をします。
先程作成したDBインスタンスのページを開き、「接続とセキュリティ」タブからVPCセキュリティグループの
リンクをクリック
このセキュリティ設定のインバウンドルールを編集します。
以下のように設定し、ルールの保存を押します。
項目 | 値 |
---|---|
タイプ | MSSQL |
ソース | 許可したいEC2が所属するセキュリティグループ |
※二つ目のルールはSSMSからの接続を許可するために設定しています。
EC2インスタンス設定
SQL Serverとドライバのインストール
EC2上にSQL Serverと必要なドライバをインストールします。
Microsoftの公式サイトが分かりやすいです。
EC2インスタンスへTeraTermなどでSSH接続し、必要なインストールを行います。
自分が打ち込んだコマンドは以下のようになります。
sudo su
sudo yum-config-manager --add-repo https://packages.microsoft.com/config/rhel/7/prod.repo
exit
sudo yum update
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y php msodbcsql mssql-tools unixODBC-devel php-devel php-pear php-pdo php-xml re2c gcc-c++ gcc
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> /etc/php.d/30-pdo_sqlsrv.ini
exit
sudo setsebool -P httpd_can_network_connect_db 1
sudo systemctl restart nginx #restart web server
php -m
と入力し、モジュールの一覧にsqlsrv
とpdo_sqlsrv
があればインストール出来ています。
$ php -m
[PHP Modules]
bcmath
bz2
...中略...
pdo_sqlsrv #こいつ
...中略...
sqlsrv #こいつ
.envファイルの編集
最後に.envファイルの編集をしましょう。編集はVimでしました。(何でも良いです)
DBの設定をこんな感じにしておきます。
項目 | 値 |
---|---|
DB_CONNECTION | sqlsrv |
DB_HOST | RDSで作成したDBのエンドポイント |
DB_PORT | 1433 |
DB_DATABASE | データベース名 |
DB_USERNAME | マスターユーザ名 |
DB_PASSWORD | マスターパスワード |
...省略...
DB_CONNECTION=sqlsrv
DB_HOST=RDSで作成したDBのエンドポイント
DB_PORT=1433
DB_DATABASE=データベース名
DB_USERNAME=マスターユーザ名
DB_PASSWORD=マスターパスワード
...省略...
これでマイグレーションが通るはず!!