【AWS】EC2に静的ファイルをデプロイしてnodeで公開する手順

個人的な備忘録としてEC2に静的ファイルをデプロイした手順をまとめます。

EC2インスタンスとhtml+javascriptのソースコードはすでに作成済みである前提です。

EC2の設定

EC2のAMIはAmazon Linux 2を選択します

また、インバウンドでSSH(22)・HTTP(80)・カスタム(3000)ポートを開放しておきます

SSH接続

WindowsからSSHで接続を行います

ssh接続に使うpemファイルはドキュメントフォルダに格納しました。Usersの配下のフォルダでないと、権限関係のよくわからないエラーになったためです。

pemファイルのディレクトリに移動して、sshコマンドを実行します。下記は適宜変更する必要があります。

cd C:UsersusernameDocumentspem
ssh -i "test.pem" [email protected]

Windowsのファイアウォール設定

インバウンドの設定でSSH(22)を設定しているのに、接続できない場合がありました。原因を調べていたところWindowsのファイアウォールで送信規則にSSHのポートを開放していなかったためでした。。。

Node.js のインストール

必要なパッケージのインストール

sudo yum update
## 必要なパッケージのインストール
sudo yum -y install git gcc-c++
## nvmをgithubからclone
git clone https://github.com/creationix/nvm.git ~/.nvm

bash_profileの編集

nvmコマンドのパスを通すために、bash_profileを編集

vi .bash_profile

下記を追記して保存

viの使い方:iでINSERTモード、保存する際はescshift+ZZで完了

source ~/.nvm/nvm.sh

nvmコマンドを叩いて、パスが通ったか確認します

エラーになる場合は一度exitで抜けてから再度ssh接続し、確認します

node.jsのインストール

## インストール可能なバージョンを表示
nvm ls-remote

## node.jsのインストール
nvm install v16.15.1

// バージョンの確認
node -v

ソースコードをサーバにデプロイ

ソースコードはローカルですでに存在している前提です

githubからcloneするか、ローカルからコピーしますが、今回はローカルからscpコマンドでファイルをコピーします

pemファイルのディレクトリに移動し、scpコマンドを実行します。-rでディレクトリごとコピーすることができます。

cd C:UsersusernameDocumentspem
scp -i "test.pem" -r コピーしたいディレクトリ [email protected]:homeec2-user

webサーバの設定(http-server)

http-serverというモジュールをインストールして使う方法です

https://www.npmjs.com/package/http-server

プロジェクトのディレクトリに移動し、3000ポートを指定してhttp-serverコマンドを実行します

cd project

## http-serverのインストール
npm i -g http-server

## 3000ポートで公開する
http-server -p 3000 -s

上記を実行した際に、「permission denied」と表示されました。node-module内のhttp-serverの権限設定に不備があったようです。

権限の変更をnode-module内に対して行いました。chmodコマンドで-Rを付けると、ディレクトリ内全体に対して適用されます。

chmod -R 755 ./node-module

これでアプリの公開設定が完了しました。ブラウザのURLにパブリックIPアドレス:3000でアクセスするとアクセスできることが確認できます。

Leave a Reply

Your email address will not be published. Required fields are marked *