CentOS 7にnginxをインストールしてブラウザ確認するまで

#環境
 - macOS 10.12.6
 - MacBook pro 2016
 - VirtualBox 5.2.18
 - CentOS 7.6-1810

#リポジトリの追加
yumコマンドでインストールします。
CentOS 7では公式のyumリポジトリにnginxがないので、まずは[nginxの公式](http://nginx.org/en/linux_packages.html)が用意しているリポジトリを追加します。
※ `yum` と `リポジトリ` に関しては、[こちらの記事](https://qiita.com/nooboolean/items/9754997977d90d8aa9b5)をご覧ください。

###nginxの.repoファイルを作成
`nginx.repo` というファイル名で、 `/etc/yum.repos.d/` 配下にファイルを作成してください。

```
# cd /etc/yum.repos.d
# touch nginx.repo
```

ファイルの中身を書き加えましょう。

```
# vi nginx.repo
```

.repoファイルの書き方は以下のような感じです。

```nginx.repo
[nginx] # リポジトリID（なんのリポジトリなのかを表す、ユニークで任意な名前）
name=nginx repo # リポジトリ名(yum repolistで表示される)
baseurl=http://nginx.org/packages/centos/7/$basearch/ # リポジトリの場所(このurlの先のリモートにリポジトリがある)
gpgcheck=0 # GPG署名確認を有効にするか否か（0 = しない, 1 = する）
enabled=1 # yum コマンド利用時にこのリポジトリを使用するかどうか（0 = しない, 1 = する）
```

#yumでインストール
まずは、先ほど追加したリポジトリが反映されているかのチェック。

```
# yum info nginx

利用可能なパッケージ
名前                : nginx
アーキテクチャー    : x86_64
エポック            : 1
バージョン          : 1.14.2
リリース            : 1.el7_4.ngx
容量                : 754 k
リポジトリー        : nginx/x86_64
要約                : High performance web server
URL                 : http://nginx.org/
ライセンス          : 2-clause BSD-like license
説明                : nginx [engine x] is an HTTP and reverse proxy server, as well as
                    : a mail proxy server.

```

こんな感じでリポジトリ情報が出てくれていれば、確認OK
あとは、インストール

```
# yum install nginx
```

#Nginxの起動と停止
###nginxのポートに気をつける
yumでnginxをインストールした際、デフォルトのポートは80番になっています。
nginxと一緒にApacheも入れてどちらもデフォルトのポート番号だと、ポートが被ってしまってうまく起動してくれません。
さらに、nginxは1024よりも低いポート番号（80番とか）で起動しようとすると、エラーログ（ `/var/log/nginx/error.log` ）に以下のようなエラーが出ます。

```error.log
bind() to 0.0.0.0:80 failed (13: Permission denied)
```
この場合、管理者権限（root権限）で、起動しなければならないみたいです。
しかし！自分の場合、sudoで実行しても、rootユーザーで実行しても全くこのエラーが解消されずでした…
なので、自分はポート番号を変えて解決しました！

###**-- 2019/02/14 追記**
SELinuxという標準の制御機能があるらしく、そいつの制御に引っかかって弾かれていたみたいです…（そんなのこのエラーだけじゃわからんよ…）
SELinuxの状態は以下で確認できます。

```
# getenforce
enforcing
```
>・enforcing SELinux有効でありアクセス制御が有効となる
・permissive アクセス制御は無効だが警告メッセージを表示する
・disabled SELinux無効

[こちら](https://eng-entrance.com/linux-selinux)より

なので、今回はSELinuxを`permissive`にしなくてはなりませんね。
変更のやり方はこうです

```
# setenforce 0 //permissiveに変更
# setenforce 1 //enforcingに変更
```

これでどんなポートでも設定できちゃいます！！！やったー！！！

###nginxで使用するポートの変更
設定できるのが、 `/etc/nginx/conf.d/default.conf` のファイルです。

```
# vi /etc/nginx/conf.d/default.conf
```

以下の部分を書き換えましょう！

```default.conf
server {
    listen       8080; # この部分でポート番号を変更できる
    server_name  localhost;
```

###起動
```
# systemctl start nginx
```
CentOS 6 以下は、`service`コマンドを使ってください。
###起動の確認
```
# systemctl status nginx
```
たくさん文字が出てきますが、`Active: active (running)`とどこかにあれば動いている証しです。
###停止
```
# systemctl stop nginx
```

#自動起動の設定
これは、CentOSの起動・再起動の際に一緒にnginxも起動するようにする設定です。
以下のコマンドでOK

```
# systemctl enable nginx
```
CentOS 6 以下は、`chkconfig`コマンドを使ってください。

#ブラウザ確認
まずは、CentOSがデフォルトでfirewalldが動いていてアクセス制御されているので、nginxで設定したポートを許容するように設定します。
これも、コマンドでできちゃいます。

```
# firewall-cmd --add-port=開けたいポート番号/tcp --zone=public --permanent
# firewall-cmd --reload //反映
```

あとは、ブラウザで `http://CentOSのIPアドレス:ポート番号` を叩けば、以下の画面が表示されて完了です。
<img width="741" alt="スクリーンショット 2019-01-11 3.05.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/bdc9a15c-23ca-08cd-fff5-8140d2dda475.png">