当前位置: 首页 > news >正文

使用 Docker 和 Nginx 高效部署 Web 服务(适用于慈云数据云服务器)

前言

在现代 Web 服务部署中,DockerNginx 的结合是一种高效、灵活且可扩展的解决方案。

  • Docker 使应用程序及其依赖项封装到一个独立的容器中,确保一致性,并简化部署过程。
  • Nginx 作为高性能 Web 服务器和反向代理,能够高效处理请求、提供负载均衡,并提升网站安全性。

本教程将详细介绍如何使用 DockerNginx 部署 Web 服务,并结合 慈云数据 的服务器推荐,帮助您高效地完成部署任务。


一、准备工作

在开始部署之前,确保您拥有一台稳定的服务器。慈云数据 提供高性能云服务器,适合各类 Web 应用和 DevOps 项目。

1.1 为什么选择慈云数据?

  • 高性价比:提供灵活的配置,满足不同规模的业务需求。
  • 高速稳定:BGP 多线接入,直连中国电信 CN2 网络,保证低延迟、高速访问。
  • 7x24h 服务器监控:专业运维团队提供全天候支持,确保业务稳定运行。

👉 服务器推荐:

  • 基础型:2 核 4G 内存,适用于个人博客、小型应用。
  • 标准型:4 核 8G 内存,适用于中等流量网站、企业应用。
  • 高性能型:8 核 16G 内存,适用于高并发、大流量 Web 服务。

立即获取服务器 👉 慈云数据官网


二、Docker 环境安装

2.1 安装 Docker

可以通过官方提供的安装脚本进行快速安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

如果遇到网络问题,可使用国内 Daocloud 一键安装:

curl -sSL https://get.daocloud.io/docker | sh

启动 Docker 服务

sudo systemctl start docker

验证 Docker 是否安装成功

docker --version

如果正确显示版本号,则安装成功。


2.2 推荐安装 1Panel 面板

1Panel 是一款现代化的服务器管理面板,支持一键安装 DockerDocker Compose,极大提升服务器管理的便捷性。
可在 慈云数据 服务器上安装:

curl -sSL https://get.1panel.cn | bash

安装完成后,即可在 Web 界面管理容器、创建 Web 服务,极大简化运维操作。


三、部署 Web 应用

3.1 拉取 Nginx 镜像

docker pull nginx

这将从 Docker 官方仓库拉取最新版的 Nginx 镜像。


3.2 创建挂载目录

在宿主机上创建以下目录,用于存放 日志配置Web 文件

mkdir -p /root/nginx_conf
mkdir -p /root/nginx_logs
mkdir -p /root/nginx_web

授权文件夹,防止 Nginx 无法访问:

chmod 777 /root/nginx_conf
chmod 777 /root/nginx_logs
chmod 777 /root/nginx_web

3.3 创建容器并挂载目录

⚠️ 注意:如果直接挂载空目录,会导致 Nginx 容器的配置文件目录为空,进而启动失败。我们先启动一次容器,然后复制默认配置文件。

第一步:启动 Nginx 容器
docker run -itd --name nginx -p 80:80 nginx
第二步:复制配置文件到宿主机
docker cp nginx:/etc/nginx /root/nginx_conf
第三步:删除容器,并重新创建
docker rm -f nginx
docker run -itd --name nginx -p 80:80 \
  -v /root/nginx_web:/var/www/html \
  -v /root/nginx_conf/nginx:/etc/nginx \
  -v /root/nginx_logs:/var/log/nginx \
  nginx

四、配置 Nginx

进入配置目录 /root/nginx_conf/conf.d/,修改 default.conf,或者新建 .conf 文件。

Nginx 会自动读取该目录下所有 .conf 配置文件

示例 Nginx 配置文件:

server {
    listen 80;
    server_name 你的服务器IP或域名;
    client_max_body_size 20m;
    access_log /var/log/nginx/host.access.log main;

    gzip on;
    gzip_static on;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 5;
    gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_disable "MSIE [1-6]\.";

    location / {
        root   /var/www/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

五、上传 Web 文件并访问

5.1 上传 Web 项目

将您的 Web 项目上传到 /root/nginx_web 目录,例如:

scp -r my_project root@your_server_ip:/root/nginx_web

5.2 重启 Nginx

docker restart nginx

5.3 访问 Web 服务

通过浏览器访问:

http://你的服务器IP:80

如果一切正常,您的 Web 页面应能正确加载。


六、域名绑定和 HTTPS 配置

6.1 绑定域名

如果您想通过 域名 访问 Web 服务,需要进行 DNS 解析。
操作步骤:

  1. 在域名服务商(如阿里云、腾讯云)购买域名
  2. 在 DNS 解析管理页面,添加 A 记录,将域名指向 慈云数据 服务器的 IP
  3. 修改 Nginx 配置文件,将 server_name 改为你的域名:
server_name www.yourdomain.com;
  1. 重启 Nginx
docker restart nginx

6.2 配置 HTTPS(SSL 证书)

HTTP 站点会被浏览器标记为 不安全,因此建议启用 HTTPS
步骤:

  1. 阿里云 申请 免费 SSL 证书,下载 .pem.key 文件
  2. 将证书上传至服务器 /root/nginx_conf/ssl/ 目录
  3. 在 Nginx 配置中启用 HTTPS:
server {
    listen 443 ssl;
    server_name www.yourdomain.com;
    ssl_certificate /root/nginx_conf/ssl/cert.pem;
    ssl_certificate_key /root/nginx_conf/ssl/key.pem;
    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}
  1. 重启 Nginx
docker restart nginx

访问 https://yourdomain.com,即可使用 HTTPS 安全访问


总结

本教程介绍了如何在 Docker + Nginx 环境中部署 Web 服务,并结合 慈云数据 云服务器,确保高效稳定运行。
如果你需要高性能云服务器,推荐访问 慈云数据官网,选择适合的配置!🚀

相关文章:

  • Java多线程与高并发专题——ConcurrentHashMap 在 Java7 和 8 有何不同?
  • Linux下学【MySQL】中如何实现:多表查询(配sql+实操图+案例巩固 通俗易懂版~)
  • 仿mudou库one thread oneloop式并发服务器
  • 基于OpenCV的Java人脸识别系统设计与实现
  • 学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)
  • JAVA 学习路线 学习大纲(java 进阶路线)
  • 地下井室可燃气体监测装置:守护地下安全,防患于未“燃”!
  • alloc、malloc 与 allocator:内存管理三剑客
  • 直接法估计相机位姿
  • 【数据结构】什么是栈||栈的经典应用||分治递归||斐波那契问题和归并算法||递归实现||顺序栈和链栈的区分
  • 分布式系统的核心挑战与解决方案
  • Redis 常见数据类型
  • 如何让非 root 用户构建 Docker 镜像
  • .CSV file input into contact of outlook with gibberish. .csv文件导入outlook, 出现乱码
  • 用户权限管控:三种免密切换方案对比
  • [mybatis]resultMap详解
  • SpringBoot 核心原理深度解析
  • Python学习第八天
  • 如何在Android中实现自定义视图
  • Vue 监听器的魔法之旅:@Watch(‘form.productId’) vs @Watch(‘value’) 大揭秘!✨
  • 印巴战火LIVE丨“快速接近战争状态”?印度袭击巴军事基地,巴启动反制军事行动
  • 王受文已任全国工商联党组成员
  • 纽约大学朗格尼医学中心的转型带来哪些启示?
  • 从上海首个到成片复制,闵行零工市场如何优化劳动就业服务?
  • 夜读丨古代有没有近视眼?
  • 吴勇强、高颜已任南京市委常委