docker_build_nginx+php


0x01基本知识

关于docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

docker教程:https://www.runoob.com/docker/docker-tutorial.html

关于nginx

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

nginx详细教程:https://www.runoob.com/w3cnote/nginx-setup-intro.html

关于php

此次使用的php版本及其拓展有php7.4和php7.4-fpm

PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包 [1] ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

0x02搭建过程

docker建立容器详解

首先需要讲一下docker的一些基本知识:

我们需要先获取官方给的一些docker镜像,比如在本次测试中我们需要先获得一个ubuntu的镜像:

docker pull ubuntu:latest

这样我们就能获得一个最近的ubuntu发行版镜像 现在应该是ubuntu20.04。我们可以利用docker images查看我们已经拉取的镜像:

img

接下来我们使用如下的指令运行一个包含ubuntu20.04这个镜像的容器:

sudo docker run --name M1saka --dns 8.8.8.8 -itd -p 2333:80 ubuntu:latest

参数讲解:

  1. run:运行一个容器
  2. –name:将这个容器命名,作为除了系统自动分配的容器id之外的容器标识,可以不加
  3. –dns 给容器配置dns,设为8.8.8.8是为了方便联网。因为我是在kali虚拟机内进行的搭建,这一步能保证容器通网。不使用–net host方式的原因是本次搭建的容器将会使用端口映射,而–net host并不支持端口映射到本地上
  4. -itd:实际上是-i -t -d的省略写法。-i是以交互模式运行容器,通常与 -t 同时使用;-t是为容器重新分配一个伪输入终端,通常与 -i 同时使用;-d是后台运行容器,并返回容器ID;
  5. -p 2333:80将容器的80端口映射到本地的2333端口上,之所以要将容器的80端口映射出来是因为nginx的默认工作端口是80端口,方便配置,这样我们以后就能在浏览器输入127.0.0.1:2333来访问php服务
  6. ubuntu:lastest:即为我们刚才pull的ubuntu官方镜像

输入上面的指令后会返回一串字符,是计算机为我们的容器分配的id,接下来我们使用以下指令查询当前正在运行的容器:

**(**sudo**)** docker ps

结果如下截图:

img

可以看到容器id;容器名称(M1saka);映射端口等信息这个指令只能看到正在运行的容器,要想看到包括已经停止的容器可以在后面加上两个参数 -al

接下来我们使用以下指令进入容器:

sudo docker exec -it M1saka /bin/bash

exec指令进入容器的虚拟终端。我们在这里使用的是我们为容器命名的M1saka,也可以使用容器id的前几位进入。

安装nginx

首先我们要使用

apt update

对apt的软件包进行更新,否则apt无法定位软件包,不能一键安装。(校园网速感人,等了我好几分钟)

输入apt-get install nginx -y

进行nginx最新版的安装,完成后在终端输入

service nginx start

启动服务。

接下来我们在本地的浏览器(kali虚拟机的浏览器)url输入127.0.0.1:2333就能看到nginx的界面,说明我们的nginx已经安装完成

img

安装php7.4和php7.4-fpm

直接用apt-get install进行安装的话会找不到安装包,所以我们需要进行引导

apt-get install -y software-properties-common

add-apt-repository ppa:ondrej/php

apt-get update

然后就能进行php及其扩展的安装了

apt-get install php7.4 php7.4-fpm -y

至此,环境所需的依赖已经安装完

nginx配置文件

编辑nginx的配置文件,使其与php7.3能够适配。

首先安装vim文档编辑器

apt-get install vim

启动php7.4-fpm

sudo service php7.4-fpm start

查看php7.4-fpm状态

sudo service php7.4-fpm status

img

开始配置nginx文件

vim /etc/nginx/sites-available/default

如下图

img

  • 第41行是网站根目录,这里是默认的/var/www/html
  • 第44行最后加上index.php,默认解析的文件
  • 56行57行和60行井号删除
  • 在最后的一行添加一个中括号进行闭合,否则无法运行

运行

nginx -t

查看配置文件是否能正常加载

运行

service nginx restart

重启nginx服务

在根目录下添加index.php,内容自定义,用于测试

在浏览器url输入127.0.0.1:2333/index.php可以看到php文件已经解析。

img

保存容器为镜像

sudo docker commit M1saka misaka

将我们的M1saka容器存储为m1saka镜像,方便下次使用。

镜像名不能含有大写字母


文章作者: Wh1teR0be
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wh1teR0be !
  目录