安装Apache Web服务器并提供HTTPS支持

我是船井総研デジタル的よもぎ。

我想在这篇文章中介绍如何在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>

即使从我的电脑上访问,也可以看到返回了默认页面。

$ 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端口。

$ 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>
スクリーンショット 2023-01-09 165952.png

我确认了您可以顺利访问。

スクリーンショット 2023-01-09 170235.png

由于证书的有效期为3个月,因此我希望每2个月更新一次证书。证书的更新也可以使用Certbot进行。

我們將下列設定加入到 cron 中。由於這次我們在1月份發行了證書,所以我們將在奇數月的1日早上7點準確執行更新處理和重新載入 Apache 的操作。

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的文章。谢谢。

感谢您一直阅读到最后。

广告
将在 10 秒后关闭
bannerAds