Linux OSもソフトウェアのApacheもどちらも無償で利用できるということもあり、世界中で使われています。
本記事では、Ubuntuを利用して、Apacheをインストールし、Webサーバーを構築する手順を紹介します。
2022.10.13
Ubuntuとは。特徴、できること、通常版とLTE版の違いを解説
UbuntuはLinux系のOSであり、多くのLinuxディストリビューションの中でも高い人気を誇ります。非常に扱いやすいた...
UbuntuをVPSで利用するなら
ミライサーバー
\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 |
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サーバーを構築してみてください。
UbuntuをVPSで利用するならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択することができます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。