構築の際の覚書です。
◆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を探してコピーします。
2. AWSでインスタンスを起動する
AWS EC2 「インスタンスを起動」 から、1.でコピーしたAmi IDを入力して検索します。
CentOS 8はサポート終了しているとのことで、今回CentOS Steam9を立ち上げてみることにしました。
コミュニティ AMI で1件ヒットするので、これを選択します。
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ポートは別理由で立ち上げてますが不要です。
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/