UbuntuとApacheでのWebサーバー構築方法【初心者向け】

Linux OSもソフトウェアのApacheもどちらも無償で利用できるということもあり、世界中で使われています。

本記事では、Ubuntuを利用して、Apacheをインストールし、Webサーバーを構築する手順を紹介します。

UbuntuVPSで利用するなら
ミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す

Apacheのインストール

前提条件

今回使用する仮想マシンは以下のとおりです。

    • CPU:2vCPU
    • Memory:4GB
    • Disk:50GB

Ubuntu、Apacheは以下のバージョンを利用しています。

    • Ubuntuのバージョン:Ubuntu 22.04.2 LTS
    • Apacheのバージョン:Apache 2.4.62(Ubuntu)

また、コマンドの標記については、実際に入力するコマンドを太字、コマンドを実行後に入力を求められる箇所については赤字、補足の内容を青字で記載しています。

Apacheのインストール手順

今回はUbuntuにデフォルトで利用できるソフトウェアリポジトリを使用してApacheをインストールします。

Apacheをインストールするには管理者権限が必要です。

rootアカウントを使用するか、通常ユーザーをsudoグループに追加しておきましょう。

今回は、testuserという一般ユーザーを追加します。

# usermod -aG sudo

ここでは、先ほどsudoグループに追加した一般ユーザー(testuser)を使って、sudoコマンドからApache2パッケージをインストールします。

$ sudo apt install apache2

インストールが完了すると、すでに起動した状態になるため、起動の確認とApacheのバージョンを確認します。

※起動確認

$ sudo systemctl status apache2

 

● apache2.service – The Apache HTTP Server

Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>

Active: active (running) since Sun 2023-04-09 06:45:25 JST; 3min 48s ago

Docs: https://httpd.apache.org/docs/2.4/

Main PID: 16063 (apache2)

 

Tasks: 55 (limit: 4616)

Memory: 5.0M

CPU: 26ms

CGroup: /system.slice/apache2.service

├─16063 /usr/sbin/apache2 -k start

├─16064 /usr/sbin/apache2 -k start

└─16065 /usr/sbin/apache2 -k start

※Apacheのバージョン確認

$ apachectl -v

Server version: Apache/2.4.52 (Ubuntu)

Server built:   2023-03-08T17:32:01

実際にブラウザを起動し、WebサーバーにアクセスするとApacheのデフォルトページが表示されます。

※ブラウザを起動し、以下のURLにアクセス

http://[WebサーバーのIPアドレスまたはホスト名]

 

または、Webサーバー上でブラウザを起動し、以下のURLを実行

http://localhost

 

Apacheのプロセス管理

ここで、インストールしたApacheのプロセス管理の方法について、紹介します。

インストールした直後はすでにWebサーバーが起動した状態ですが、停止や起動、自動起動の設定を行いたい場合は、以下のコマンドを実行します。

操作コマンド
Webサーバー停止$ sudo systemctl stop apache2
Webサーバー起動$ sudo systemctl start apache2
Webサーバー再起動$ sudo systemctl restart apache2
設定のリロード$ sudo systemctl reload apache2
自動起動の有効化$ sudo systemctl enable apache2
自動起動の無効化$ sudo systemctl disable apache2

Unix系OS専門のホスティングサービス「ミライサーバー」

SSL証明書の設定

Apache Webサーバーをインストールし、デフォルトページが表示されているので、Webサーバーの構築は完了しているように見えます。

しかし、先ほど接続したときのURLは「http」でした。

httpでの通信はデータが暗号化されていないため、安全ではありません。

そのため、データが暗号化された「https」での通信ができるように、SSL証明書の設定を行います。

SSL証明書の作成

httpsで通信するためにはSSL証明書が必要です。

本来であれば公的なSSL証明書を導入しますが、今回は手順の紹介のため、仮となる自己証明書を作成します。

自己証明書は、第三者によって認証がされていないため、信用度が低いです。

外部に公開する場合は、自己証明書を使用しないようにしましょう。

自己証明書の作成は、rootユーザーで行います。

手順1. rootユーザーへ変更

$ sudo su

※←プロンプトがシャープに変わる

手順2.  秘密鍵の作成

# cd /etc/ssl/private

# openssl genrsa -aes128 -out [秘密鍵ファイル名] 2048

(例:openssl genrsa -aes128 -out testssl.key 2048

Enter PEM pass phrase: ※秘密鍵のパスフレーズを入力

Verifying – Enter PEM pass phrase: ※秘密鍵のパスフレーズをもう1度入力

パスフレーズは、秘密鍵のパスワードのようなものです。

Apacheの設定が読み込まれるたびにパスフレーズの入力が求められます。

これが煩わしく感じる場合は、以下のコマンドでパスフレーズを削除することもできます。

# openssl rsa -in [秘密鍵ファイル名] -out [秘密鍵ファイル名]

(例:openssl genrsa -aes128 -out testssl.key 2048)

Enter pass phrase for testssl.key: ※設定した秘密鍵のパスフレーズを入力

writing RSA key

手順3. CSRファイルを作成します。

これは、証明書を発行するために必要な情報を入力していくものです。

以下は設定例です。

# /etc/ssl/private# openssl req -new -days 365 -key [秘密鍵ファイル名] -out [CSRファイル名]

(例: /etc/ssl/private# openssl req -new -days 365 -key testssl.key -out testssl.csr)

 

Ignoring -days without -x509; not generating a certificate

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

 

—–

Country Name (2 letter code) [AU]:JP ※国のレターコード(日本だとJP)

State or Province Name (full name) [Some-State]: ※サーバーの所在(市区町村)

Locality Name (eg, city) []: ※サーバーの所在(都道府県)

Organization Name (eg, company) [Internet Widgits Pty Ltd]: ※組織名

Organizational Unit Name (eg, section) []: ※部署名

Common Name (e.g. server FQDN or YOUR name) []: ※サーバー名またはFQDN      

Email Address []: ※メールアドレス

 

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []: ※空白のまま

An optional company name []: ※空白のまま

手順4. 自己証明書の作成

CSRファイルをもとに、自己証明書を作成します。

以下は設定例です。

# openssl x509 -in [CSRファイル名] -out [自己証明書ファイル名] -req -signkey [秘密鍵ファイル名] -days 365

(例: openssl x509 -in testssl.csr -out testssl.crt -req -signkey testssl.key -days 365)

Certificate request self-signature ok

subject=C = JP, ST = Some-State, O = Internet Widgits Pty Ltd

※実際は、CSRファイル作成時に設定した内容が表示されます

 

#

# ls -lrt

total 16

-rw-r—– 1 root ssl-cert 1704  3月 21 14:53 ssl-cert-snakeoil.key

-rw——- 1 root root     1704  4月  9 07:21 testssl.key ※秘密鍵ファイル

-rw-r–r– 1 root root      956  4月  9 07:26 testssl.csr ※CSRファイル

-rw-r–r– 1 root root     1123  4月  9 07:32 testssl.crt ※自己証明書ファイル

 

手順5. Apacheの設定変更

Apacheの設定ファイルを修正し、作成した秘密鍵ファイル、自己証明書を参照するように設定します。

# vi /etc/apache2/sites-available/default-ssl.conf

※以下の行を修正

 

(修正前)

SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem

SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

(修正後)

SSLCertificateFile        /etc/ssl/private/testssl.crt  ※作成した自己証明書

SSLCertificateKeyFile /etc/ssl/private/testssl.key  ※作成した秘密鍵ファイル

手順6. SSL機能の有効化

設定したSSLの機能を有効化し、Apacheを再起動します。

# a2ensite default-ssl

Enabling site default-ssl.

To activate the new configuration, you need to run:

systemctl reload apache2

 

# a2enmod ssl

Considering dependency setenvif for ssl:

Module setenvif already enabled

Considering dependency mime for ssl:

Module mime already enabled

Considering dependency socache_shmcb for ssl:

Enabling module socache_shmcb.

Enabling module ssl.

See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.

To activate the new configuration, you need to run:

systemctl restart apache2

 

# systemctl restart apache2

* apache2.service – The Apache HTTP Server

Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)

Active: active (running) since Sun 2023-04-09 07:44:16 JST; 6s ago

Docs: https://httpd.apache.org/docs/2.4/

Process: 17628 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)

Main PID: 17632 (apache2)

Tasks: 55 (limit: 4616)

Memory: 6.6M

CPU: 23ms

CGroup: /system.slice/apache2.service

|-17632 /usr/sbin/apache2 -k start

|-17633 /usr/sbin/apache2 -k start

|-17634 /usr/sbin/apache2 -k start

 

実際にブラウザを起動し、Webサーバーにhttpsでアクセスします。

※ブラウザを起動し、以下のURLにアクセス

https://[WebサーバーのIPアドレスまたはホスト名]

 

または、Webサーバー上でブラウザを起動し、以下のURLを実行

https://localhost

 

今回設定した証明書は自己証明書であるため、以下のような警告が表示されますが、危険性を承知の上で接続すれば、先ほどのApacheのデフォルトページが表示されます。

まとめ

今回はUbuntuおよびApacheを使用したWebサーバーの構築方法について説明しました。

Apacheは多機能であり、単一のサーバーから複数のドメインを設定できるなど、いろいろなことが実行できます。

ぜひ、この手順をもとに実際にWebサーバーを構築してみてください。
Unix系OS専門のホスティングサービス「ミライサーバー」

UbuntuをVPSで利用するならミライサーバー

ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。

ミライサーバーのVPSでは、高速処理が可能なSSD全プランに搭載しています。

OSは、UbuntuDebianAlmaLinuxなどの豊富なラインアップから選択することができます。

2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。

▼ミライサーバーについてはこちら▼

Unix系OS専門のホスティングサービス「ミライサーバー」

VPSなら「ミライサーバー」

・全プランSSD搭載
・2週間無料

▶ ミライサーバーを無料で試す

関連記事

特集記事

おすすめ記事 最近の記事
  1. VPSに申込み、SSH接続するまでの流れ【ミライサーバー】

  2. KUSANAGIとは。超高速CMS実行環境でWordPressが高速に!

  3. レンタルサーバーからVPSへの移行!方法や注意点を解説

  1. Laravelとは。人気のPHPフレームワークを解説! 

  2. Laravelのインストール手順を解説【Ubuntu 22.04】

  3. Redmineの使い方をわかりやすく解説!【画像付き】

ランキング

  1. 1

    Ubuntu 22.04 LTSでのIPアドレス設定方法。コマンドも紹介

  2. 2

    UbuntuにSSHサーバーを構築し、SSHに接続する手順【初心者向け】

  3. 3

    SSH接続とは。リモートコンピューターへの接続方法をわかりやすく解説

カテゴリー

TOP