AWSとLINUXの練習としてEC2でデータベースを操作するアプリケーションをデプロイしました.
AIとの壁打ちの履歴を記録します.
EC2の設定
AMIはAmazon Linux 2としてインスタンスを作成しました.その他の細かい設定などは(https://qiita.com/gyu_outputs/items/f0ab345402362e43db80)を参考にしています.
データベースの設定
あくまで練習のためAWSのAmazon RDSではなく,EC2にデータベースサーバを立てるということにしました.実用性の面は検討していません.
ローカルで開発していた時はMySQLを使用していたので互換性があるMariaDBをつかうことにしました.以下のコマンドでインストールできます.
sudo yum install mariadb-server
次に以下のコマンドで起動し,インスタンス移動時の自動起動設定を行います.
sudo systemctl start mariadb
sudo systemctl enable mariadb
以下のコマンドでパスワードを設定可能です.
sudo mysql_secure_installation
次にデータベースの作成を行います.次のコマンドでパスワードを聞かれたら先ほど設定したものを入力してください.
sudo mysql -u root -p
そして以下のコマンドでデータベースの設定,localhostで接続可能なユーザーの作成,ユーザーへの権限譲渡を行うことができます.
-- アプリケーション用のデータベースを作成
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- アプリケーション用のユーザーを作成し、パスワードを設定('localhost' は同一EC2内からの接続を意味)
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
-- 作成したデータベースに対する全ての権限をユーザーに付与
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_user'@'localhost';
-- 権限設定を反映
FLUSH PRIVILEGES;
-- MySQLクライアントを終了
EXIT;
ここで,your_database_name,your_user,your_passwordの部分は適切に変更してください.
Node.jsのインストール
筆者はNode.jsでアプリを開発していたためそのまま使おうと思います.
-- 利用可能なバージョンの表示
nvm ls
-- 適当なバージョンのNode.jsのインストール
nvm install 'version'
-- defultの設定
nvm alias default 'version'
-- バージョンの確認
node -v
npm -v
これでバージョンが表示されていればOKです.ちなみにnpmは単なるパッケージマネジャーです.
Githubからデプロイ
ここまでくればあとはアプリケーションをデプロイするだけです.Githubからcloneするにはsshキーが必要になるので以下のようにして鍵を共有します.
ssh-keygen -t ed25519 -C "your_email@example.com"
これで鍵が生成されます.
cat ~/.ssh/id_ed25519.pub
このコマンドで公開鍵の内容を表示し,それをコピーしGithubの方にも貼り付けます.接続をテストするには以下のコマンドを使います.
ssh -T git@github.com
これでsuccessful的なことが表示されていればOKです.それでは最後に次のコマンドでアプリケーションをクローンします.
-- クローンしたい場所に移動(例としてホームディレクトリ)
cd /home/ec2-user/
-- Githubからクローン
git clone git@github.com:'Githubのユーザ名'/'対象のリポジトリ名'.git
lsとかでうまくクローンされているか確認して終わりです.
おまけ
バージョン管理について.コードを変更した際の同期方法については未開拓です.Github.workflowsとかでうまくできるんでしょうけどめんどくさそう.ひとまずはいちいちクローンする方法をとっています.不要になった古いディレクトリは次のようにして消去してください.
-- 中身を空っぽにする
rm -rf 'ディレクトリ名'
-- ディレクトリを消去する
rmdir 'ディレクトリ名'
この辺の消去は不可逆な操作なのでくれぐれもお気をつけください.
おわり.