• 阿里云CentOS7.3服务器通过Docker安装Nginx


    前言

    小编环境:

    1. 阿里云CentOS7.3服务器
    2. docker

    下面分享一次小编在自己的阿里云CentOS7.3服务器上使用Docker来安装Nginx的一次全过程

    温馨小提示:
    如果只是希望单纯使用docker安装nginx能跑静态资源项目不管一些配置文件所放位置的话,可直接执行如下2条命令即可
    1. docker pull nginx # 拉取nginx镜像
    2. docker run -d -p 80:80 --name nginx  nginx #运行nginx
    然后浏览器输入访问地址测试:         http://ip地址:端口/
    

    在这里插入图片描述

    一、拉取nginx镜像

    docker pull nginx
    

    二、创建宿主机目录nginx -> 用于挂载下面在容器中找到的配置文件

    温馨小提示:
    -p:保证目录名称存在,如果不存在则重新创建一个
    html: 映射容器中的静态资源目录
    logs: 日志文件目录
    conf: 配置文件目录
    conf.d: 配置文件子目录

    mkdir -p /IT_zhengqing/soft/nginx/html /IT_zhengqing/soft/nginx/logs /IT_zhengqing/soft/nginx/conf /IT_zhengqing/soft/nginx/conf/conf.d
    

    三、找到nginx镜像容器里面的配置文件、日志文件等位置

    -> 目的:运行启动nginx时,将宿主机中的配置文件映射到容器中的配置文件(将nginx容器中的配置文件挂载到宿主机上)
    -> 即nginx启动后,使用的是宿主机中的配置

    (1)以交互模式启动nginx容器,并在容器内执行/bin/bash命令 -> 进入到nginx容器中

    docker run -it --name nginx -p 81:80 nginx:latest /bin/bash
    

    (2)找到容器中需要的配置文件位置

    ①nginx.conf配置文件路径: /etc/nginx/nginx.conf

    cd /etc/nginx/
    ls -l 
    

    ②default.conf配置文件路径: /etc/nginx/conf.d/default.conf

    conf.d:为子目录,容器走完nginx.conf配置文件后,会走conf.d子目录下的配置文件

    cd /etc/nginx/conf.d/ 
    

    ③存放静态资源文件夹html路径: /usr/share/nginx/html

    cd /usr/share/nginx/ 
    

    ④日志文件路径: /var/log/nginx

    cd /var/log/nginx
    

    (3)最后按Ctrl+P+Q快捷键或输入exit命令退出容器终端~

     exit
    

    四、拷贝容器内nginx默认配置文件到宿主机中,容器名或容器ID:执行docker ps命令查看

    docker cp fb5de6e5638d:/etc/nginx/nginx.conf /IT_zhengqing/soft/nginx/conf
    docker cp fb5de6e5638d:/etc/nginx/conf.d/default.conf /IT_zhengqing/soft/nginx/conf/conf.d
    

    温馨小提示:
    从容器中拷贝文件到宿主机中: docker cp 容器名或容器ID:容器中要拷贝的文件所在路径 要拷贝到宿主机中的对应路径
    从宿主机中拷贝文件到容器中: docker cp 宿主机中要拷贝的文件路径 容器名或容器ID:要拷贝到容器中的对应路径

    五、部署nginx

    温馨小提示:
    上面在容器中找配置文件以交互模式启动的nginx容器如果端口和下面要使用的端口冲突的话,需要停止相应进程、容器运行哦!!!
    检查端口被哪个进程占用: netstat -lnp|grep 端口号
    杀掉进程【ex:强制杀掉编号为10001的进程】:kill -9 10001
    停止以启动的容器: docker stop nginx
    删除容器: docker rm -f nginx
    然后执行docker ps查看运行的容器,如果成功删除端口会冲突的容器,再部署,走下面的流程!!!

    执行如下命令部署 -> 启动运行nginx容器

    docker run -d -p 81:80 --name nginx -v /IT_zhengqing/soft/nginx/html:/usr/share/nginx/html -v /IT_zhengqing/soft/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /IT_zhengqing/soft/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /IT_zhengqing/soft/nginx/logs:/var/log/nginx nginx
    

    -d: 以后台模式启动容器 -> 后台运行该容器
    -p 81:80: 将容器的 80 端口映射到宿主机的 81 端口 注:部分服务器需要手动去放行端口哦
    --name nginx: 将容器命名为nginx
    -v /IT_zhengqing/soft/nginx/html:/usr/share/nginx/html: 将宿主机中创建的 html 目录挂载到容器的 /usr/share/nginx/html 目录
    注意一定要找到容器中配置文件所在的准确路径,否则这里运行会报错!

    六、测试访问

    (1)到宿主机 /IT_zhengqing/soft/nginx/html 目录下创建 index.html 静态资源

    cd /IT_zhengqing/soft/nginx/html
    
    touch index.html # 创建文件
    
    echo '<!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>nginx容器运行中...</title>
    </head>
    <body>
        <h1> Hello World </h1>
        <p> If I were you. </p>
    </body>
    </html>' > index.html          # echo:如果没有这个文件则创建。如果有这个文件,那么新内容将会代替原来的内容。
    

    这里也可以使用vi编辑器创建文件,命令如下:

    vi index.html  # 然后按i插入 , 之后输入内容,按Esc退出编辑模式,切换到英文输入法按shift + : 再输入 wq 退出并保存
    最后通过 cat index.html 命令查看文件内容
    

    在这里插入图片描述

    小编这里说下使用vi命令和echo命令去创建文件写入内容的区别:
    在部署nginx运行时如果没有设置只读的情况下,
    (只读是挂载目录时后面加上:ro 如:-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro)

    echo 命令 -> 修改内容,宿主机和容器配置文件都会改变;
    vi 命令 -> 修改内容,宿主机和容器配置互不影响。
    

    (2)浏览器输入 http://ip:端口/ 访问测试

    在这里插入图片描述

  • 相关阅读:
    深入了解Struts2返回JSON数据的原理及具体应用范例
    Struts国际化
    LeetCode Balanced Binary Tree
    LeetCode Triangle
    Binary Tree Level Order Traversal
    Pow(x,n)
    Symmetric Tree
    LeetCode Word Search
    LeetCode Insert Interval
    Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/zhengqing/p/11188937.html
Copyright © 2020-2023  润新知