nginxの公開ディレクトリの設定方法

CentOS 7 にインストールしたnginxに公開ディレクトリの設定をしてみます。nginxは初期状態のままです。

まず、公開するディレクトリを作成します。/var/www/html 配下にdumyというディレクトリを作成して、そこにhtmlファイルを格納するようにします。rootユーザーで作業します。

公開用のdumyディレクトリの作成をします。

# cd /var/www/html
# mkdir dumy

dumyディレクトリの所有者を変更します。既存のユーザーであれば何でも良いです。nginxが参照できるようにディレクトリの権限を775とします。

# chown usr:usr dumy
# chmod 775 dumy

lsコマンドで確認します。

# ls -l
drwxrwxr-x 2 usr usr 4096 1月 2 20:56 dumy

dumyディレクトリ配下にindex.htmlファイルを作成します。

# cd dumy
# vi index.html

index.htmlに記載する内容です。


<!DOCTYPE HTML>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<META name="viewport" content="width=device-width,initial-scale=1">
<TITLE>TEST PAGE</TITLE>
</HEAD>
<BODY>
これはテストページです。
</BODY>
</HTML>

index.htmlファイルも所有者を変更しておきます。

# chown usr:usr index.html
# ls -l
-rw-r--r-- 1 usr usr 262 1月 2 20:56 index.html

公開用ディレクトリとindex.htmlファイルの作成ができましたので、nginxがこのディレクトリを公開するようにします。
/etc/nginx/conf.d 配下のdefault.confを修正します。

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

修正箇所はrootディレクティブです。太字のように修正をします。


修正前
location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}
 ↓
修正後
location / {
    root   /var/www/html/dumy;
    index  index.html index.htm;
}

修正が終わったらコンフィグテストをします。

# nginx -t

「nginx.conf syntax is ok」および「nginx.conf test is successful」と表示されればOKです。

nginxを起動します。

# systemctl start nginx

ウェブブラウザに「http://nginxのIPアドレス/」を入力して以下の画面が表示されれば成功です。

もしうまくいかない場合はnginxのログを見てみましょう。ログは初期状態だと /var/log/nginx 配下に出力されます。access.logとerror.logがあるので、サーバーまで通信が届いているかはaccess.logで確認して、通信が届いている場合はerror.logでエラー内容を確認します。初期状態のログ出力先は /etc/nginx/nginx.conf ファイルに記載されています。

CentOSにnginxをインストールしてみた。

CentOSにnginxをインストールしてみました。その手順です。Apacheが裏で動いている状況でインストールしたので、その考慮を後半に書いています。

まずnginxのダウンロードサイトを見てみます。

2021年1月1日時点で、Mainline versionだと「1.19.6」、Stable versionだと「1.18.0」が最新のようです。Mainline版とStable版の違いですが、nginxの新機能やバグ修正はMainline版に取り込まれ、その後、Stable版に反映されるようです。Stable版のほうが安定していると思いますが、Mainline版でもテストは十分されているようで推奨されているのはMainline版のほうです。ですので、Mainline版のほうをインストールしようと思います。

インストールはyumコマンドで行います。CentOSのデフォルトではnginxのリポジトリがないので新規にrepoファイルを作成します。repoファイルの配置場所は /etc/yum.repos.d 配下です。ここに nginx.repo というファイルを新規作成します。作業はrootユーザーで行います。

# cd /etc/yum.repos.d
# vi nginx.repo

nginx.repoに記載する内容です。


[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

baseurlの中でCentOSのバージョンを指定していますので(太字の所)、ここはCentOSのバージョンに合わせて変更してください。今回はCentOS 7.9 ですので「7」としています。baseurlのパスはmainline版のほうにしています。

リポジトリファイルが出来たらyumが機能するか試してみます。

# yum info nginx

以下が実行した結果です。バージョン「1.19.6」となっています(赤枠の所)。

それでは、nginxをインストールします。

# yum install nginx

(インストールログは省略)

インストールが完了したら確認してみます。

# nginx -v
nginx version: nginx/1.19.6

-vオプションで、上記のようにバージョンが表示されます。

インストールしただけの状態ではnginxは起動していません。これからnginxを起動させるのですが、冒頭で書いたように裏でApacheが動いているので以下の対応を行います。

  • nginxの受付ポートを80から8000に変更する。
  • firewalldでポート8000の穴開けをする。

ポート80をApacheが使っているのでnginxの受付ポートを8000としています。

では、nginxの受付ポートを変更してみます。/etc/nginx/conf.d 配下にdefault.confというファイルがあるので、ここのlistenディレクティブを変更します。

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

修正する内容です(listenディレクティブは2行目にあります)。

修正前
listen 80;

修正後
listen 8000;

次に、firewalldでポートの穴開けをします。

# firewall-cmd --add-port=8000/tcp
success

success と表示されればOKです。ポートが開いたかを確認します。

# firewall-cmd --list-ports
8000/tcp

8000/tcp が表示されていれば開いています。

これで準備が整いましたのでnginxを起動させます。

# systemctl start nginx

ウェブブラウザから「http://nginxのIPアドレス:8000/」としてnginxにアクセスします。ポート指定するのを忘れずに。以下の画面が表示されればnginxは稼働しています。

最後に、nginxの停止とfirewalldでのポートの閉め方を書いておきます。

nginxを停止させます。

# systemctl stop nginx

ポート8000も閉めておきます。

# firewall-cmd --remove-port=8000/tcp
success

firewall-cmd --list-ports をすると「8000/tcp」の表示はなくなっています。