AWS EC2(CentOS7)でRocketChatを構築する。　~サーバー操作&事前準備~

# 記事内容

第1部　[AWS EC2(CentOS7)でRocketChatを構築する。　～インスタンス作成まで～](https://qiita.com/TomTam/items/7205d140f7a98abcc55e)の続きとなります。

- 第1部
  - AWSでEC2インスタンス(CentOS7)の作成
  - EC2インスタンスに対するセキュリティーグループ設定


- 第2部(今回)
 - Linuxサーバ操作方法
 - RocketChat事前準備(便利パッケージのインストール)


- [第3部](https://qiita.com/TomTam/items/ec4ca24d61db470c849b)
 - RocketChatのインストール


##インスタンスへのアクセス方法
プライベートキーの格納先は以下を想定
C:\Users\[ユーザー名]\.ssh

```sh
ssh -i ~/.ssh/[プライベートキー] centos@[パブリックIP]
```

##CentOS7初期設定

###root権限ユーザーにパスワードを設定する。
AWSでは、インスタンスの新規作成段階ではroot権限のユーザーにパスワードが設定されていません。
そのため、手動で設定する必要があります。

```sh
#root権限ユーザーを使用する
[centos@ip-(IPアドレス) ~]$ sudo su -
[root@ip-(IPアドレス) ~]#

#root権限ユーザーをパスワードを付与する
[root@ip-(IPアドレス) ~]# passwd
Changing password for user root.
New password:[パスワード]
Retype new password:[パスワード]
passwd: all authentication tokens updated successfully.
```
###一般ユーザーを作成する。
```sh
#理想形
#一般ユーザーを作成する
#[centos@ip-(IPアドレス) ~]$ sudo useradd -p '[パスワード]' [ユーザー名]
#一般ユーザーを使用する
#[centos@ip-(IPアドレス) ~]$ sudo su [ユーザー名]

#※
#上記のようにユーザーを作成する段階でパスワードを初期設定した場合、
#パスワードが設定されているにもかかわらず、入力してもエラー扱いになるため下記のように変更する。
[root@ip-(IPアドレス) ~]# useradd -p '' [ユーザー名]
[root@ip-(IPアドレス) ~]# passwd [ユーザー名]
Changing password for user [ユーザー名].
New password:[パスワード]
Retype new password:[パスワード]
passwd: all authentication tokens updated successfully.
```

```sh
※なおエラーが発生する場合

#ユーザー変更時(正しいパスワードを入力)
[centos@ip-(IPアドレス) ~]$ su [ユーザー名]
Password:[パスワード]
su: Authentication failure

#パスワード変更時(正しいパスワードを入力)
[centos@ip-(IPアドレス) ~]$ sudo su [ユーザー名]
[[ユーザー名]@ip-(IPアドレス) centos]$ passwd
Changing password for user [ユーザー名].
Changing password for [ユーザー名].
(current) UNIX password:[パスワード]
passwd: Authentication token manipulation error
```

###一般ユーザーにroot権限を付与する。

```sh
[root@ip-(IPアドレス) ~]# visudo
#最終行に下記の行を入力する。
[作成したユーザー名]    ALL=(ALL)       ALL
```

##RocketChat事前準備
RocketChatのインストール際に、私がインストールしたパッケージは、「lsof」です。
Linux使いの方々にとっては当然の存在かと思いますが、素人なのであえて書かせていただきます。

### lsof


#### lsofとは

簡単にいうと、**「プロセスの状況を詳細に表示できるコマンド」**です。

公式ページがどれにあたるかがわからなかったので、
Wikipediaでの解説を記載します。↓
>lsof（エルエスオーエフ）コマンドは"list open files"の意味であり、
>多くのUnix系オペレーティングシステムで、オープン中のファイルやそのファイルを
>オープンしているプロセスのリストを出力するコマンドである。
>[Wikipedia](https://ja.wikipedia.org/wiki/Lsof)より引用

#### 使用目的

RocketChatでは、
RocketChat自体のサービスだけではなく、
MongoDBも使用することもあり、それぞれのプロセス状態を詳細に把握する必要があると考えています。

上記のことから、インストールすることにしました。

#### 導入方法

まず、私が作成したAWSの「CentOS7」インスタンスは最小限の構成しか存在していないため、
そもそも「lsof」コマンド自体使用できません。

```sh
[(ユーザー名)@ip-(IPアドレス) centos]$ sudo lsof -i -n -P
[sudo] password for (ユーザー名):
sudo: lsof: command not found
```

そのため、lsofパッケージのインストールを行います。

```sh
[(ユーザー名)@ip-(IPアドレス) centos]$ sudo yum -y install lsof
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                                                                                                                                                                    |  17 kB  00:00:00
 * base: mirror.es.its.nyu.edu
 * epel: mirror.csis.ysu.edu
 * extras: mirrors.gigenet.com
 * updates: mirror.math.princeton.edu
base                                                                                                                                                                                                                                                    | 3.6 kB  00:00:00
epel                                                                                                                                                                                                                                                    | 5.4 kB  00:00:00
extras                                                                                                                                                                                                                                                  | 3.4 kB  00:00:00
mongodb-org-4.0                                                                                                                                                                                                                                         | 2.5 kB  00:00:00
nodesource                                                                                                                                                                                                                                              | 2.5 kB  00:00:00
updates                                                                                                                                                                                                                                                 | 3.4 kB  00:00:00
(1/2): epel/x86_64/updateinfo                                                                                                                                                                                                                           | 1.0 MB  00:00:00
(2/2): epel/x86_64/primary_db                                                                                                                                                                                                                           | 6.8 MB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package lsof.x86_64 0:4.87-6.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================================================================================================================================
 Package                                                         Arch                                                              Version                                                               Repository                                                       Size
===============================================================================================================================================================================================================================================================================
Installing:
 lsof                                                            x86_64                                                            4.87-6.el7                                                            base                                                            331 k

Transaction Summary
===============================================================================================================================================================================================================================================================================
Install  1 Package

Total download size: 331 k
Installed size: 927 k
Downloading packages:
lsof-4.87-6.el7.x86_64.rpm                                                                                                                                                                                                                              | 331 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : lsof-4.87-6.el7.x86_64                                                                                                                                                                                                                                      1/1
  Verifying  : lsof-4.87-6.el7.x86_64                                                                                                                                                                                                                                      1/1

Installed:
  lsof.x86_64 0:4.87-6.el7

Complete!
```

#### 使用方法

私としては、下記のコマンドで全量出して確認しています。
特段のことがなければ、個別で見るようなことはしていないです。

```sh
[(ユーザー名)@ip-(IPアドレス) centos]$sudo lsof -i -n -P
COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
.
.
.
```

また、使用方法については
@hypermkt さんの[記事](https://qiita.com/hypermkt/items/905139168b0bc5c28ef2)がわかりやすいと思います。


※今のところ「lsof」しか記載していませんが、今後追記することなっていくかもしれません、、、、、

## 参考
* [lsofコマンド入門](https://qiita.com/hypermkt/items/905139168b0bc5c28ef2)