首页 > 系统相关 >转载【环境搭建】docker+nginx部署PHP

转载【环境搭建】docker+nginx部署PHP

时间:2023-05-18 23:56:14浏览次数:52  
标签:容器 kali nginx conf home docker PHP

 

 

目的

使用docker容器完成nginx的安装以及部署PHP网页

步骤

一、 安装nginx

1. 拉取Nginx镜像

docker pull nginx       //拉取镜像
docker images           //查看本地镜像

这里注意需要记一下nginx的IMAGE ID,我这里的ID是605c

2. 创建Nginx容器

docker run --name nginx-test -p 80:80 -d nginx
  • docker run : 是创建一个新容器并运行一个命令
  • --name : 给容器起一个名字,指的是 nginx-test
  • -p : 指定宿主机与容器内部端口的映射关系,-p [宿主机端口]:[容器内部端口],
  • -d : 设置容器在在后台一直运行
  • 最后面的 nginx 是镜像名称,也可以是镜像ID,例如上面提到的 “605c”

创建容器后使用docker ps即可查看正在运行的容器,这里我的容器ID是 902f

访问这台机器的ip加上端口号,如果返回Welcom to nginx则成功(如果设置映射的端口是80则可以不加端口)

3. 挂载文件

我们可以使用docker exec -it 902f /bin/bash进入容器内部进行配置文件的管理(容器就是一台linux机器),但是比较麻烦,我们可以将这台容器的文件挂载到我们本机,这样我们只要在本机修改文件即可。
容器内部的文件路径如下

/etc/nginx          //配置文件目录
/usr/share/nginx/html     //默认html文件目录
/var/log/nginx        //日志文件

在合适的路径下新建nginx目录,这里我选择在/home/kali/下创建,进入/home/kali/nginx,然后将容器内的nginx.confdefault.conf分别复制到/home/kali/nginx/home/kali/nginx/conf

docker cp 902f:/etc/nginx/nginx.conf ./
docker cp 902f:/etc/nginx/conf.d/default.conf ./conf/

注意容器ID不要填错,然后停止并删除这个容器,重新新建一个容器

docker stop 902f     //停止容器
docker rm 902f      //删除容器

新建容器,注意以下冒号前面的路径是刚才自己在本地新建的路径,冒号后面的是容器内的路径

docker run --name nginx-config -p 80:80 -v /home/kali/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/kali/nginx/logs:/var/log/nginx -v /home/kali/nginx/html:/usr/share/nginx/html -v /home/kali/nginx/conf:/etc/nginx/conf.d \
--privileged=true -d 605c                 //这里的605c是镜像ID

-v:挂载目录,-v[宿主机路径]:[容器内路径]

完成后本机的nginx路径下会有如下文件,说明成功

更改nginx文件夹的权限chmod -R 777 ./nginx
/home/kali/nginx/html目录下添加网页即可访问,到此Nginx的安装已经结束,删除此容器

docker stop 916
docker rm 916

二、 安装PHP

1. 拉取PHP镜像

docker pull php:7.4-fpm         //拉取PHP镜像
docker images                   //查看本地镜像

记下PHP的IMAGE ID是 854

2. 创建PHP容器同时挂载文件

docker run --name php-test -v /home/kali/nginx/html:/www -p 9000:9000 -d 854

--name:给容器起名为php-test
-v :挂载目录

docker run --name nginx-test -p 80:80 -v /home/kali/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/kali/nginx/logs:/var/log/nginx -v /home/kali/nginx/html:/usr/share/nginx/html -v /home/kali/nginx/conf:/etc/nginx/conf.d \
--privileged=true --link php-test:php -d 605c               //这里的605c是镜像ID

--link:把 php-test 容器的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-test

修改/home/kali/nginx/conf/default.conf为以下内容

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /www;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /www;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
        include        fastcgi_params;
    }
}

docker restart [container_id]重启容器,在html文件夹中添加php文件访问即可

转载自【环境搭建】docker+nginx部署PHP - Mr_Soap - 博客园 (cnblogs.com)

 

标签:容器,kali,nginx,conf,home,docker,PHP
From: https://www.cnblogs.com/panbin2006/p/17413654.html

相关文章

  • docker安装nginx
    dockerpullregistry.cn-hangzhou.aliyuncs.com/ns-w/wh-w:nginx-1.22.0创建挂载目录mkdir-p/opt/resource/nginx/confmkdir-p/opt/resource/nginx/logmkdir-p/opt/resource/nginx/html生成容器dockerrun--namenginx-1.22.0-p80:80-dregistry.cn-hangzhou.aliy......
  • nginx出现: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
     问题情况登陆服务器之后进到nginx使用./nginx-sreload重新读取配置文件,发现报==nginx:[error]open()“/usr/local/nginx/logs/nginx.pid”failed(2:Nosuchfileordirectory)==错误,进到logs文件发现的确没有nginx.pid文件如下图解决方法执行下列命令/usr......
  • Docker安装Airflow
    环境系统:Ubuntu22.04.2LTSdockerVersion:20.10.21docker-composeversion1.29.2,python3--versionPython3.10.61、安装docker1.1先更新系统 sudoapt-getupdate sudoapt-getupgrade1.2安装docker: apt-getinstalldocker.io1.3查看docker版本: ......
  • grafana+ prometheus+php 监控系统实践
    背景团队在开发流媒体服务,需要实现一个监控在线人数的功能,可以看到历史有多少人在线,当前有多少人在线的功能。如果用mysql等关系型数据库来实现,可以用事件记录日志,然后通过PHP加上一些绘图的插件来实现,但这种方式并不好,首先用关系型数据库随着时间累积,会存在数据量越来越大,导致查......
  • Grafana+prometheus+php 自动创建监控图
    背景在grafana+prometheus+php监控系统实践文章当中已经实现了我们的第一个监控图表,现在我们有了一个新需求,需要对多个节点实现不同的监控,以及一个汇总的监控;按照我们之前手动创建仪表盘的方法,每新增一个节点都需要手动去修改prometheus配置,并且需要去grafana系统当中创建一个仪......
  • 使用PHPCS+GIT钩子保障团队开发中代码风格一致性实践
    一、背景笔者在6月份加入新团队,新团队这边刚组建起来,基础一些东西还处于待完善状态,比如笔者组内同学约定使用PSR-2的编码风格规范,但是并不是所有人都严格按照PSR-2来提交代码。最大的原因就是口头的约束力极为有限,而团队中大家使用的编辑器不统一,有使用phpstorm,也有使用VSCode更有......
  • 解决mysql自动插入的日期时间和现在的时间不一致的问题(基于docker)
    新建表的时候发现插入的时间还是早上 先查看配置文件的对不对 配置文件没问题问题只能出在服务器了,连上Linux 查看本机的时间没问题进入容器dockerexec-itmysql./bin/bash 日期明显有问题了进入mysqlmysql-uroot-pshowglobalvariabl......
  • docker-compose 部署 es8.7
    https://blog.51cto.com/wangguishe/6177453系统设置sysctl.conf#echovm.max_map_count=262144>>/etc/sysctl.conf   ulimits#dockerrun--rmdocker.elastic.co/elasticsearch/elasticsearch:8.7.0/bin/bash-c'ulimit-Hn&&a......
  • Prometheus笔记-监控Nginx
    安装Nginx及stub_status模块参考历史文章:https://www.cnblogs.com/jruing/p/17391716.html安装Nginx-exporter#下载wgethttps://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.11.0/nginx-prometheus-exporter_0.11.0_linux_amd64.tar.gz#解压......
  • 干货:PHP与大数据开发实践
    大数据是使用工具和技术处理大量和复杂数据集合的术语。能够处理大量数据的技术称为MapReduce。image何时使用MapReduceMapReduce特别适合涉及大量数据的问题。它通过将工作分成更小的块,然后可以被多个系统处理。由于MapReduce将一个问题分片并行工作,与传统系统相比,解......