Apache,通常被称为Apache HTTP服务器,它是一个由Apache基金会维护的免费开源跨平台Web服务器,这有助于修复软件错误并提高其整体效率。撰写本文时,Apache最新版本是2.4.60。
与Nginx相比,Apache市场份额较低,约为29.5%,但仍然占据主导地位。根据W3Techs的数据,Nginx略微领先,市场份额约为34.1%。
由于Apache高度可靠、灵活、易于安装,并具有众多功能,深受开发人员和Linux爱好者的欢迎。在本文中,小编将介绍Debian安装Apache以及配置虚拟主机简单方法,同时包括在使用SSL的服务器上托管多个域名的步骤。
先决条件
在开始之前,请确保满足以下要求:
- 一个安装Debian 12系统的服务器
- 指向服务器的完全限定域名( FQDN )
- 本文实例使用的指向IP地址为192.168.122.27
- 良好网络连接
注意:以下仅在Debian 12系统中安装了Apache,支持静态网站编译。如果想要编译PHP动态网站,还需要安装SQL数据库和PHP,具体参考Debian 11/10/9系统安装和测试LAMP环境教程。
步骤1:更新Debian 12系统存储库
在Debian 12上安装Apache的第一步是更新系统存储库。为此,请以普通用户身份登录并使用sudo权限运行该命令:
sudo apt update -y
步骤2:在Debian 12上安装Apache
安装Apache非常简单,成功更新系统存储库后,运行以下命令在Debian 12上安装Apache:
sudo apt install apache2 -y
成功安装Apache Web服务器后,建议检查服务是否正在运行,虽然大多数systemd Linux系统会在安装后自动启动该服务。要检查Apache网络服务器的状态,请执行该命令:
sudo systemctl status apache2
如果服务未运行,请使用命令启动该服务:
sudo systemctl start apache2
要在启动时启用Apache Web服务器,请执行以下命令:
sudo systemctl enable apache2
要重新启动Apache,请运行下面的命令:
sudo systemctl restart apache2
步骤3:配置防火墙以允许HTTP端口
如果已经配置了UFW防火墙,需要允许Apache服务跨越防火墙,以便外部用户可以访问Web服务器。为了实现这一点,需要允许防火墙上的HTTP和HTTPS端口上的流量:
sudo ufw allow 80 sudo ufw allow 443
要验证防火墙是否允许该端口,请运行以下命令:
sudo ufw status
此外,可以使用netstat 命令或ss命令来验证端口,命令如下:
sudo ss -pnltu
步骤4:验证Apache HTTP Web服务器
完成所有设置后,打开网络浏览器并浏览服务器的IP地址或FQDN,命令如下:
http://服务器的IP地址 或者是 http://服务器绑定的域名
步骤5:在Apache上托管示例网站
Apache网络服务器已经设置完毕,现在可以托管示例网站了。默认的Apache网页文件index.html
位于/var/www/html/
,也就是网页根目录。你可以托管单个站点,也可以创建虚拟主机文件来托管多个站点。
要托管单个站点,可以修改位于网页根目录中的index.html
文件。但首先,请按照如下所示备份文件:
sudo mv /var/www/html/index.html /var/www/html/index.html.bak
现在创建一个新的index.html
文件:
sudo nano /var/www/html/index.html
然后添加一些简单HTML示例内容,如下所示:
<html> <head> <title>Welcome to crazytechgeek</title> </head> <body> <h1>Howdy Geeks! Apache web server is up & running</h1> </body> </html>
退出文本编辑器并重新启动Web服务器:
sudo systemctl restart apache2
现在重新加载浏览器并注意新网站的变化:
步骤6:在Apache上创建虚拟主机
如果希望Web服务器托管多个网站,最好的解决方法是在Apache Web服务器中创建虚拟主机。当你想在单个服务器中托管多个域名时,虚拟主机非常有用。
首先需要为域名创建一个网页根目录(例如idccoupon.com
)。
sudo mkdir -p /var/www/html/idccoupon.com/
接下来,将使用$USER
变量为目录分配必要的权限:
sudo chown -R $USER:$USER /var/www/html/idccoupon.com/
接下来,为域名分配网页根目录的必要权限:
sudo chmod -R 755 /var/www/html/idccoupon.com
现在使用你喜欢的文本编辑器,前往创建一个示例index.html
文件:
sudo nano /var/www/html/idccoupon.com/index.html
这里添加一些HTML示例内容,具体如下:
<html> <head> <title>Welcome to Idccoupon.com</title> </head> <body> <h1>Howdy Geeks!</h1> </body> </html>
保存并退出文本编辑器。
现在,使用下面显示的命令为该域名创建一个虚拟主机文件:
sudo nano /etc/apache2/sites-available/idccoupon.com.conf
现在复制并粘贴下面的内容并用你自己的域名替换idccoupon.com
域名。
<VirtualHost *:80> ServerAdmin admin@idccoupon.com ServerName idccoupon.com ServerAlias www.idccoupon.com DocumentRoot /var/www/html/idccoupon.com/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
保存并退出。
此时,启用虚拟主机文件,命令如下:
sudo a2ensite idccoupon.com.conf
现在让我们禁用默认站点:
sudo a2dissite 000-default.conf
要使更改生效,请重新加载Apache网络服务器:
sudo systemctl restart apache2
现在重新加载Web服务器并注意页面内容的变化。
注意:部署多个虚拟机都可以重复上述步骤,记得替换成你自己相对应的域名。
步骤7:在Apache上使用Let’s Encrypt启用HTTPS/SSL
为了使用HTTPS保护你的网站,可以使用Let’s Encrypt获取免费的SSL证书。要获得免费的SSL,需要安装Certbot工具,该工具可自动执行获取和更新SSL证书的过程:
sudo apt install certbot python3-certbot-apache -y
运行Certbot以获取证书并自动配置Apache以使用它:
sudo nano /etc/apache2/sites-available/idccoupon.com-le-ssl.conf
系统将提示你输入电子邮件地址并同意服务条款。然后, Certbot将联系Let’s Encrypt CA以获取并安装你的证书。
Certbot应该自动配置你的虚拟主机以使用SSL,你可以通过检查配置文件来验证它:
sudo nano /etc/apache2/sites-available/idccoupon.com-le-ssl.conf
它看起来应该是这样的:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin admin@idccoupon.com ServerName idccoupon.com ServerAlias www.idccoupon.com DocumentRoot /var/www/html/idccoupon.com/ ErrorLog ${APACHE_LOG_DIR}/idccoupon.com_error.log CustomLog ${APACHE_LOG_DIR}/idccoupon.com_access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/idccoupon.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/idccoupon.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>
打开浏览器并访问你的域名,没有问题的话应该会看到之前创建的示例页面,并且应该是使用https开头。
步骤8:自动更新Apache的SSL证书
现在Let’s Encrypt证书有效期为90 天,因此通过cron job设置自动续订非常重要:
sudo crontab -e
将以下行添加到crontab:
0 0 * * 0 /usr/bin/certbot renew --quiet
这将每周自动更新SSL证书,确保在90天到期之前完成更新。
小结
以上教程主要介绍了Debian 12系统安装Apache以及如何配置虚拟主机来托管多个网站的简单方法,如果你有这方面的的操作需求,可以参考上述教程进行设置。