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查看我们已经拉取的镜像:
接下来我们使用如下的指令运行一个包含ubuntu20.04这个镜像的容器:
sudo docker run --name M1saka --dns 8.8.8.8 -itd -p 2333:80 ubuntu:latest
参数讲解:
- run:运行一个容器
- –name:将这个容器命名,作为除了系统自动分配的容器id之外的容器标识,可以不加
- –dns 给容器配置dns,设为8.8.8.8是为了方便联网。因为我是在kali虚拟机内进行的搭建,这一步能保证容器通网。不使用–net host方式的原因是本次搭建的容器将会使用端口映射,而–net host并不支持端口映射到本地上
- -itd:实际上是-i -t -d的省略写法。-i是以交互模式运行容器,通常与 -t 同时使用;-t是为容器重新分配一个伪输入终端,通常与 -i 同时使用;-d是后台运行容器,并返回容器ID;
- -p 2333:80将容器的80端口映射到本地的2333端口上,之所以要将容器的80端口映射出来是因为nginx的默认工作端口是80端口,方便配置,这样我们以后就能在浏览器输入127.0.0.1:2333来访问php服务
- ubuntu:lastest:即为我们刚才pull的ubuntu官方镜像
输入上面的指令后会返回一串字符,是计算机为我们的容器分配的id,接下来我们使用以下指令查询当前正在运行的容器:
**(**sudo**)** docker ps
结果如下截图:
可以看到容器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已经安装完成
安装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
开始配置nginx文件
vim /etc/nginx/sites-available/default
如下图
- 第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文件已经解析。
保存容器为镜像
sudo docker commit M1saka misaka
将我们的M1saka容器存储为m1saka镜像,方便下次使用。
镜像名不能含有大写字母