やること
現状、EC2インスタンス(サーバー)が存在するだけで、その中には何も無い空箱の状態です。
今回、DB以外は同一のサーバーに構築するので、下記3つを1つのインスタンスに構築していきます。
- Webサーバーアプリケーション:Nginx
- バックエンド:Python
- フロントエンド:Node
今回のインスタンスはAmazon Linux 2023(RedHat系)なので、dnfコマンドで作業します。
作業内容
インスタンスにssh接続する
ssh -i <秘密鍵のパス> ec2-user@<Elastic IPアドレス>
下記みたいになればOK
shin-gee@workspace:~$ ssh -i .ssh/project-dev-ssh-key-pair.pem ec2-user@11.22.333.44
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Thu Oct 24 07:32:31 2024 from 555.66.77.88
[ec2-user@ip-11-2-3-444 ~]$
Nginxをインストール
パッケージをアップデート
sudo dnf update
※WARNINGが出て、上記のコマンドでは更新できない場合がある
※その場合は案内通りに--releasever=
を指定してdnf upgrade
参考:【AWS】Amazon Linux 2023でパッケージを更新する時の注意点
Nginxをインストール
sudo dnf -y install nginx
バージョンが表示されるか確認
nginx -v
Nginxを起動
sudo systemctl start nginx
active (running) になっているか確認
※「ALB編」でヘルスチェックに失敗していたが、この段階で解消される
sudo systemctl status nginx
インスタンス起動時に自動でnginxが起動するように設定
sudo systemctl enable nginx
https://project.com を開いて、Nginxが表示されることを確認
※以降の手順でPython等インストール後は、必要に応じて/etc/nginx/nginx.conf
/etc/nginx/conf/*
ファイルを設定し、Nginxを再起動する
Pythonをインストール
※この項目は、私の担当(インフラ)外のバックエンドエンジニアの範疇も関わってくるため、
具体的な作業ではなく、大まかな作業内容を記載します。
- Pythonに必要なパッケージをインストールする
例
sudo dnf -y install pcre pcre-devel tree
sudo dnf clean all
- pyenvをインストールし、pythonをインストールする
- requirements.txtを使用して、パッケージをインストールする
pip install -r requirements.txt
Nodeをインストール
※この項目は、私の担当(インフラ)外のフロントエンドエンジニアの範疇も関わってくるため、
具体的な作業ではなく、大まかな作業内容を記載します。
- nodeをインストールする
- モジュールをインストール
npm i
- ビルド&デプロイ
npm run dev
- project.comで画面が表示されることを確認
参考記事
- nginx.confの解説、書き方
- nginx.confの中身を理解したいので一つずつ調べました
- nginxのrootディレクティブとaliasディレクティブの違い
- nginxでサーバ名が長いって怒られた
- 【AWS】Amazon Linux 2023でパッケージを更新する時の注意点
- python 3.12 on Amazon Linux 2023
- 【AP Tech Blog Week】Amazon Linux 2023 でも Python 3.11.7 以上を使いたい
- Amazon Linux2023にpyenvを利用してpython3.12をインストール
- チュートリアル: Amazon EC2 インスタンスでの Node.js のセットアップ