2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ApacheWebサーバのインストールとHTTPS対応まで

Last updated at Posted at 2023-01-12

船井総研デジタルのよもぎたです。

この記事では、AzureでUbuntu仮想マシンをデプロイする(Webサーバ用途)でデプロイした仮想マシンにApacheをインストールしてLet’s EncryptでHTTPSに対応させるところまでご紹介したいと思います。

なお、Let’s EncryptでHTTPSに対応させるには、ドメイン名が必要で、そのドメイン名が仮想マシンのグローバルIPアドレスに名前解決されるよう設定されていることが必要です。
ドメイン名の取得と設定は、お好みのレジストラで行ってください。

NginxのインストールとHTTPS対応はこちらの投稿をご覧ください。

インストールするパッケージはapache2です。

$ apt show apache2 2>/dev/null
Package: apache2
Version: 2.4.52-1ubuntu4.2
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 546 kB
Provides: httpd, httpd-cgi
Pre-Depends: init-system-helpers (>= 1.54~)
Depends: apache2-bin (= 2.4.52-1ubuntu4.2), apache2-data (= 2.4.52-1ubuntu4.2), apache2-utils (= 2.4.52-1ubuntu4.2), lsb-base, mime-support, perl:any, procps
Recommends: ssl-cert
Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser, ufw
Conflicts: apache2.2-bin, apache2.2-common
Replaces: apache2.2-bin, apache2.2-common
Homepage: https://httpd.apache.org/
Task: lamp-server
Download-Size: 97.9 kB
APT-Sources: http://azure.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
Description: Apache HTTP Server
 The Apache HTTP Server Project's goal is to build a secure, efficient and
 extensible HTTP server as standards-compliant open source software. The
 result has long been the number one web server on the Internet.
 .
 Installing this package results in a full installation, including the
 configuration files, init scripts and support scripts.

早速インストールします。

$ sudo apt install -y apache2

インストールが完了すると、すでにApacheが起動していることが分かります。

$ sudo ss -tlnp | grep :80
LISTEN 0      511                *:80              *:*    users:(("apache2",pid=3063,fd=4),("apache2",pid=3062,fd=4),("apache2",pid=3060,fd=4))
$ ps aux | grep apach[e]
root        3060  0.0  1.0   6768  4308 ?        Ss   07:37   0:00 /usr/sbin/apache2 -k start
www-data    3062  0.0  0.9 752984  4116 ?        Sl   07:37   0:00 /usr/sbin/apache2 -k start
www-data    3063  0.0  0.9 752984  4116 ?        Sl   07:37   0:00 /usr/sbin/apache2 -k start
www-data    3186  0.0  0.0   3736   160 ?        Ss   07:37   0:00 /usr/bin/htcacheclean -d 120 -p /var/cache/apache2/mod_cache_disk -l 300M -n
$ curl http://127.0.0.1/ 2>/dev/null | grep title
    <title>Apache2 Ubuntu Default Page: It works</title>

手元のPCからアクセスしても、デフォルトページが返されることが分かります。

$ curl http://xx.xx.xx.xx/ 2>/dev/null | grep title
    <title>Apache2 Ubuntu Default Page: It works</title>

Let's encryptで証明書を取得するため、certbotをインストールします。

$ sudo apt install -y certbot python3-certbot-apache

インストールしたcertbotで、証明書を取得します。途中いくつか質問に答える必要があります。

$ sudo certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): <username>@example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y or N
---snip---
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): example.com

親切なことに、Apacheのサイトの設定ファイルも作成して有効にしてくれます。
設定を有効にするために、Apacheを再起動します。

$ sudo systemctl restart apache2

ApacheがTCP443番ポートもListenしていることを確認します。

$ sudo ss -tlnp | grep apache
LISTEN 0      511                *:80              *:*    users:(("apache2",pid=4383,fd=4),("apache2",pid=4382,fd=4),("apache2",pid=4381,fd=4))
LISTEN 0      511                *:443             *:*    users:(("apache2",pid=4383,fd=6),("apache2",pid=4382,fd=6),("apache2",pid=4381,fd=6))
$ curl https://example.com/ 2>/dev/null | grep title
    <title>Apache2 Ubuntu Default Page: It works</title>

手元のPCからWebブラウザでアクセスしてみます。
スクリーンショット 2023-01-09 165952.png

無事アクセスできることが確認できました。

SSL/TLSの証明書も確認してみます。
スクリーンショット 2023-01-09 170235.png

証明書の有効期限が3か月なので、2か月ごとに更新することにしたいと思います。証明書の更新もcertbotで行えます。

cronに次の設定を仕込みます。今回は1月に証明書を発行したので、奇数月の1日午前7時ちょうどに更新処理とApacheのreloadを仕込みます。

0 7 1 1,3,5,7,9,11 * root /usr/bin/certbot renew --webroot-path /var/www/html/ --post-hook "/usr/bin/systemctl reload apache2" > /root/certbot-renew.execlog 2>&1

デフォルトではApacheのDocumentRootは/var/www/htmlに設定されています。ここにコンテンツを置いてもいいですし、別のDocumentRootを設定してそちらにコンテンツを置いても構いません。DocumentRootを変更した場合は、上記のcronのコマンドも合わせて変更してください。

この記事ではApacheのインストールとLet’s EncryptによるHTTPS対応まで紹介いたしました。

AzureでUbuntu仮想マシンをデプロイする記事UbuntuにNginxをインストールしてHTTPSに対応させる記事もよろしくお願いします。

最後までお読みいただきありがとうございました。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?