运维 | 如何在 Centos 上快速部署 nginx | Docker
  bMJ94TEc8g8A 2023年11月13日 17 0

运维 | 如何在 Centos 上快速部署 nginx | Docker

前言

Nginx 是一个高性能的开源 Web 服务器软件,常用于搭建静态或动态网站、反向代理、负载均衡和缓存等。

本章主要简述如何使用 Nginx 的配置和部署,实现静态托管。

快速安装

使用 Docker 部署

环境搭建
  • Docker 安装文档:https://docs.docker.com/engine/install/
创建容器
  1. 在系统任意位置创建一个文件夹(可选),此文档以 /opt/docker/nginx 为例
mkdir -p /opt/docker/nginx && cd /opt/docker/nginx

注意:推荐大家养成习惯,为每个项目创建一个目录,所有配置或产生的数据都可以放在该目录中保存或管理。

  1. 拉取镜像

默认拉取的是最新的镜像,可按需指定版本,如:nginx:lastnginx:2.x 等等

docker pull nginx
  1. 创建简单容器

这里只需创建一个可以运行的容器,不用做过多的参数配置,目的只是为了获取容器内的一些固定配置或数据

docker run --name nginx -p 80:80 -d nginx
  1. 拷贝容器内配置文件或目录

    i. 查看容器 ID 或名称

    docker ps
    # or
    docker ps -a
    

    ii. 将容器中的 nginx.confconf.d 等映射到本地目录中

    docker cp [ID|NAME]:/etc/nginx/nginx.conf /opt/docker/nginx/conf
    docker cp [ID|NAME]:/etc/nginx/conf.d /opt/docker/nginx/conf
    
    docker cp [ID|NAME]:/usr/share/nginx/html /opt/docker/nginx
    

    iii. 停止并移除容器

    docker stop [ID|NAME]
    docker rm [ID|NAME]
    
  2. 创建带参容器

docker run --name nginx -m 200m -p 80:80 \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/logs:/var/log/nginx \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
--privileged=true -d nginx

docker run 命令参数说明 --name:为容器指定一个名称 -m:设置容器使用内存最大值 -p:端口映射,格式为 主机(宿主)端口:容器端口 -v: 工作目录映射。形式为:-v 宿主机路径:/...,后者不能修改。 --privileged=true:容器内部对挂载的目录拥有读写等特权 -d : 后台运行容器

  1. 访问地址 http://ip:端口号

若正常访问即表示部署成功

更新容器
  1. 停止运行中的容器
docker stop [ID|NAME]
docker rm [ID|NAME]
  1. 备份数据(重要)
cp -r /opt/docker/nginx /opt/docker/nginx.archive

若没有备份数据,可跳过这一步骤

  1. 更新服务

拉取指定版本镜像(默认最新)

# 示例:docker pull nginx:last
docker pull [IMAGE]

重新启动容器

修改版本号后,按照最初安装的方式,重新创建容器即可。

docker run --name nginx -m 200m -p 80:80 \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/logs:/var/log/nginx \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
--privileged=true -d nginx:2.x.x

使用 Docker Compose 部署

环境搭建
  • Docker 安装文档:https://docs.docker.com/engine/install/
  • Docker Compose 安装文档:https://docs.docker.com/compose/install/
创建容器
  1. 在系统任意位置创建一个文件夹(可选),此文档以 /opt/docker/nginx 为例
mkdir -p /opt/docker/nginx && cd /opt/docker/nginx

mkdir ./{conf,data,html,logs}

注意:后续操作中,产生的所有数据都会保存在这个目录,请妥善保存。

  1. 拷贝容器内配置文件或目录

    i. 创建一个简单容器

    docker run --name nginx -p 80:80 -d nginx
    

    ii. 将容器中的 nginx.confconf.d 等映射到本地目录中

    docker cp [ID|NAME]:/etc/nginx/nginx.conf /opt/docker/nginx/conf
    docker cp [ID|NAME]:/etc/nginx/conf.d /opt/docker/nginx/conf
    
    docker cp [ID|NAME]:/usr/share/nginx/html /opt/docker/nginx
    

    iii. 停止并移除容器

    docker stop [ID|NAME]
    docker rm [ID|NAME]
    
  2. 创建 docker-compose.yaml

version: '3'
services:
  nginx:
   image: nginx
   privileged: true
   ports:
    - 80:80
   volumes:
    - ./conf/conf.d:/etc/nginx/conf.d
    - ./conf/nginx.conf:/etc/nginx/nginx.conf
    - ./html:/usr/share/nginx/html/
    - ./logs:/var/log/nginx
  1. 访问地址 http://ip:端口号
更新容器
  1. 停止运行中的容器
cd /opt/docker/nginx && docker-compose down
  1. 备份数据(重要)
cp -r /opt/docker/nginx /opt/docker/nginx.archive

需要注意的是,nginx.archive 文件名不一定要根据此文档命名,这里仅仅是个示例。

  1. 更新服务

修改 docker-compose.yaml 中配置的镜像版本

拉取镜像

docker-compose pull nginx

重新启动容器

docker-compose up -d

使用实例

编排 nginx + springboot 项目

  1. 创建 docker-compose.yaml
version: '3'
services:
  nginx:
   image: nginx
   privileged: true
   ports:
    - 80:80
   volumes:
    - ./conf/conf.d:/etc/nginx/conf.d
    - ./conf/nginx.conf:/etc/nginx/nginx.conf
    - ./html:/usr/share/nginx/html/
    - ./logs:/var/log/nginx

  app:
    image: app
    expose:
      - "8080"
  1. ./conf/conf.d 目录下 编写app.conf 文件
server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080;
    }
   
}
  1. 启动服务
cd /opt/docker/nginx && docker-compose up -d
  1. 访问地址

结尾

本期的内容就到这里,路过的小伙伴记得支持一下哦!

参考文献

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  jnZtF7Co41Wg   2023年12月11日   14   0   0 nginx客户端服务端
  wwLZeziuqjLR   2023年12月11日   15   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   16   0   0 Docker
  stLBpDewCLT1   2023年12月08日   21   0   0 nginx
  DnoStTHsc0vp   2023年12月11日   12   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   67   0   0 Dockercentosbash
  jnZtF7Co41Wg   2023年12月10日   16   0   0 nginx客户端服务端NFS
bMJ94TEc8g8A