Webサーバーを立ててページを表示する(Nginx/Apache)¶
事前情報¶
あらかじめ用意するもの¶
SSHで接続できる、Ubuntu 24.04またはRocky Linux 10のサーバー( サーバー作成後の最初の手順(SSH接続から初期設定まで) )
サーバーのIPアドレス( IPアドレスに関するご質問 )
管理ユーザーのパスワード(
sudoの実行時に必要な場合があります。Rocky Linux 10では、初期状態ではパスワードなしでsudoを実行できます)
Webサーバーを選ぶ¶
Nginx |
Apache |
|
|---|---|---|
特徴 |
軽量で、同時接続が多い場合に向いています。
アプリケーションの前段に置く(リバースプロキシ)用途でも、よく使われます。
|
機能が豊富で、
.htaccess でフォルダーごとの設定ができます。PHPのサイトなどを、従来の構成で動かす場合によく使われます。
|
パッケージ名(Ubuntu) |
|
|
パッケージ名(Rocky Linux) |
|
|
迷った場合 |
こちらをおすすめします |
|
この手順で設定する内容¶
項目 |
内容 |
|---|---|
公開するポート |
TCP 80番(HTTP) |
ページを置くフォルダー |
OSとWebサーバーによって異なります(Step7で説明します) |
Note
手順¶
Step1. SSHでサーバーに接続する¶
お手元のPCから、管理ユーザーでSSHの接続を行います。接続の方法は サーバー作成後の最初の手順(SSH接続から初期設定まで) をご参照ください。
$ ssh -i ~/.ssh/id_rsa ubuntu@XXX.XXX.XXX.XXX
$ ssh -i ~/.ssh/id_rsa rocky@XXX.XXX.XXX.XXX
Step2. Webサーバーをインストールする¶
お選びのOSとWebサーバーのコマンドを、実行します。
$ sudo apt update
$ sudo apt install -y nginx
$ sudo apt update
$ sudo apt install -y apache2
$ sudo dnf install -y nginx
$ sudo dnf install -y httpd
Note
Step3. Webサーバーを起動して、状態を確認する¶
Rocky Linuxの場合は、Webサーバーを起動し、サーバーの起動時に自動で起動するように設定します。Ubuntuの場合は、この手順は不要です。
$ sudo systemctl enable --now nginx
$ sudo systemctl enable --now httpd
次のコマンドで、起動の状態を確認します。
$ systemctl is-active nginx
active
$ systemctl is-enabled nginx
enabled
$ systemctl is-active apache2
active
$ systemctl is-enabled apache2
enabled
$ systemctl is-active httpd
active
$ systemctl is-enabled httpd
enabled
active は、現在起動していることを、 enabled は、サーバーの起動時に自動で起動することを示します。$ ss -tlnp | grep ":80"
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 511 [::]:80 [::]:*
$ ss -tlnp | grep ":80"
Apacheでは、表示の形式がOSによって異なりますが、 :80 で待ち受けている行が表示されれば問題ありません(Ubuntuでは 0.0.0.0:80 、Rocky Linuxでは *:80 と表示されます)。
Step4. サーバーの中から表示を確認する¶
まず、サーバーの中から、ページを取得できるかを確認します。
$ curl -s -o /dev/null -w "%{http_code}\n" http://localhost/
200
200 と表示されれば、Webサーバーは正常に動作しています。
Note
/var/www/html が空の状態)では、 403 と表示されます。これは異常ではなく、Apacheの初期のテストページが、 403 の応答で返されるためです。Step5. 通信を許可する¶
インターネット側からWebサーバーに接続するためには、パケットフィルターと、OS内のファイアウォールで、80番ポートを許可します。
パケットフィルターで許可する¶
コントロールパネルで、対象のサーバーのパケットフィルターの設定を開きます。
TCPの80番(HTTP)を許可するルールを追加します。
設定を保存します。
設定の画面と手順は、 パケットフィルター をご参照ください。
OS内のファイアウォールで許可する¶
$ sudo ufw allow 80/tcp
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-services
http ssh
Note
firewalldを有効にしていて、 http を許可していない場合は、パケットフィルターで80番を許可していても、外部から接続できません。
両者の違いは コントロールパネルとOS内の設定の違い を、firewalldとufwの設定方法は、 Firewalldの設定方法 、 ufwの設定方法 をご参照ください。
Step6. ブラウザーで表示を確認する¶
お手元のPCのブラウザーで、次のURLを開きます。
http://XXX.XXX.XXX.XXX/
次のタイトルのページが表示されれば、Webサーバーの公開は完了です。
OSとWebサーバー |
表示されるページのタイトル |
|---|---|
Ubuntu・Nginx |
Welcome to nginx! |
Ubuntu・Apache |
Apache2 Ubuntu Default Page: It works |
Rocky Linux・Nginx、Apache |
HTTP Server Test Page powered by: Rocky Linux |
Note
ブラウザーによっては、アドレスが https:// で始まるものに自動で補完されることがあります。表示されない場合は、アドレスの先頭に http:// を付けて開いてください。
表示されない場合は、 Webサイトが外部から表示されない場合の確認手順 をご参照ください。
Step7. ページを書き換える¶
ページを置くフォルダーは、OSとWebサーバーによって異なります。
OSとWebサーバー |
ページを置くフォルダー |
|---|---|
Ubuntu・Nginx、Apache |
|
Rocky Linux・Nginx |
|
Rocky Linux・Apache |
|
次のコマンドで、 index.html を作成します。フォルダーは、管理者権限(root)のため、 sudo を付けて実行します。
$ echo "<h1>Hello</h1>" | sudo tee /var/www/html/index.html
$ sudo rm /usr/share/nginx/html/index.html
$ echo "<h1>Hello</h1>" | sudo tee /usr/share/nginx/html/index.html
$ echo "<h1>Hello</h1>" | sudo tee /var/www/html/index.html
ブラウザーで、Step6と同じURLを再読み込みすると、作成したページが表示されます。
Note
/usr/share/nginx/html/index.html は、OSのテストページ( /usr/share/testpage/index.html )へのリンクです。index.html を作成してください。削除せずに tee で書き込むと、リンク先のテストページが書き換わります。Note
/var/www/html/index.nginx-debian.html です。 index.html を置くと、初期状態のページよりも優先して表示されます。index.html が、上書きされます。自分で作成したHTMLファイルなどをアップロードする場合は、次の点にご注意ください。
ファイルは、上の表のフォルダーに置きます。ファイル名を
index.htmlにすると、URLにファイル名を付けなくても表示されます。フォルダーに
sudoなしで書き込めるようにする場合は、フォルダーの所有者やアクセス権限を、お客様にて適切に設定してください。
設定ファイルとログ¶
Webサーバーの設定ファイルとログの場所は、次のとおりです。
項目 |
Ubuntu・Nginx |
Ubuntu・Apache |
Rocky Linux・Nginx、Apache |
|---|---|---|---|
設定ファイル |
/etc/nginx/nginx.conf |
/etc/apache2/apache2.conf |
Nginx:
/etc/nginx/nginx.confApache:
/etc/httpd/conf/httpd.conf |
サイトごとの設定 |
/etc/nginx/sites-available/default |
/etc/apache2/sites-available/000-default.conf |
Nginx:
/etc/nginx/conf.d/Apache:
/etc/httpd/conf.d/ |
アクセスログ |
/var/log/nginx/access.log |
/var/log/apache2/access.log |
Nginx:
/var/log/nginx/access.logApache:
/var/log/httpd/access_log |
エラーログ |
/var/log/nginx/error.log |
/var/log/apache2/error.log |
Nginx:
/var/log/nginx/error.logApache:
/var/log/httpd/error_log |
Note
Rocky Linuxのログは、 /var/log/nginx などのフォルダーが、管理者権限(root)でのみ参照できます。参照するときは、 sudo を付けて実行してください。
設定を変更した後は、設定の文法を確認してから、Webサーバーを再読み込みします。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl reload nginx
$ sudo apache2ctl configtest
Syntax OK
$ sudo systemctl reload apache2
$ sudo apachectl configtest
Syntax OK
$ sudo systemctl reload httpd
完了の確認¶
次の項目を確認してください。
systemctl is-activeの結果がactiveになっている(Step3で確認します)パケットフィルターで、TCPの80番が許可されている
OS内のファイアウォールを有効にしている場合は、80番(Rocky Linuxでは
http)が許可されているブラウザーで
http://から始まるURLを開くと、ページが表示される
次の手順¶
独自ドメインで公開する場合は、ドメインのDNSの設定を、VPSのIPアドレスに向ける必要があります。
HTTPS化する場合は、 Let's Encrypt をご参照ください。
公開前に、 サーバー作成直後に設定しておくべき初期セキュリティ設定 の内容を確認してください。