目的: CentOSにnginxをインストールし、簡単なHTMLページを表示できるWebサーバーを構築します。
1. 前提条件
- CentOS 7/8のインストールが完了している
- サーバーにrootアクセス権限がある
Linuxが使える仮想環境の構築がない方は
まずは下記記事から作成をしてみましょう。
2. EPELリポジトリの有効化
CentOSでは公式リポジトリにnginxが含まれていないため、EPELリポジトリを有効化します。
これにより、nginxのパッケージをインストールできます。
sudo yum install epel-release -y
を実行します。
「完了しました!」と表示されればOKです。
- 理由: EPEL (Extra Packages for Enterprise Linux) はRed Hat系ディストリビューション向けの追加パッケージを提供しているリポジトリです。nginxはここからインストールします。
3.yumリポジトリを設定する
/etc/yum.repos.d/nginx.repo
という名前のファイルを作成し、
下記内容を記述します。
[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
EOF
sudo tee /etc/yum.repos.d/nginx.repo <<EOF
を実行し、
上記を書き込むorペーストします。
4. nginxのインストール
リポジトリを追加したら、nginxをインストールします。
sudo yum install nginx -y
を実行します。
「完了しました!」と表示されればOKです。
- 理由: Webサーバーを立ち上げるためにnginxが必要です。
5. nginxの起動と有効化
インストールが完了したら、nginxを起動し、システム起動時に自動的にnginxが立ち上がるように設定します。
sudo systemctl start nginx
sudo systemctl enable nginx
を実行します。
- 理由:
start
でサービスを起動し、enable
で自動起動設定を行います。
6. ファイアウォールの設定
CentOSではファイアウォールを有効にしていることが多く、
nginxがHTTP通信に使用するポート80を許可する必要があります。
まず、以下のコマンドでファイアウォールの設定を確認します。
sudo firewall-cmd --list-all
を実行します。
この結果、許可されているサービスやポートが表示されますが、http
が含まれていない場合は許可します。
HTTP (ポート80) を許可する手順:
sudo firewall-cmd --permanent --zone=public --add-service=http
- 意味:
--permanent
オプションで設定を永続化します。--zone=public
はデフォルトゾーンの設定を変更しており、--add-service=http
でHTTPプロトコルを許可します。
今回私の画面では、既にhttpが許可されていたのでエラーがでていますが
successと表示されていればOKです。
ファイアウォールを再読み込みする:
sudo firewall-cmd --reload
- 理由: 変更を反映させるためにファイアウォールを再読み込みします。
設定後、再度sudo firewall-cmd --list-all
コマンドでHTTPが許可されているか確認します。
7. ブラウザでの確認
ファイアウォール設定が完了したら、nginxの動作確認のためにブラウザでアクセスします。
次の手順で確認します。
サーバーのIPアドレスを取得:サーバーのIPアドレスはip a
コマンドで確認します。inet
という表記の隣にある数値がサーバーのIPアドレスです 。
ブラウザでアクセス:サーバーのIPアドレスをブラウザのアドレスバーに入力します。
次のように入力してください。
http://<サーバーのIPアドレス>
例: http://192.168.1.25
↓検索結果
結果: nginxのデフォルトページが表示されます。「Welcome to nginx!」というメッセージが表示されれば、
nginxのインストールとファイアウォール設定は成功しています。
もし、下記のページが表示される場合はnginxがうまく動作していません。
※デフォルトのApacheが動作しています。
その場合は、下記コマンドでApacheを停止し、nginxを起動させて再度確認しましょう。
- sudo systemctl stop
- httpd sudo systemctl disable
- httpd sudo systemctl restart nginx
8. HTMLファイルの作成と配置
今はnginxのデフォルトページが表示されている状態ですが
次に、nginxのデフォルトページを変更して自分で作ったHTMLファイルを表示させてみましょう。
今のままでは/usr/share/nginx/html/index.html
に書き込み権限がないので
パーミッションを変更します。
↓現在の状態(root以外のユーザに書き込み権限がありません)
↓以下に変更
- HTMLファイルの作成:
echo "<h1>My First Web Page</h1>" > /usr/share/nginx/html/index.html
を実行 - nginxの設定ファイルを確認:
cat
で確認
nginxはデフォルトで/usr/share/nginx/html/
ディレクトリからコンテンツを提供します。
作成したHTMLファイルをここに配置することで、ブラウザからアクセスできるようになります。
9. ブラウザでの表示確認
再度、ブラウザからサーバーのIPアドレスにアクセスして、
作成したHTMLファイルが表示されることを確認します。
- 結果: 「My First Web Page」というメッセージが表示されます。
10.nginxの停止手順
nginxを使用しない場合は、以下のコマンドで停止することができます。
sudo systemctl stop nginx
- 意味:
systemctl
はサービスの管理コマンドであり、stop
はnginxのプロセスを停止させます。
また、nginxを再び使用する場合は、以下のコマンドで再起動できます。
sudo systemctl start nginx
必要に応じてnginxを停止・起動することで、サーバーのリソースを効率的に利用し、
セキュリティリスクを軽減することができます。
サーバーがインターネットに接続されている場合は、起動し続けておくと
セキュリティリスクがありますし、リソースの無駄使いやポートの競合など問題が発生する可能性があります。
普段使用している環境は、コマンド練習や他のサーバー構築で使用していると思うので
基本的には作成練習後はサービスを停止しておくようにしましょう。
まとめ
この手順を完了することで、CentOSにnginxを用いたWebサーバーを構築し、
HTMLファイルをブラウザに表示することができました。
nginxは軽量で高速なWebサーバーとして広く使用されており、
この基本設定を理解することで、さらなるカスタマイズや運用管理が可能になります。