CodeGym /课程 /Docker SELF /部署带有虚拟主机和 SSL 的 Web 服务器

部署带有虚拟主机和 SSL 的 Web 服务器

Docker SELF
第 7 级 , 课程 5
可用

部署带有虚拟主机和 SSL 的 Web 服务器

1. 环境准备

现在是时候把一切整合在一起了。今天我们要部署一个服务器,带有多个虚拟主机并连接HTTPS。我们会进行测试、调试并最终完成配置。

我们的任务

在这个项目中,我们将在一台Web服务器上部署两个网站:

  • example.com
  • test.com

为每个网站配置虚拟主机,连接HTTPS,并展示调试和工作检查的步骤。准备好了吗?开始吧!

准备工作

在开始之前,请确保一切设置正确:

  1. 您已经安装了Web服务器(Nginx或Apache)。

    • 如果您使用的是Nginx:

      sudo apt-get update
      sudo apt-get install nginx
      
    • 或者Apache:

      sudo apt-get update
      sudo apt-get install apache2
      
  2. 已安装用于处理SSL的Certbot包。

    • 对于Nginx:

      sudo apt-get install certbot python3-certbot-nginx
      
    • 对于Apache:

      sudo apt-get install certbot python3-certbot-apache
      
  3. 您能够访问配置了example.com和test.com域名DNS的服务器,或者可以使用/etc/hosts进行测试。


2. 为每个站点设置目录

我们先为站点创建目录和文件。

步骤 1: 为站点创建文件夹

sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com

步骤 2: 创建测试 HTML 文件

为每个站点创建一个简单的 HTML 文件:

example.com

sudo nano /var/www/example.com/index.html

内容:

<!DOCTYPE html>
<html>
<head>
    <title>欢迎来到 example.com</title>
</head>
<body>
    <h1>这是 example.com</h1>
    <p>欢迎访问 example.com! 站点已启动并通过 SSL 保护!</p>
</body>
</html>

test.com

sudo nano /var/www/test.com/index.html

内容:

<!DOCTYPE html>
<html>
<head>
    <title>欢迎来到 test.com</title>
</head>
<body>
    <h1>这是 test.com</h1>
    <p>欢迎访问 test.com! 站点已启动并通过 SSL 保护!</p>
</body>
</html>

3. 配置虚拟主机

我们将为每个站点创建一个独立的配置文件。

步骤 1: 配置 Nginx

example.com

sudo nano /etc/nginx/sites-available/example.com

内容如下:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

test.com

sudo nano /etc/nginx/sites-available/test.com

内容如下:

server {
    listen 80;
    server_name test.com www.test.com;

    root /var/www/test.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

激活配置:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/

重新启动服务器:

sudo nginx -t
sudo systemctl reload nginx

步骤 2: 配置 Apache

example.com

sudo nano /etc/apache2/sites-available/example.com.conf

内容如下:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

test.com

sudo nano /etc/apache2/sites-available/test.com.conf

内容如下:

<VirtualHost *:80>
    ServerName test.com
    ServerAlias www.test.com

    DocumentRoot /var/www/test.com
    <Directory /var/www/test.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

激活配置:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2

4. 为站点配置 HTTPS

现在我们使用 Let’s Encrypt 为两个站点配置 SSL。

sudo certbot --nginx
# 或者对于 Apache:
sudo certbot --apache

在过程中会提示选择要为哪些网站生成证书。选择 example.comtest.com。Certbot 会自动更新服务器的配置。


5. 网站运行检查

设置完成后,访问你的网站:

你应该能看到创建的HTML页面。确保浏览器在地址栏中显示“安全”(Secure)。


6. 调试和检查

如果有问题,检查日志:

  • 对于 Nginx:

    sudo tail -f /var/log/nginx/error.log
    
  • 对于 Apache:

    sudo tail -f /var/log/apache2/error.log
    

或者通过 curl 检查可用性:

curl -I http://example.com
curl -I https://example.com

7. 续期证书

Certbot 会通过系统的 cron 自动更新证书。你可以手动运行以下命令来检查更新功能:

sudo certbot renew --dry-run

就是这样,一步一步地,我们配置了一个支持多个站点和 HTTPS 的 Web 服务器。你刚刚完成了从一个空服务器到拥有虚拟主机和 SSL 的工作的全过程。现在你的服务器已经准备好向世界展示它的网站了。是不是很酷呀?

1
Опрос
在 Linux 中操作 Web 服务器,  7 уровень,  5 лекция
недоступен
在 Linux 中操作 Web 服务器
在 Linux 中操作 Web 服务器
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION