如何安装Apache并使用Let’s Encrypt证书进行安全配置?

让我们学习如何安装Apache HTTP服务器,并使用Let's Encrypt证书进行保护。

介绍

Apache是最广泛使用的HTTP Web服务器之一。为您的Web应用程序设置Apache并使用SSL证书进行保护是您需要执行的第一步。

在本教程中,您将学习如何在Ubuntu和CentOS上为您的网站设置Apache。我在DigitalOcean VM上进行了测试。

为了演示目的,我将使用测试域名test.sanakil.xyz,它是supercharged by Cloudflare

不要忘记将test.sanakil.xyz域名替换为您的实际域名。📢

创建DNS记录

登录到Cloudflare或您的域名注册商(如果不是Cloudflare)并创建一个A记录将域名指向云服务器的IP地址。

通过SSH登录您的云服务器。

安装Apache(Ubuntu)

将可用软件包更新到最新

sudo apt-get update

安装Apache

sudo apt-get install apache2

在防火墙中允许端口80和443用于HTTP服务器。

sudo ufw allow 'Apache Full'

检查您安装的Apache是否正常运行

sudo systemctl status apache2

安装Apache(CentOS)

将可用软件包更新到最新。

sudo yum update

安装Apache

sudo yum install httpd

在防火墙中添加端口80和443以访问Web应用程序。

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

启动Apache并检查运行状态

sudo systemctl start httpd
sudo systemctl status httpd

为网站创建虚拟主机

根据我们要服务的Web应用程序/网站的类型,可以使用两种方式创建虚拟主机。

假设应用程序已经在端口上运行一个Web服务器,如Node。我们可以使用代理在Apache中提供它。或者如果应用程序只是提供像静态站点一样的文件,我们可以指定在Apache中提供的应用程序路径

在Apache中创建虚拟主机文件-配置文件可以采用任何名称。但是,将其与我们将服务Web应用程序的域名一起保存会更好,以便于识别。

CentOS的其他设置

在CentOS(SELinux)中,默认情况下并不是所有内容都已启用,就像Ubuntu一样。

我们必须在Apache中创建sites-enabledsites-available文件夹。

sites-enabled – 告诉Apache使用其中的conf文件为访问者提供服务

sites-available – 存储虚拟主机conf文件

sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

现在告诉Apache读取sites-enabled文件夹中的conf文件。

sudo vi /etc/httpd/conf/httpd.conf

在文件末尾添加以下行

IncludeOptional sites-enabled/*.conf

配置Apache提供文件

  • 创建用于提供Web应用程序的文件夹
sudo mkdir -p /var/www/test.sanakil.xyz/webapp
sudo vi /var/www/test.sanakil.xyz/webapp/index.html
  • 粘贴以下HTML片段进行测试



Apache webapp


My Apache webapp is working in test.sanakil.xyz

  • 创建一个用于生成和存储日志的文件夹
sudo mkdir -p /var/www/test.sanakil.xyz/log
sudo touch /var/www/test.sanakil.xyz/request.log
sudo touch /var/www/test.sanakil.xyz/log/error.log
  • 打开配置文件(Ubuntu)
sudo vi /etc/apache2/sites-available/test.sanakil.xyz.conf
  • 打开配置文件(CentOS)
sudo vi /etc/httpd/sites-available/test.sankil.xyz.conf
  • 将以下配置片段粘贴到文件中,将你的域名修改为你的域名

ServerName test.sanakil.xyz
ServerAlias test.sanaki.xyz
DocumentRoot /var/www/test.sanakil.xyz/webapp
ErrorLog /var/www/test.sankil.xyz/log/error.log
CustomLog /var/www/test.sanakil.xyz/log/requests.log combined
  • 为文件夹赋予所需的权限。
sudo chown -R $USER:$USER /var/www/test.sanakil.xyz
sudo chmod -R 755 /var/www/test.sanakil.xyz

在apache中启用您的虚拟主机配置文件(Ubuntu)

sudo a2ensite test.sanakil.xyz.conf

出于安全原因,禁用默认的conf文件。

sudo a2dissite 000-default.conf

重新启动apache以使更改生效。

sudo systemctl restart apache2

在apache中启用您的虚拟主机配置文件(CentOS)

为apache创建符号链接

sudo ln -s /etc/httpd/sites-available/test.sanakil.xyz.conf 
/etc/httpd/sites-enabled/test.sanakil.xyz.conf

重新启动apache以使更改生效。

sudo systemctl restart httpd

启用HTTPS

在Ubuntu中,通过使用certbot Let's Encrypt,启用apache web服务器中的HTTPS变得很容易。

Let’s Encrypt是一个非营利组织,为数百万个网站提供免费的SSL证书。

Certbot是一款软件,它将使用Let's Encrypt为我们的网站自动设置HTTPS。

添加并安装apache的certbot(Ubuntu)

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache

添加并安装apache的certbot(CentOS)

sudo yum install epel-release
sudo yum install certbot python2-certbot-apache mod_ssl

获取SSL证书

sudo certbot --apache -d your-domain-name

如果certbot在没有任何问题的情况下完成了所有验证。

它将要求进行HTTPS重定向。选择选项2并输入。

就是这样。

如果一切都正常工作,https://test.sanakil.xyz将显示我们创建的基本HTML索引页面。

结论

我希望这给您关于在Apache上安装和实施SSL证书的一个想法。

接下来,了解如何implement a certificate in Nginx

类似文章