無料で始める初めてのAWS② Linux 仮想マシンを起動

# はじめに
前回はAWSのアカウント作成まで進めました。

* [無料で始める初めてのAWS① AWSのアカウント作成](https://qiita.com/iwama_takumi/items/98deb1f0550ef0ba5365)

今回は、以下のURLから閲覧可能なチュートリアルである「Linux 仮想マシンを起動」について進めていこうと思います。

* [Amazon Lightsailを使用してLinux仮想マシンを起動する](https://aws.amazon.com/jp/getting-started/hands-on/launch-a-virtual-machine/)

## Lightsailとは
AWS公式サイト上には以下のように説明されています。

> 使いやすいクラウドプラットフォームLightsailは、アプリケーションやウェブサイトの構築に必要なすべてのものに加えて、コスト効率が良い月額プランを提供します。クラウドに慣れていないお客様でも、信頼しているAWSインフラストラクチャを使用してすぐにクラウドにアクセスしようとしている場合も、対応できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/2d321365-366f-dae6-eb97-5a02c7296dca.png)

プラットフォームということは分かりましたが、詳細を知るには実際に使ってみるのが早そうです。
※Lightsailは基本有料のようですが、無料で1か月試すことができるようです。

## インスタンスの作成

チュートリアルページでAWSアカウントにサインインすると、Lightsailホームページが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/f9237117-3e9f-bff9-04fa-01b7eb7da4b0.png)

「インスタンスイメージの選択」で「Linux/Unix」を、「設計図の選択」で「OSのみ」をクリックしたあとで「Amazon Linux 2」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/43b2aa70-1b00-7c04-52e4-9e3e5b74f396.png)

「インスタンスプラン」を選択します。「3.50 USD」のLightsailプランを1ヶ月無料で試すことができるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/0734f842-d47a-7bb7-ad5f-2a8436b3a580.png)

インスタンスの名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/05693d3c-d645-c55d-e566-00be5d36e3ad.png)

「インスタンスの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/3a089612-cda1-6c70-b4a5-812b3000fa67.png)

Lightsailホームページの「インスタンス」タブが開き、作成したインスタンスが表示されます。
表示されているインスタンスの右上をクリックし「接続」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/3a90d17c-58a8-c9a6-a6f1-1fa6535d6e54.png)

ブラウザベースのターミナルウィンドウが表示され、ここにLinuxコマンドを入力することで、SSHクライアントを設定せずにインスタンスを管理できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/733cb6af-0de8-efbb-6f6a-bc6d9e7fb880.png)

# アプリケーションのインストール
## nginxのインストール

以下のコマンドで、nginxをインストールします。

```
sudo amazon-linux-extras install nginx1
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/f4b8906c-0205-aaf7-bdd5-7a8fda7892ed.png)

nginxの起動は`service`コマンドで行います。

```shell
sudo service nginx start
```

nginxのインストールと起動ができれば、Webサーバにアクセスできるようになります。ブラウザを開いて、該当インスタンスのEIP(例：http://xxx.xxx.xxx.xxx/)を入力して開いてみましょう。以下のようなページがブラウザで表示されれば、Webサーバのインストールは完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/db8d6906-8b31-5525-03c9-da03142a5cb4.png)

## MySQLのインストール

以下の記事を参考に、MySQLをインストール後、パスワードの変更を行います。

* [AWS EC2 AmazonLinux2 MySQLをインストールする](https://qiita.com/miriwo/items/eb09c065ee9bb7e8fe06)
* [AWS EC2 AmazonLinux2 MySQL rootユーザの初期パスワードの確認方法](https://qiita.com/miriwo/items/457d6dbf02864f3bf296)
* [AWS EC2 AmazonLinux2 MySQLを使えるようにする](https://qiita.com/miriwo/items/c0ba0ff17c329700fc9e)

変更後のパスワードでMySQLに接続します。

```sql
mysql -u root -p
```

その後、パスワードを求められるので入力すると、MySQLにアクセスできます。

次に、データベースの一覧を取得してみます。以下のコマンドを実行します。

```sql
show databases;
```

以下のように表示されればMySQLのインストールと起動は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/d70e7fa7-1897-5ebf-fa3b-1017cf31b0d9.png)

## Webアプリケーションの配置
最後にアプリケーションのインストールを行います。ここでは、Railsを使って、先ほど構築したMySQLと連携する簡単なCRUDアプリケーションを実行します。
Railsを使うにはビルドができる環境が必要なため、ビルドに使うパッケージをインストールします。

```shell
sudo yum -y groupinstall 'Development Tools'
```

RubyとMySQLのライブラリも必要になるため、インストールを実行します。

```shell
sudo yum -y install ruby-devel mysql-devel
```

RailsではJavaScriptランタイムとしてNode.jsが必要になります。
① コマンドラインで次のように入力して、ノードバージョンマネージャー(nvm)をインストールします。

```shell
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
```

nvmではNode.jsの複数のバージョンをインストールすることができ、またそれらの切り替えもできるため、nvmを使用してNode.jsをインストールします。

② コマンドラインで次のように入力して、nvmを有効にします。

```shell
. ~/.nvm/nvm.sh
```

③ コマンドラインで次のように入力し、nvmを使用してNode.jsの最新バージョンをインストールします。

```shell
nvm install node
```

④ コマンドラインで次のように入力して、Node.jsが正しくインストールされ、実行されていることをテストします。

```shell
node -e "console.log('Running Node.js ' + process.version)"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/2a2796f5-2c91-a82a-68a1-9f999aab7f62.png)