はじめに
本記事は、「Webサービス開発のため」の仮想マシン構築(AWS)~クラウド開発環境構築(Cloud9)までの手順を自分用にまとめたものです。
前提条件
- クライアントはWindows環境
- クラウドはAWS利用(AWSアカウント作成済み)
- AWSの基礎知識有
基礎知識が足りない場合@Futo23
さんの記事が大変参考になりましたのでそちらを参照してください。
手順
仮想マシン構築
管理コンソールサイトへアクセス
( マネージメントコンソール)
管理コンソールへログイン
テンプレートから仮想マシンを作成
- 「ソリューション構築」>「仮想マシンを起動する」を選択
- 「Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type」を選択
- 「確認と作成」を選択
- 「新しいキーペア名」を入力して「キーペアのダウンロード」を選択
- 「インスタンスの作成」を選択
インターネット利用のためのIPアドレス割当
- 「サービス」>「EC2」を選択
- 「ネットワーク&セキュリティ」>「Elstatic IP」を選択
- 「新しいアドレスの割当」を選択
- 「IPv4 アドレスプール」を「Amazonプール」に設定(デフォルト)
- 「割り当て」を選択
- 「閉じる」を選択
- 「アクション」>「アドレスの関連付け」を選択
- 対象の「インスタンス」と「プライベートIPアドレス」を設定して「関連付け」を選択
- 「閉じる」を選択
アクセス制限
- 「ネットワーク&セキュリティ」>「セキュリティグループ」を選択
- 仮想マシンと関連付けられている「セキュリティグループ」を選択して「アクション」>「インバウンドのルールの編集」を選択
- 「ルール追加」を選択
- 「カスタムTCP」を「HTTP」へ変更して「保存」を選択
- 「ルール追加」を選択
- 「カスタムTCP」の「ポート」に「20022」を入力して「保存」を選択
SSH接続確認
- ターミナルソフト起動(TeraTerm、Putty等)
- SSH接続:
「Elastatic IP」、「新しいキーペア」
を指定 - 結果確認
IAM設定
- 「サービス」>「IAM」を選択
- 「ダッシュボード」>「ユーザー」を選択
- 「ユーザーを追加」を選択
- 「ユーザー名」の入力と「プログラムによるアクセス」にチェックを入れて「次のステップ:アクセス権限」を選択
- 「既存のポリシーを直接アタッチ」を選択
- 「AdministratorAccess」にチェックを入れて「次のステップ:タグ」を選択
- 「キー名」を入力して「次のステップ:確認」を選択
- 「ユーザーの作成」を選択
- 「アクセスキーID」「シークレットアクセスキー」をメモに控える
仮想マシン起動後の初期設定
ソフトウェアの最新化
$ sudo yum update -y
タイムゾーンの変更(日本時間)
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
タイムゾーンの結果を確認(UTC→JST)。
$ date
Tue Nov 12 13:23:56 JST 2019
再起動後も日本時間にする。
$ vim /etc/sysconfig/clock
【変更前】
ZONE="UTC"
UTC=true
【変更後】
ZONE="Asia/Tokyo"
UTC=false
【注意事項:読取り専用のため強制的に保存する】
:w !sudo tee %
:q!
日本語環境へ変更
$ sudo sh -c "echo 'LANG=ja_JP.UTF-8' > /etc/sysconfig/i18n"
$ sudo yum install -y man-pages-ja
【日本語表示反映の為、一旦再起動】
$ sudo shutdown -r now
root
のパスワード設定(セキュリティ強化)
$ sudo su -
$ passwd
ユーザー root のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
ec2-user(デフォルト)
の代替ユーザー作成(セキュリティ強化)
# useradd -g wheel ユーザー名
# echo 'ユーザー名 ALL = NOPASSWD: ALL' >> /etc/sudoers.d/cloud-init
【注意事項】
「NOPASSWD」設定により、sudo実行時にパスワード入力が不要となります。
セキュリティ上のリスクがあるのでお気を付けください。
# rsync -a ~ec2-user/.ssh/authorized_keys ~ユーザー名/.ssh/
# chown -R ユーザー名:wheel ~ユーザー名/.ssh
# chmod -R go-rwx ~ユーザー名/.ssh
新しいユーザーでsshログイン
とsudo権限
が利用できる事を確認したら削除します。
$ sudo -s
$ sudo userdel ec2-user
不要コンソール起動を無効化(サーバー資源節約)
# vim /etc/sysconfig/init
【変更前】
ACTIVE_CONSOLES=/dev/tty[1-6]
【変更後】
ACTIVE_CONSOLES=/dev/tty1
SSHのデフォルトポート変更(セキュリティ強化)
$ sudo vim /etc/ssh/sshd_config
【追加】
Port 22
Port 22022
$ sudo service sshd reload
sshd を再読み込み中: [ OK ]
$ sudo netstat -anp | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 15543/sshd
tcp 0 0 0.0.0.0:20022 0.0.0.0:* LISTEN 15543/sshd
AWSコマンド利用準備
$ aws --version
aws-cli/1.16.102 Python/2.7.16 Linux/4.14.146-93.123.amzn1.x86_64 botocore/1.12.92
$ aws configure
AWS Access Key ID [None]: XXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json
AWS Access Key ID [None]:アクセスキーID
AWS Secret Access Key [None]: シークレットアクセスキー
Default region name [None]: Tokyoリージョン(ap-northeast-1)
Default output format [None]: "text","json","table"のどれかを指定
$ aws ec2 describe-instance-status
{
"InstanceStatuses": [
{
"InstanceId": "i-0c7f2cff2082514c9",
"InstanceState": {
"Code": 16,
"Name": "running"
},
"AvailabilityZone": "ap-northeast-1a",
"SystemStatus": {
"Status": "ok",
"Details": [
{
"Status": "passed",
"Name": "reachability"
}
]
},
"InstanceStatus": {
"Status": "ok",
"Details": [
{
"Status": "passed",
"Name": "reachability"
}
]
}
}
]
}
Cloud9用の環境インストール(Python、Node.js)
$ python --version
Python 2.7.16
$ node -v
-bash: node: command not found
$ sudo yum -y install gcc-c++ git
【メッセージ省略】
Installed:
gcc-c++.noarch 0:4.8.5-1.22.amzn1 git.x86_64 0:2.14.5-1.60.amzn1
Dependency Installed:
cpp48.x86_64 0:4.8.5-28.142.amzn1
gcc.noarch 0:4.8.5-1.22.amzn1
gcc48.x86_64 0:4.8.5-28.142.amzn1
gcc48-c++.x86_64 0:4.8.5-28.142.amzn1
glibc-devel.x86_64 0:2.17-260.175.amzn1
glibc-headers.x86_64 0:2.17-260.175.amzn1
kernel-headers.x86_64 0:4.14.146-93.123.amzn1
libgcc48.x86_64 0:4.8.5-28.142.amzn1
libgomp.x86_64 0:6.4.1-1.45.amzn1
libmpc.x86_64 0:1.0.1-3.3.amzn1
libstdc++48.x86_64 0:4.8.5-28.142.amzn1
mpfr.x86_64 0:3.1.1-4.14.amzn1
perl-Error.noarch 1:0.17020-2.9.amzn1
perl-Git.noarch 0:2.14.5-1.60.amzn1
perl-TermReadKey.x86_64 0:2.30-20.9.amzn1
Complete!
$ git clone https://github.com/creationix/nvm.git ~/.nvm
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 7573 (delta 7), reused 16 (delta 4), pack-reused 7549
Receiving objects: 100% (7573/7573), 2.51 MiB | 2.56 MiB/s, done.
Resolving deltas: 100% (4779/4779), done.
$ source ~/.nvm/nvm.sh
$ vim ~/.bash_profile
【追記】
# nvm
if [[ -s ~/.nvm/nvm.sh ]] ; then
source ~/.nvm/nvm.sh ;
fi
$ nvm install node
Downloading and installing node v13.1.0...
Downloading https://nodejs.org/dist/v13.1.0/node-v13.1.0-linux-x64.tar.xz...
######################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v13.1.0 (npm v6.12.1)
Creating default alias: default -> node (-> v13.1.0)
$ node -v
v13.1.0
$ nvm use v13.1.0
Now using node v13.1.0 (npm v6.12.1)
$ which node
~/.nvm/versions/node/v13.1.0/bin/node
$ mkdir ~/cloud9
クラウド開発環境構築(Cloud9)
AWS Cloud9
-
「サービス」>「Cloud9」を選択
-
「Create environment」を選択
-
「Name」を入力して「Next Step」を選択
-
「Environment type」を「Connect and run in remote server (SSH)」に変更して下記を入力して「Next Step」を選択
入力項目名 説明 User SSH接続ユーザー名 Host EC2のグローバルIPアドレス Port 20022 Environment path - Optional ~/cloud9 Node.js binary path - Optional ~/.nvm/versions/node/v13.1.0/bin/node -
AWSの仮想マシンにログイン
-
「Copy key to clipboard」を選択(クリップボードへコピー)
-
公開鍵の登録
キーファイルへの追記$ vim ~.ssh/authorized_keys 【追記内容例:クリップボードの内容】 ssh-rsa AAAAB3NzaC1yc2EAAAADAQA(省略)XXXXXXXXXXXX== XXXXXXXX@cloud9.amazon.com
-
「Next step」を選択
-
「Create Environment」を選択
-
「Next」を選択
-
「Next」を選択
-
「y」を入力して「Enter」実行
-
「Next」を選択