さくらのVPS立ち上げ vol.03 “Apacheをインストールする”

今回は、さくらのナレッジ > ナレッジ > ネコでもわかる!さくらのVPS講座 ~第三回「Apacheをインストールしよう」(https://knowledge.sakura.ad.jp/8541/) および Ubuntu 20.04にApache Webサーバーをインストールする方法https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-ja を参考にさくらのVPS(on ubuntu 20.04)にApacheをインストールします。

前回までの振り返り

前回までで、さくらのVPSにおける

・root権限を持つユーザーの適正運用(root権限を有するユーザーは普段使いせず、一般ユーザーを常用する)

・パスワード認証ではなく、公開鍵認証をする

を実行してきました。

何が足りていない?

現状ですと、PuTTYなどを使ったSSH接続しかできないので利便性が劣ります。Webサーバとしても利用できるように、Apacheをインストールします。

パケットフィルタリングの設定追加

さくらのVPSコントロールパネルのパケットフィルタリングを解除します。以下のポート通信を許可します。

ポート番号機能
80World Wide Web HTTP
443http protocol over TLS/SSL
ポート番号と機能内容
さくらVPSコントロールパネル>パケットフィルタ設定 を選択

フィルタの用途 > Web を追加し、ポート80/443を開放する

Apacheのインストール

サーバにログインし、rootに昇格します。以下のコマンドを実行してapacheをインストールします。

Ubuntu 20.04にApache Webサーバーをインストールする方法https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-ja

apt update   // ローカルパッケージインデックスを更新して、最新のアップストリームの変更を反映させます。
apt install apache2 // apache2パッケージをインストールします。

ファイアウォールの設定

ufwアプリケーションプロファイルを一覧表示します。

ufw app list

以下の応答が返ってきます。

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

これらのそれぞれの役割は以下の通りです。

Apache: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)のみを開きます。

Apache Full: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)とポート443(TLS/SSL暗号化トラフィック)の両方を開きます。

Apache Secure: このプロファイルは、ポート443 (TLS/SSL暗号化トラフィック)のみを開きます。

https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-ja

まだ、SSLの設定が完了していないため、ポート80と443を開く”Apache Full”を選択します。以下のコマンドをうつことで、応答が得られます

ufw allow "Apache Full"
> Rules updated
> Rules updated (v6)
systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enable>
     Active: active (running) since Tue 2021-05-04 23:35:01 JST; 13min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 11743 (apache2)
      Tasks: 55 (limit: 1074)
     Memory: 5.4M
     CGroup: /system.slice/apache2.service
             vd11743 /usr/sbin/apache2 -k start
             vd11744 /usr/sbin/apache2 -k start
             ew11745 /usr/sbin/apache2 -k start

May 04 23:35:01 xxxxxxxxx systemd[1]: Starting The Apache HTTP Server...
May 04 23:35:01 xxxxxxxxx systemd[1]: Started The Apache HTTP Server.

active(running)となっていますので、apacheが動作していることが分かります。

続いてサーバの外から通信をテストしましょう。

Apacheの通信テスト

自分のVPSのIPアドレスを把握します。わかっていない場合は、以下コマンドで調べます

hostname -I

サーバのIPアドレスが分かったところで、ブラウザ(Chrome, Firefoxなど)で自分のVPSにアクセスします。

http://xxx.xxx.xx.xxx

以下のような画面が出れば、Apacheを使ってWeb通信ができています。

Apacheの管理コマンド

Apacheの代表的コマンドは以下の通りです。

sudo systemctl stop apache2     // Webサーバを停止する
sudo systemctl start apache2    // Webサーバを起動する
sudo systemctl restart apache2  // Webサーバを再起動する。
sudo systemctl reload apache2  // Webサーバの設定をリロードする(通信は継続したまま)
sudo systemctl disable apache2  // Webサーバをサーバ起動と連動して起動することを禁止する
sudo systemctl enable apache2  // Webサーバをサーバ起動と連動して起動することを許可する

仮想ホストの設定

一つのサーバーで複数ドメインを仕分けるときに必要となります。
goja.netとhogehoge.jpドメインを保有しており、それらを自分のVPS IPアドレス 100.123.213.123にルーティングするとします。

goja.netとhoge.netをVPSのIPアドレスにルーティングするまでの様子

Ubuntu 20.04におけるApacheサーバの基本の設定

/var/www/htmlディレクトリからドキュメントを提供するように設定されているデフォルトで有効になっている1つのサーバーブロックがあります。これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくいことがあります。/var/www/htmlは変更せず、クライアントの要求がどのサイトとも一致しないときに表示するデフォルトディレクトリとして/var/www/htmlをそのまま置いておき、your_domainサイトの/var/www内にディレクトリ構造を作成しましょう。

https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-ja

それでは、hogehoge.jpの設定をしていきましょう。まずhogehoge.jpのディレクトリを次のように作成します

sudo mkdir /var/www/hogehoge.jp

次にディレクトリの所有権を割り当てます。まず、hogehoge.jpディレクトリの所有権を確認します。

ls -l

以下の表示が得られます。

drwxr-xr-x  2 root root 4096 May  5 01:50 hogehoge.jp/
drwxr-xr-x  2 root root 4096 May  4 23:34 html/

drwxr-xr-x の部分がディレクトリ、ファイルに割り振られているパーミッション(権限)を表しています。見方は以下の通りです。

何文字目?内容説明
1ファイル種別-: ファイル
dr: ディレクトリ
l: シンボリックリンク
2~4ファイル所有者が持つ権限r: 読み取り(read)
w: 書き込み(write)
x: 実行(execute)
5~7所有グループの持つ権限同上
8~10その他が持つ権限同上

最初の一文字目はファイルの種別を表しています。2文字目から4文字目はファイルの所有者に対する権限を表し、
5文字目から7文字目はファイルの所有グループに対する権限を表し、8文字目から10文字目はその他に対する権限を表しています。ここで先ほどの応答を再掲します。

drwxr-xr-x  2 root root 4096 May  5 01:50 hogehoge.jp/
drwxr-xr-x  2 root root 4096 May  4 23:34 html/


この場合、hogehoge.jpは、
ファイル種別:ディレクトリ
ファイル所有者が持つ権限: wxr (書き込み、実行、読み込み)
所有グループが持つ権限: xr (実行、読み込み)
その他が持つ権限: x(実行)
ということです。

その隣にroot rootと書いてある部分があります。左側は、所有者、右側は所有グループ(以下Gr)を表しています。すなわち、hogehoge.jpは所有者root, 所有Grはrootということになります。ここまでの情報をまとめると以下の通りです。

今回このディレクトリには
所有者:rwx
所有Gr: rx
その他:rx
の権限を与えたかったため、chmodコマンドを実行します。755が上記設定を表しています。

chmod 755 hogehoge.jp

chmod の使い方については以下サイト等を参考にしてください。
「Linuxの権限確認と変更(chmod)(超初心者向け)」
https://qiita.com/shisama/items/5f4c4fa768642aad9e06

次に、Linuxに標準装備のnanoエディタを用いてサンプルページとしてindex.htmlページを作成します。nanoでindex.htmlを作成および開くコマンドは以下です。

sudo nano /var/www/hogehoge.jp/index.html

index.htmlには以下を書き込みます。

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

次にApacheにhogehoge.jpのルートディレクトリを指定します。/etc/apache2/sites-able/000-default.confでデフォルトの設定ファイルを直接変更する代わりに、/etc/apache2/sites-available/hogehoge.jp.confで新しい設定ファイルを作成します。

sudo nano /etc/apache2/sites-available/hogehoge.jp.conf
<VirtualHost *:80>
    ServerAdmin webmaster@hogehoge.jp
    ServerName hogehoge.jp
    ServerAlias www.hogehoge.jp
    DocumentRoot /var/www/hogehoge.jp
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


ポイントは、DocumentRootに/var/www/hogehoge.jpを指定したことです。これにより以降hogehoge.jpにアクセスがあった場合は、/var/www/hogehoge.jpディレクトリからデータを読み出してWebページを表示することになります。続いて以下のコマンドを実行します。

sudo a2ensite hogehoge.jp.conf  // hogehoge.jp.confファイルの有効化
sudo a2dissite 000-default.conf // 000-default.confファイルの無効化

以下のコマンドで設定エラーがないか確認できます。以下の出力が得られればOKです。

sudo apache2ctl configtest
>> Syntax OK

Apacheを再起動します。

sudo systemctl restart apache2

これにより設定が完了しました。hogehoge.jpにアクセスすると以下が表示されるはずです。



以上でApacheの設定が完了しました。お疲れさまでした!

まとめ

今回は広く使われているWebサーバシステムApacheをインストールしました。次回はPythonのwebフレームワークDjangoをセットアップしていきます。

コメント

タイトルとURLをコピーしました