一、前言

有时候我们为了节省成本,通过将多个网站部署在同一台服务器上,可以减少硬件和基础设施的成本。可以共享服务器资源,而不需要为每个网站单独购买和维护独立的服务器。以下内容简单介绍一下,在一台服务器上部署两个网站的方法,本文以部署两个博客程序为例。


二、博客程序部署

可以参考:https://www.tycp.xyz/37.html,这里有利用Docker搭建博客程序的详细说明。下面再补充一下Docker和Docker Compose的部署方法。

1、安装 Docker:

按照官方文档的说明安装 Docker,以下是一些常用操作系统的安装示例。对于 Ubuntu 或 Debian 系统,使用以下命令:

sudo apt update
sudo apt install docker.io

对于 CentOS 系统,使用以下命令:

sudo yum install docker

运行以下命令验证 Docker 是否正确安装并能正常工作,如果显示 Docker 的版本信息,表示安装成功。

sudo docker version

2、安装 Docker Compose:
下载 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

赋予二进制文件可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

创建符号链接:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

运行以下命令验证 Docker Compose 是否正确安装并能正常工作,如果显示 Docker Compose 的版本信息,表示安装成功。

docker-compose version

三、安装部署Nginx

1、在服务器上打开终端或命令提示符。根据您的操作系统类型,使用适当的包管理器执行安装命令。对于 Ubuntu 或 Debian 系统,使用 apt 包管理器。

sudo apt update
sudo apt install nginx

2、对于 CentOS系统,使用 yum 包管理器。

sudo yum install nginx

四、配置Docker Compose

1、创建项目目录,在服务器上选择一个合适的位置创建一个新的目录,用于存放 Docker Compose 配置文件和相关文件。
mkdir docker-project,这个目录名可自定义。

2、创建 Docker Compose 文件,在项目目录中创建一个名为 docker-compose.yml 的文件。

3、在 docker-compose.yml 文件中添加以下内容来定义一个自定义网络。

networks:
  mynetwork:
    driver: bridge

4、配置第一个网站(111.com)在 docker-compose.yml 文件中添加以下内容来配置第一个网站。

version: '3'
services:
  111-website:
    image: nginx
    container_name: 111-website
    restart: always
    networks:
      - mynetwork
    volumes:
      - ./111:/usr/share/nginx/html
    ports:
      - 80:80

将 ./111 替换为你第一个网站代码的目录路径。

5、配置第二个网站(222.com),在 docker-compose.yml 文件中添加以下内容来配置第二个网站。

version: '3'
services:
  222-website:
    image: nginx
    container_name: 222-website
    restart: always
    networks:
      - mynetwork
    volumes:
      - ./222:/usr/share/nginx/html

将 ./222 替换为你第二个网站代码的目录路径,这里不需要指定端口号。

6、配置 Nginx 反向代理,在 docker-compose.yml 文件中添加以下内容来配置 Nginx 反向代理。

version: '3'
services:
  nginx-proxy:
    image: nginx
    container_name: nginx-proxy
    restart: always
    networks:
      - mynetwork
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro

7、配置 Nginx,打开 Nginx 配置文件以进行修改。对于 Ubuntu 或 Debian 系统,配置文件位于 /etc/nginx/nginx.conf。
对于 CentOS 或 RHEL 系统,配置文件位于 /etc/nginx/nginx.conf。在该配置中,我们定义了一个 Nginx 服务器块,监听默认的 80 端口,并将请求代理到名为 222-website 的容器的 80 端口。

编辑配置文件并添加以下内容。

events {}

http {
  server {
    listen 80;
    server_name 222.com;

    location / {
      proxy_pass http://222-website:80;
    }
  }
}

将请求代理到名为 222-website 的容器的 80 端口,也就是将第二个网站的代理到80端口。

8、启动启动容器和Nginx服务。在项目目录中打开终端或命令提示符,并运行以下命令启动容器。

docker-compose up -d

启动Nginx服务。

sudo systemctl start nginx
sudo systemctl enable nginx

按照以上步骤配置和启动 Docker Compose,使用 Nginx 反向代理实现通过222.com访问第二个网站。确保每个服务的容器名称、镜像和目录路径等设置正确无误。根据需要,您可以进一步调整 Nginx 配置以满足您的需求。

请注意,为了使域名能够通过 DNS 解析指向您的服务器 IP 地址,您需要正确配置您的 DNS 服务器或域名注册商的 DNS 设置。