2
0

More than 1 year has passed since last update.

AWS上にCentOS Stream 9 を立ち上げて、Nodejsで簡単アプリを動かしてみる

Last updated at Posted at 2022-06-27

構築の際の覚書です。

◆AWS CentOS起動◆

CentOS8がサポート終了したとのことで、
AWS EC2 で CentOS Stream 9 のサーバーを立ち上げてみました。

1. 公式のCentOS 9 Ami IDを探す

公式のWiki( https://wiki.centos.org/Cloud/AWS )から、東京リージョン(ap-northeast-1)のAmi IDを探してコピーします。

2022/6/27時点の最新以下を選択
image.png

2. AWSでインスタンスを起動する

AWS EC2 「インスタンスを起動」 から、1.でコピーしたAmi IDを入力して検索します。

CentOS 8はサポート終了しているとのことで、今回CentOS Steam9を立ち上げてみることにしました。

コミュニティ AMI で1件ヒットするので、これを選択します。
image.png

teratermより接続したいので、キーペア(ログイン)にて「新しいキーペアの作成」を実行し、キーペア作成します。.pem形式のファイルがダウンロードされるので、ローカルPC内の任意のフォルダに配置します。
 キーペア名:centos8_key(任意の名前)
 キーペアのタイプ:RSA
 プライベートキーファイル形式:.pem
 

他の設定は後から変更もできるのでミニマムで、デフォルト設定のままで、「インスタンスを起動」を実行して起動します。起動してきて「成功 インスタンスの起動を正常に開始しました」が確認できればOKです。
 インスタンスタイプ:t2.micro(1vCPU,1GiB)
 ネットワーク設定:(デフォルトのまま)
 ストレージ:10GiB gp2
 高度な詳細:(デフォルトのまま)

3. SSHにてログインする

EC2のインスタンス一覧から起動したEC2を選択し、パブリック IPv4 アドレスを確認します。

---->なぜかsshログインできなかったです。同じ質問している方を発見!
https://teratail.com/questions/a4kz6e6h4d3gnf

結果として現状CentOS Stream 9でグローバルIPを使ったSSHログインが出来ず、CentOS8を踏み台にローカルIP経由でSSHして利用している状態で一旦使うことに。
CentOS8はすでにサポート終了してることから、yumのミラーサイトが停止しています。対処方法はありそうですが、今後も色々躓きそうなので、CentOS Steam 9を使うことにしました。

◆Nodejs、npm、EXPRESS、EJS、mysqlを導入◆

1. Nodejs、npmをyumでインストール

# yum list available | grep nodejs
# sudo yum install nodejs
 
※npmはnodejsインストール時に一緒にインストールされます

2. EXPRESS、EJS、mysqlをnpmでインストール

作業ディレクトリを作成します。

// プロジェクトディレクトリを作成
# mkdir proj
// プロジェクトディレクトリに移動
# cd proj

次に対話形式で、package.jsonを作成します。
package.jsonとはnpmコマンドを自作したり、インストールするモジュールをプロジェクトごとに定義することができます。
対話形式で自分の好みに合わせて設定できますが、すべてデフォルトでOK。(エンター連打)
最後まで設定が完了すると、作業ディレクトリにpackage.jsonが作成されます。

# npm init

モジュールをインストールします。

# npm install express
# npm install ejs
# npm install mysql

3. hello_world.jsを作成

環境構築ディレクトリにhello_world.jsを作成します。/data/proj/hello_world.jsを配置しました。

var express = require("express");
var app = express();

app.get("/", function (req, res) {
  res.send("Hello World");
});

app.listen(8080, () => console.log("listening on http://localhost:8080"));

4.AWSにて8080ポートを開放

デフォルト設定ではSSH 22ポートのみ開放されているため、
該当のEC2インスタンスのセキュリティグループのインバウンドルールに追加します。

↓ 下記の8080ポートの行を追加 ※3000ポートは別理由で立ち上げてますが不要です。
image.png

5. プロジェクトを起動してみる

# node helloworld.js

エラーなく起動したら、https://(EC2インスタンスのグローバルIP):8080 を打鍵してみて、hello_worldと表示されることを確認できました!

(付録)時刻同期

CentOSの時刻がUTC表示だったので、JST表示に変更しました。

# cd /etc
# ls -la | grep localtime
lrwxrwxrwx.  1 root root       25 Dec  4  2020 localtime -> ../usr/share/zoneinfo/UTC
# cat /etc/localtime
TZif2UTCTZif2・TC
UTC0

# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# date
Mon Jun 27 11:27:34 JST 2022

参考にさせていただきました!
https://wiblok.com/js/node/express/express_setup/
https://www.t3a.jp/blog/infrastructure/set-timezone/

 

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0