美文网首页
第一篇 Docker搭建Nginx+MySql+PHP环境

第一篇 Docker搭建Nginx+MySql+PHP环境

作者: 暮暮it | 来源:发表于2019-11-26 22:38 被阅读0次

    自从认识到Docker这个工具,很多服务都希望通过Docker来搭建,毕竟不会把我的服务器环境弄得乱七八糟的,所以nginx的部署自然也琢磨着怎么用Docker来搭建。(在此声明,本人的docker和nginx的技术水平,就是简单的入门,只会根据实际需要去进一步了解。)

    1 Docker的安装

    1.1 docker安装

    Docker的安装网上有很多教程,我常用的操作系统是CentOs7.x,推荐参考这个教程。

    1.2 docker-compose安装

    有些教程推荐安装docker-compose,好像是更易于打包docker镜像,可直接参考这个教程,非常简单,执行下面几条命令即可:

    $ curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    $ chmod +x /usr/local/bin/docker-compose
    

    实际安装的时候,直接下载最新版即可,也就是上面命令中的版本号。

    2 php环境的部署

    php环境的部署,也是通过docker部署,因为本系列大部分是部署php模板网站,所以需要用到这个环境。

    很简单,请直接按照下面的命令运行就是了(PS:对于php版本,可根据自己的需求指定不同版本)

    $  docker pull bitnami/php-fpm:7.0   --这个7.0就是指php版本
    $  docker run -d -p 9000:9000 \                     ##-d指定后台运行,-p指定系统9000端口映射到nginx容器默认的9000端口
    >  -v /data/nginx/www:/usr/share/nginx/html \       ##将我们自建的网站文件夹路径,替换成nginx默认的路径
    >  --name m_phpfpm bitnami/php-fpm:7.0              ##起一个别名m_phpfpm,这个别名我们后面会用得到
    

    3 Nginx的部署

    3.1 拉镜像和运行

    我直接拉取最新的镜像,如果有特殊版本需求的话,请自行指定。执行下面的命令就行了:

    $  docker pull nginx
    $  docker run -d -p 80:80 --name m_nginx nginx
    ## --- -d:表示后台运行
    ## --- -p:指定端口号,nginx默认是80,前一个80是指把当前系统的80端口映射到nginx容器的80端口上,你也可以根据需求选择其他端口
    ## --- -name:起一个别名
    ## 最后一个nginx就是镜像的名称,如果你系统中不止一个nginx镜像的话,要指定具体哪一个nginx
    

    3.2 创建资源文件夹

    因为一般不会直接用容器内部的文件夹来存放东西,并且有时候Nginx的配置文件也希望能灵活修改,所以我们会在系统内新建一些文件夹,用来挂载到不同的容器,结合我们将会用到的Nginx的文件,我设计了下面的文件夹:

    ~  #系统根目录
    --/data       ##自建文件夹
    ----/nginx    ##nginx相关的文件夹
    ------/www    ##网站文件夹,对应nginx的/usr/share/nginx/html文件夹
    ------/logs   ##nginx日志文件夹,对应nginx的/var/log/nginx文件夹
    ------/conf.d ##自定义配置文件夹,对应nginx的/etc/nginx/conf.d
    ------/conf   ##配置文件夹,对应nginx的/etc/nginx/conf
    

    3.3 从Nginx容器拷贝文件

    我们主要是拷贝nginx.conf和default.conf两个文件,分别存储到我们能前面建立的文件夹里,命令如下:

    $  docker cp ID:/etc/nginx/nginx.conf /data/nginx/conf
    $  docker cp ID:/etc/nginx/conf.d/default.conf /data/nginx/conf.d
    ## ID就是通过docker ps命令查看得到的
    

    3.4 停止并删除容器

    文件拷贝后,接下来我们会以挂载的方式重新运行nginx,所以需要把已经运行起来的容器进行删除,执行下面的命令:

    $  docker stop ID   ##必须先停止容器,才能删除
    $  docker rm   ID
    ##--注:如果想要删除镜像,执行过上面两步后,再执行“docker rmi nginx”,nginx是镜像名称,可以通过docker images查看得到
    

    3.5 挂载运行Nginx

    挂载运行Nginx就是为了把我们自定义的配置文件、网站文件、日志文件,替换Nginx本身对应的文件,便于我们做各种处理。执行下列命令即可:

    $ docker run \
    > -d \
    > -p 80:80 \
    > -v /data/nginx/www:/usr/share/nginx/html \
    > -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
    > -v /data/nginx/conf.d:/etc/nginx/conf.d \
    > -v /data/nginx/logs:/var/log/nginx \
    > --link m_phpfpm:phpfpm \          ##link是指与另一个容器建立联系,这样的话,上面的配置文件里,才可以用m_phpfpm
    > --name m_nginx nginx
    

    4 Mysql的部署

    Mysql基本上是所有PHP模板网站所使用的数据库了,所以必须要安装,而且依据我的经验,建议安装5.6版本,也是目前能找到的docker镜像的最低版本,安装建议看这个教程。
    Mysql镜像的运行建议按照下面的命令执行(当然最好参考Mysql在docker hub上的官方说明,有时候一些文件位置可能会不同版本不一样)

    $ docker run -p 3306:3306 --name mymysql \
    > -v $PWD/conf/my.cnf:/etc/mysql/my.cnf \  ###默认配置文件,可选
    > -v $PWD/conf/custom:/etc/mysql/conf.d \ ###自定义配置文件所在的文件夹
    > -v $PWD/logs:/logs 
    > -v $PWD/data:/var/lib/mysql \
    > -e MYSQL_ROOT_PASSWORD=123456 \
    > --security-opt seccomp:unconfined \
    > -d mysql:5.6
    

    到这里nginx、MySql、php环境都已经部署了,后续搭建php模板网站就在此基础上进行,每次部署php网站可能都需要重启nginx,如果有条件建议直接购买云服务商的数据库服务,数据丢了真的很疼,本来钱就少买不了那么多服务器做数据备份。

    相关文章

      网友评论

          本文标题:第一篇 Docker搭建Nginx+MySql+PHP环境

          本文链接:https://www.haomeiwen.com/subject/gytuwctx.html