使用 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 服务,并结合 慈云数据 云服务器,确保高效稳定运行。
如果你需要高性能云服务器,推荐访问 慈云数据官网,选择适合的配置!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 语言数据结构(一):时/空间复制度

目录 一、前言 1. 什么是数据结构 2. 什么是算法 二、时 / 空间复杂度 1. 算法效率 2. 时间复杂度 2.1 时间复杂度的概念 2.2 大 O 的渐进表示法 2.3 常见的计算时间复杂度的例子 2.3.1 实例 1 2.3.2 实例 2 2.3.3 实例 3 2.3.4 实例 4 2.3.5 实例 5 &#xff1a…

一文读懂Redis分布式锁

引言 在当今互联网时代,分布式系统已成为大规模应用的主流架构。然而,这种架构中多个服务同时对共享资源的操作可能导致并发问题,如数据不一致和资源争用。有效管理这些并发访问,确保共享资源的安全性显得尤为重要。 分布式锁作…

23种设计模式一览【设计模式】

文章目录 前言一、创建型模式(Creational Patterns)二、结构型模式(Structural Patterns)三、行为型模式(Behavioral Patterns) 前言 设计模式是软件工程中用来解决特定问题的一组解决方案。它们是经过验证…

极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【三】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…

elk的相关的基础

以下是关于ELK(Elasticsearch, Logstash, Kibana)的200个基础问题及其答案,涵盖了ELK的核心概念、组件、配置、使用场景、优化等方面。 ​Elasticsearch 基础 ​**什么是Elasticsearch?**​ 答:Elasticsearch是一个分…

Beyond Compare for mac v5.0.6.30713 文件对比利器 支持M、Intel芯片

Mac毒搜集到的Beyond Compare是一套超级的文件及文件夹(目录)的比较工具,不仅可以快速比较出两个目录的不同,还可以比较每个文件的内容,而且可以任意显示比较结果。 应用介绍 程序内建了文件浏览器,方便您对文件、文件夹、压缩包…

ProfibusDP主站转ModbusTCP网关如何进行数据互换

ProfibusDP主站转ModbusTCP网关如何进行数据互换 在现代工业自动化领域,通信协议的多样性和复杂性不断增加。Profibus DP作为一种经典的现场总线标准,广泛应用于工业控制网络中;而Modbus TCP作为基于以太网的通信协议,因其简单易…

python代码注释方式

在 Python 中,注释是用于解释代码、提高代码可读性和可维护性的重要工具。Python 支持两种主要的注释方式:单行注释和多行注释。此外,Python 还支持文档字符串(docstrings),用于为模块、函数、类和方法提供…

【杂谈】信创电脑华为w515(统信系统)登录锁定及忘记密码处理

华为w515麒麟芯片版,还有非麒麟芯片版本,是一款信创电脑,一般安装的UOS系统。 准备一个空U盘,先下载镜像文件及启动盘制作工具,连接如下: 百度网盘 请输入提取码 http://livecd.uostools.com/img/apps/l…

数据结构秘籍(四) 堆 (详细包含用途、分类、存储、操作等)

1 引言 什么是堆? 堆是一种满足以下条件的树:(树这一篇可以参考我的文章数据结构秘籍(三)树 (含二叉树的分类、存储和定义)-CSDN博客) 堆中的每一个结点值都大于等于&#xff08…

#define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg))

这个宏 #define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg)) 是用来在 C++ 中标记某些函数、变量或者代码元素为已弃用(deprecated)的,并附带一个自定义的弃用消息。 具体解释: __declspec(deprecated(msg)): __declspec 是 Microsoft Visual C++ (MSVC) 的扩展…

服务器数据恢复—raid5阵列中硬盘掉线导致上层应用不可用的数据恢复案例

服务器数据恢复环境&故障: 某公司一台服务器,服务器上有一组由8块硬盘组建的raid5磁盘阵列。 磁盘阵列中2块硬盘的指示灯显示异常,其他硬盘指示灯显示正常。上层应用不可用。 服务器数据恢复过程: 1、将服务器中所有硬盘编号…

全网独家:zabbixV7版本容器服务器无法访问Postgres V17数据库的问题解决

近期将zabbix平台从V6.2.6升级到7.2.4,遇到问题“PostgresoL server is not available. Waiting 5seconds”,容器无法访问Postgres V17数据库,本文记录问题解决过程。 一、系统环境 1、数据库版本 数据库版本:postgres-17.4-tim…

进程控制 ─── linux第15课

目录 进程控制 1.进程创建 (fork前面讲过了) 写时拷贝 进程终止 进程退出场景 退出码 进程终止方法 进程控制 1.进程创建 (fork前面讲过了) 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父…

常见的网络协议介绍

一、什么是网络协议 指的是通信双方的数据发送和接收顺序,数据的封装规则。 通俗解释:描述双方发送和接收的每个字节是按照什么规则。 二、TCP/IP体系的常用协议 (一)应用层 HTTP:超文本协议;指的是用来传输文本网页的协议&#…

Hive-07之企业级调优

⭐️⭐️⭐️⭐️hive的企业级调优 1、Fetch抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算 例如:select * from score;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果…

华为云 | 快速搭建DeepSeek推理系统

DeepSeek(深度求索)作为一款国产AI大模型,凭借其高性能、低成本和多模态融合能力,在人工智能领域崛起,并在多个行业中展现出广泛的应用潜力。 如上所示,在华为云解决方案实践中,华为云提供的快速…

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…

3月5日作业

代码作业: #!/bin/bash# 清空目录函数 safe_clear_dir() {local dir"$1"local name"$2"if [ -d "$dir" ]; thenwhile true; doread -p "检测到 $name 目录已存在,请选择操作: 1) 清空目录内容 2) 保留目…

达梦数据库关于参数PK_WITH_CLUSTER的改动分析

目录 1、PK_WITH_CLUSTER取值为0 2、PK_WITH_CLUSTER取值为1 达梦数据库的参数PK_WITH_CLUSTER在最近使用过程中发现与前期使用的版本存在差异,特此测试分析一下。具体哪个版本改动的暂未得知。 PK_WITH_CLUSTER,默认值为0,动态会话级参数。…