CentOS8にnginxをインストールする

nignxはいわゆるWebサーバで、HTTPで接続してきた他のPCにそのリクエストにあったページを返してあげる役割を持っています。

Webサイトを公開する、ブラウザでアクセスするようなアプリケーションを起動させるためには必要となります。

有名なWebサーバには他にもApacheというWebサーバがあります。

Apacheは単体で一般的なWebサーバの役割だけでなくプログラムを実行したりといったWebサイトやWebアプリを表示する上で必要なことを大抵まかなえます。

代わりに遅い上に、たくさん(具体的には約1万台から)同時に接続されるとどれほど良いサーバを使っても遅くなってしまいます。(C10K問題)

Nginxは自身ではプログラムを動かすことは出来ないので、ほとんどのことは他の所に任せます。Nginxが出来るのは静的なページを返してあげることと、他の所にリクエストを転送するだけです。

代わりに早いですし、Apacheのように大量にアクセスされたら必ず遅くなるという問題は存在しません。当然サーバの許容量を超えたアクセスがあれば遅くなりますけれど。

上述の通りNginxは単体ではPHP等のプログラムを動かせないため、これらを動かすためのプログラムを別途入れる必要があります。

とりあえず、今回はNginxをインストールして、静的なページが見れることを確認します。

この記事で行うこと

  1. Nginxのインストール
    1. EPELリポジトリからインストール
    2. Nginxの公式リポジトリからインストール
  2. Nginxの起動と自動起動の設定
  3. ファイアウォールのポート開放
  4. サンプルページの表示

1. Nginxのインストール

CentOS8の公式リポジトリ内にもnginxは存在しています。

公式リポジトリのnginxをインストールする場合は何の捻りもなく、以下のコマンドでインストールできます。

[root@localhost ~]# dnf install nginx

しかし、これでインストールできるnginxのバージョンは1.14となります。

現在の最新のバージョンは1.18なので、多少古い物となります。

(どちらも記事執筆時点です)

このため、以下のどちらかの方法で最新の1.18をインストールしたいと思います。

1-1. EPELリポジトリからインストール

EPELリポジトリからのインストールではある程度CentOS8で使えることが保証できる点がメリットとなります。

また、PHPを使う時に使える基本的な設定ファイルが用意されているのもメリットです。(逆に余計な物が付いてくるという考え方も無いではないですが……)

何より、リポジトリファイルを作る必要が無く dnf だけで事が済むので楽です。

まず、EPELリポジトリをインストールします。

[root@localhost ~]# dnf install epel-release

リポジトリについては以下を参照してください。

https://wrd.yuto-shin.net/2020-07/about-dnf-repository-centos8

次にEPELリポジトリ内のモジュールを選択してnginxをインストールすれば完了です。

[root@localhost ~]# dnf module install nginx:mainline/common

モジュールについては以下のページを参照してください。

https://wrd.yuto-shin.net/2020-08/about-dnf-module-centos8

1-2. nginxの公式リポジトリからインストール

公式リポジトリからのインストールからは常に最新のバージョンを使い続けることが出来ます。

まず、dnfのリポジトリファイルを作成します。リポジトリファイルの作成については以下のページで解説しています。

https://wrd.yuto-shin.net/?p=215

nginxの公式ページに作成するリポジトリファイルの中身が書かれているので、その通りにファイルを作成します。

nginxの公式ページではファイル名の指定もありますが、保存するディレクトリと拡張子さえ間違えなければ実際のところファイル名は何でも構いません。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

これは記事執筆時点の内容なので直接nginxの公式ページで確認するようにしてください。

あとは、通常と同じようにnginxをインストールすることでnginxの公式リポジトリからnginxをインストールすることが出来ます。

[root@localhost ~]# dnf install nginx

2. Nginxの起動と自動起動の設定

nginxをインストールしたら次は起動を行いましょう。

起動はSSHと同様になります。

https://wrd.yuto-shin.net/2020-06/set-sshd-noroot-centos8

以下のコマンドを実行します。

[root@localhost ~]# systemctl enable --now nginx
  • --now : enable コマンドを使うときに設定することで、 start も同時に実行されるというオプションです。

3. ファイアウォールのポート開放

Webサーバが存在してもファイアウォールでHTTP接続が禁止されていれば接続することが出来ません。

ファイアウォールでHTTP接続が出来るようにポートを開放します。

https://wrd.yuto-shin.net/2020-06/setting-knowledge-firewall-centos8

以下のコマンドを入力します。

[root@localhost ~]# firewall-cmd --add-service=http --permanent
[root@localhost ~]# firewall-cmd --reload

4. サンプルページの表示

ブラウザを使って、サーバに接続してみます。

ブラウザのアドレスバーにサーバのIPアドレスを入れてみてください。

https://wrd.yuto-shin.net/2020-05/check-own-ip-centos8

以下のような画面が表示されたらインストール成功となります。

まとめ

今回はnginxのインストールについて説明しました。

このままの状態では静的なページの表示でしか使えず、またページが暗号化されていないためセキュリティも脆弱です。

次回以降にnginxを実際に使えるようにするための設定を一つ一つ解説していきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です