今回は、さくらのナレッジ > ナレッジ > ネコでもわかる!さくらの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コントロールパネルのパケットフィルタリングを解除します。以下のポート通信を許可します。
ポート番号 | 機能 |
80 | World Wide Web HTTP |
443 | http protocol over TLS/SSL |


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にルーティングするとします。

Ubuntu 20.04におけるApacheサーバの基本の設定
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-ja
/var/www/html
ディレクトリからドキュメントを提供するように設定されているデフォルトで有効になっている1つのサーバーブロックがあります。これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくいことがあります。/var/www/html
は変更せず、クライアントの要求がどのサイトとも一致しないときに表示するデフォルトディレクトリとして/var/www/html
をそのまま置いておき、your_domainサイトの/var/www
内にディレクトリ構造を作成しましょう。
それでは、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をセットアップしていきます。
コメント