Alibaba Cloud ECSへのNode.jsのインストールと設定

このチュートリアルでは、**Alibaba Cloud ECS**インスタンスに**Node.js**をインストールして設定します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/install-node-js-on-alibaba-cloud_595226)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
- Alibaba Cloud [Elastic Compute Service (ECS)](https://www.alibabacloud.com/product/ecs?spm=a2c65.11461447.0.0.3a412358EaeWFK)を有効にし、有効な支払い方法を確認する必要があります。新規ユーザーの場合は、新規アカウントで[300ドル～1200ドル相当のAlibaba Cloudクレジットを獲得](https://www.alibabacloud.com/referral?spm=a2c65.11461447.0.0.3a412358JNlX5S&referralCode=ffxt3q)できます。ECSインスタンスのセットアップ方法がわからない場合は、[このチュートリアル](https://www.alibabacloud.com/blog/3-ways-to-set-up-a-linux-server-on-alibaba-cloud_572384?spm=a2c65.11461447.0.0.3a4123581Cb4dR)または[クイックスタートガイド](https://www.alibabacloud.com/help/doc-detail/25422.htm?spm=a2c65.11461447.0.0.3a412358P3QbMu)を参照してください。ECSインスタンスには、少なくとも1GBのRAMと1つのCoreプロセッサが必要です。
- Alibaba Cloudから登録された[ドメイン名](https://www.alibabacloud.com/domain?spm=a2c65.11461447.0.0.3a412358S9kuUq)。すでにAlibaba Cloudまたは他のホストからドメインを登録している場合は、そのドメインネームサーバーレコードを更新することができます。
- ドメイン名は、あなたのAlibaba Cloud ECSのIPアドレスを指している必要があります。
- Alibaba CloudのVNCコンソールまたはPCにインストールされているSSHクライアントにアクセスします。
- サーバーのホスト名を設定し、root権限のユーザーを作成します。

#環境の設定
###サーバーの設定
パッケージのインストールを進める前に、以下のコマンドを実行してUbuntuシステムをアップデートしてください。このコマンドを実行するには、root ではないユーザーから sudo 権限でログインすることを忘れないでください。

```
# sudo apt update && sudo apt upgrade
```

###ソフトウェアプロパティ共通のインストール
Docker CEのインストールに対応したファイルを取得するためには、software-properties-commonパッケージが必要です。software-properties-commonパッケージをインストールするには、以下の手順に従います。

software-properties-commonをインストールするには、以下のコマンドを実行します。

```
# sudo apt-get install software-properties-common -y 
```

###apt-transport-httpsのインストール
Docker CEのインストールにはapt-transport-httpsが必要です。apt-transport-httpsをインストールするには、以下の手順を実行します。

apt-transport-httpsをインストールするには、以下のコマンドを実行します。

```
# sudo apt-get install apt-transport-https -y 
```


###ca-certificatesのインストール
Docker CEのインストールにはca-certificatesが必要です。ca-certificatesをインストールするには、以下の手順で行います。

ca-certificatesをインストールするには、コマンドを実行します。

```
# sudo apt-get install ca-certificates -y 
```

###curlのインストール
Docker CEのインストールにはcurlが必要です。curlをインストールするには、以下の手順で行います。

curlをインストールするには、コマンドを実行します。

```
# sudo apt-get install curl -y 
```

###Docker CEのインストール
Docker community editionをインストールするには、以下の手順で完了します。

以下のコマンドを実行して、Docker用のGPGキーを追加します。

```
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

以下のコマンドを実行して、GPGキーのフィンガープリントを確認します。

```
# sudo apt-key fingerprint 0EBFCD88
```

ここで、以下のコマンドを実行してDockerリポジトリを追加します。

```
# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
```

以下のコマンドを実行してシステムをアップデートし、追加されたリポジトリをロードします。

```
# sudo apt update
```

以下のコマンドを実行してDockerをインストールします。

```
# sudo apt install docker-ce
```

以下のコマンドを実行して、ユーザ名をdockerグループに追加します。

```
# sudo adduser aareez docker 
```

現在のシェルセッションを閉じて新しいセッションを開始すると、dockerが実行できなくなり、パーミッションエラーが発生する可能性があります。

次に、以下のコマンドを実行して、dockerが正しく実行されているかどうかを確認します。

```
# docker run hello-world
```

###Docker  Composeのインストール
Docker composeをダウンロードしてインストールするには、以下の手順で行います。

以下のコマンドを実行して、最新版のdocker composeをダウンロードしてインストールします。


```
# sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
```

以下のコマンドを実行して、ファイルのパーミッションを設定します。


```
# sudo chmod +x /usr/local/bin/docker-compose
```

以下のコマンドを実行して起動したコンテナの一覧を取得します。

```
# docker container ls —all
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/cb13ee29-279e-6b6c-2fb5-9c2a6de6e658.png)


ポート808080を使用しているコンテナを停止します。そのためには、コンテナのIDを取得し、以下の8baab990c424に置き換えて、以下のコマンドを実行します。

```
# docker stop 8baab990c424
```

#Node.jsのインストールと設定
このチュートリアルでは、具体的にNode.jsの公式イメージを使ってDocker上にインストールしていきます。Node.jsをダウンロードしてインストールするには、以下のコマンドを実行して、公式のdockerリポジトリから最新のNodejsを引っ張ってくる必要があります。

```
# docker pull linode/server-node-js
```


ここで以下のコマンドを実行してdockerイメージを実行します。

```
# docker run -d -p 80:3000 linode/server-node-js
```

これで、アリババクラウドECSのIPアドレスまたはそのIPアドレスを指すドメイン名にアクセスして確認することができるようになりました。`http://your_domain.tld/test.htm`

以下のページが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/e060c450-e973-c2c6-b051-4a3ef908e0e3.png)

###ファイアウォールとポートの設定
ファイアウォールを有効にしている場合は、クラウドサーバーの Alibaba Cloud セキュリティグループで、ポート 80/tcp と 443/tcp の例外を追加するルールを定義する必要があります。ECSインスタンスの作成時にこれらのポートを有効にすることができますが、これらのポートのブロックを解除し忘れた場合は、このガイドの手順に従ってください:[セキュリティグループルールの追加](https://www.alibabacloud.com/help/doc-detail/25471.htm?spm=a2c65.11461447.0.0.3a412358HBci9F)

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*