https://immersed-in-knowing.com/?p=191 の続き
前回作成したEC2にwebサーバーソフトを入れます。
今回はApache HTTP Serverを用います。
Apacheは無料で使用できwebサーバーといえばApacheくらい有名なものなのでとりあえずこちらを使います。
本記事でやること
- Apacheのインストール
- ファイアーウォール設定
- Nodeのセットアップ
- Gitからソースコードを取り込む
1.Apacheのインストール
![](https://immersed-in-knowing.com/wp-content/uploads/2024/05/image-66-1024x87.png)
AWSコンソールにログインしたのち、EC2を開きます。
前回作成したインスタンスを選択して「接続」を押下します。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/05/image-65.png)
sudo yum -y install httpd
を実行してApacheをインストールします。
yumコマンドはアプリケーションをインストールやアンインストールするときに用いる管理者コマンドです。
httpdはApacheを構成する実行ファイルで、-yはユーザの確認を省きます。
ec2-userでログインしてますがrootユーザーではないため、sudoを使ってroot権限で実行しています。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-38-1024x119.png)
最後にComplete!が出ればOKです。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-39.png)
sudo service httpd start
次に、serviceコマンドでApacheを起動します。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-40.png)
sudo chkconfig httpd on
サーバを再起動するとApacheが停止してしまうため、自動起動するように上記を実行します。
chkconfigは自動起動についてon(設定)を指定するコマンドです。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-41.png)
ps -ax | grep httpd
にてApacheのプロセスを確認します。
DFOREGROUNDはhttpdをフォアグラウンドで起動しているという意味です。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-42.png)
sudo lsof -i -n -P
にてApacheのポートを確認します。
エンドユーザーがwebブラウザを通じてサーバーアクセスするとApacheはコンテンツを返します。この実現のためにhttpdはポートを開けて待機しています。
TCP*:80と表示されていることから80番で待っています。
2.ファイアーウォール設定
webブラウザでwebサーバーのIPアドレスに接続するためにファイアーウォールを設定します。
ポート80がファイアーウォールにブロックされていることが原因で、EC2ではセキュリティグループにてファイアーウォールを構成しています。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-43-1024x434.png)
パブリックIPアドレス「http://54.250.117.103/」にhttpアクセスしたところ実際に接続できません。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-44-1024x344.png)
マネジメントコンソールよりEC2を開き、セキュリティグループを確認します。
SSHタイプでポート範囲が22になっています。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-47-1024x289.png)
「インバウンドルールの編集」を押下し、「ルールを追加」を押下、タイプ「カスタムTCP」、ポート「80」、ソース「0.0.0.0/0」を設定しルールを保存します。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-49.png)
再度「http://54.250.117.103/」にアクセスしたらエラーにならず表示されます。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/05/image-67-1024x514.png)
ここまでの作業をざっくり図に落とすとこのような形になります。
ここからはGitに作成したwebサイトの中身を表示します。
具体的にはjavascriptで画面を記述し、node.jsにて返却しているサービスを表示します。
第一回で記述した通り、今回のサービスは私がサーバーでフロント側は友達が担当しています。
本ページではサービスについては言及せず、表示するやり方について説明します。
3.Nodeのセットアップ
node.jsを利用しているのでnodeをインストールします。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-69-1024x103.png)
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-70.png)
AWSコンソールよりEC2を開き、接続を押下します。
インスタンスに接続画面より「接続」を押下します。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-50.png)
sudo yum update -y
yum(パッケージ管理ツール)をアップデートします。yum
はパッケージのインストール、削除、アップデートなどの操作を行います。-y
このオプションは、ユーザーに対してアップデートの実行前に確認プロンプトを表示せず、すべての更新を自動的に行うことを指示します。つまり、ユーザーの手動確認なしでアップデートが行われます。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-52.png)
sudo yum install -y nodejs
スーパーユーザー権限にてyumを使用してNode.jsパッケージを自動的にインストールします。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-63.png)
npm install express
Express.jsをインストールします。
Express.jsは、Node.jsでWebアプリケーションを開発するためのフレームワークであり、HTTPリクエストの処理、ルーティング、テンプレートエンジンなどで使用します。
4.Gitからソースコードを取り込む
Gitにソースコードがマージされている状態でEC2インスタンスに取り込みます。
やり方は「git clone <URL>」ですが、認証に阻まれるのであらかじめPersonal access tokens(classic)にて認証を通します。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-59.png)
自分のGitのアカウントより「Developer Setting」を押下します。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-53.png)
新規でアクセストークンを発行します。
発行するタイミングで「ghp_」で始まるようなアクセストークンが発行されるのでコピーしておきます。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/image-60-1024x230.png)
作成するとこのような画面になります。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/04/スクリーンショット-2024-04-29-140749.png)
EC2インスタンスに接続して
git clone https://アクセストークン@github.com/ユーザー名/リポジトリ名.git
を入力してGitのソースコード(リポジトリ)をクローンします。
EC2インスタンスにソースコードを配置することができましたが、配置しただけでnodeは動かしていないため特にWebサイトへの影響はありません。
![](https://immersed-in-knowing.com/wp-content/uploads/2024/05/image-68-1024x510.png)
最終断面のイメージはこんな感じです。