安装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>
我确认了您可以顺利访问。
由于证书的有效期为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的文章。谢谢。
感谢您一直阅读到最后。