摘要
Apache2是一个开源的http代理服务,被广泛应用于各种网站和服务的部署中。这篇文章将会记录如何安装和配置apache2并启用https,常用的命令也将会在文章最后列出。
第一部分:安装并测试apache2
步骤一:安装apache2
运行以下命令安装apache2:
sudo apt install apache2
步骤二:在防火墙中放行80端口
通过ufw放行用于测试默认网站的80端口:
sudo ufw allow 80
提示:更多关于ufw的使用方式,参考我的另一篇文章:
步骤三:测试默认网站
在浏览器中输入网址http://127.0.0.1,正常情况下将会打开类似的页面:
第二部分:在Ubuntu下配置apache2
在用一个示例网站配置之前,我们先了解一下apache2安装目录“/etc/apache2/”的文件结构:
/etc/apache2/
├── apache2.conf # 主配置文件,通常很少修改。
├── conf-available
├── conf-enabled
├── envvars # Apache2的环境变量,通常很少修改。
├── magic
├── mods-available # 已安装的apache2模块,非启用的模块。
├── mods-enabled # 已启用的模块。
├── ports.conf # 所有监听的端口配置。
├── sites-available # 所有的虚拟主机配置文件。
└── sites-enabled # 所有正在运行的虚拟主机配置文件。
我们现在以通过虚拟主机部署一个网站为例,介绍如何使用apache2。假设已经有一个服务部署在了9264端口,我们想通过网址http://service.example.com/访问这个服务(域名service.example.com已经通过A记录解析到ubuntu服务器上)。为此,我们新建一个.conf的虚拟主机配置文件。
步骤一:新建配置文件
在“/etc/apache2/sites-available/”目录下新建一个配置文件“service.conf”:
~$ cd /etc/apache2/sites-available/
/etc/apache2/sites-available$ sudo vim service.conf
步骤二:编辑配置文件
将如下配置添加到文件中:
<VirtualHost _default_:80> # 新建一个监听80端口的虚拟主机。
Servername service.example.com # 监听域名。
ProxyPass / http://localhost:9264/ # 正向代理转发到9264端口。
ProxyPassReverse / http://localhost:9264/ # 反向代理转发到9264端口。
ProxyPreserveHost On
</VirtualHost>
保存文件并退出文件。
步骤三:启用网站并重新加载apache2
通过如下命令启用网站:
sudo a2ensite service.conf
按照提示重新加载apache2:
sudo systemctl reload apache2
提示:每次修改apache2中的配置文件后,都需要重新加载apache2服务,有些时候需要依据提示重启apache2服务。
现在可以通过网址http://service.example.com/访问服务了。
步骤四:启用ssl模块并重启apache2
我们可以启用https(默认在443端口)提高访问服务的安全性,首先启用apache2的ssl模块:
sudo a2enmod ssl
正常启用成功时,命令行中将会提示重启apache2服务:
sudo systemctl restart apache2
检查“/etc/apache2/ports.conf”文件中443端口是否启用监听,默认情况下443端口是监听的。如果未监听,加入“Listen 443 https”并重新加载apache2。
步骤五:启用虚拟主机https监听
在启用虚拟主机的https前,先保证有一个对应域名的SSL证书。免费的SSL证书可以通过Let’s Encrypt申请,参考我的另一篇文章:
编辑刚才的虚拟主机配置文件并新增一个443端口的虚拟主机监听配置:
<VirtualHost _default_:443> # 新建一个监听443端口的虚拟主机。
Servername service.example.com
SSLEngine on # 启用SSL验证。
SSLCertificateFile /path/to/certificate/file
SSLCertificateKeyFile /path/to/certificate/key/file
ProxyPass / http://localhost:9264/ # 正向代理转发到9264端口。
ProxyPassReverse / http://localhost:9264/ # 反向代理转发到9264端口。
ProxyPreserveHost On
</VirtualHost>
保存并退出文件,重新加载apache2:
sudo systemctl reload apache2
步骤六:在防火墙中放行443端口
通过ufw在防火墙中放行443端口:
sudo ufw allow 443
现在我们可以通过网址https://service.example.com/访问服务。
第三部分:常用命令
切换服务状态
sudo systemctl start apache2 # 启动apache2服务
sudo systemctl stop apache2 # 停止apache2服务
sudo systemctl reload apache2 # 重载apache2服务
sudo systemctl restart apache2 # 重启apache2服务
启用/禁用虚拟主机配置
sudo a2ensite <.conf file>
sudo a2dissite <.conf file>
启用/禁用apache2模块
sudo a2enmod <module name>
sudo a2dismod <module name>