Appleex
Appleex
Published on 2023-05-12 / 133 Visits
0
0

运维 | 快速在 CentOS 上部署 Nginx 应用

快速在 CentOS 上部署 Nginx 应用

介绍

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

快速使用

使用 Docker 部署

环境搭建

创建容器

  1. 在系统任意位置创建一个文件夹(可选),此文档以 /opt/docker/nginx 为例
mkdir -p /opt/docker/nginx
mkdir -p /opt/docker/nginx/{conf,html,logs}

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

  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]
  1. 重新创建一个容器(带参数)
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 部署

环境搭建

创建容器

  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]
  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
  1. 访问地址 http://ip:端口号

更新容器

  1. 停止运行中的容器
cd /opt/docker/nginx && docker-compose down
  1. 备份数据(重要)
cp -r /opt/docker/nginx /opt/docker/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. 访问地址

FAQ

参考文献


Comment