应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

使用php7。4buster镜像部署PHP7Nginx环境

  1。介绍
  1。1介绍
  前面福哥已经教给大家使用php:7。4apachebuster基础镜像搭建PHP运行环境了,这个是以模块方式(Module)运行PHP程序的,相比较这种方式更多人会选择主流的以FastCGI方式运行PHP程序,以FastCGI方式运行PHP程序就要用到PHP的FPM服务(FastCGIProcessManager)了。
  今天福哥就带着大家使用php:7。4fpmbuster基础镜像来搭建以FastCGI方式运行PHP程序的环境。
  1。2环境
  镜像版本
  php:7。4fpmbuster
  操作系统
  CentOS7x86642003
  服务器
  TFCentOS7x64
  IP
  192。168。168。682。安装
  2。1Dockerfile
  2。1。1基础镜像
  福哥选择的是php:7。4fpmbuster这个基础镜像,这个就是FastCGI方式的。
  https:hub。docker。comphptags?page1name7。4fpmbuster
  2。1。2维护者信息
  这是福哥写的维护者信息。forMAINTAINERMAINTAINERAuthor:AndyBogateMAINTAINEREmail:tongfutongfu。netMAINTAINERHomepage:https:tongfu。netMAINTAINERDatetime:20230318MAINTAINERVersion:v1。0
  2。1。3暴露端口
  提供服务的端口通常情况下是80和443,我们把它们暴露出来。forEXPOSEEXPOSE80443
  2。1。4主目录
  福哥设置镜像的主目录是tongfu。netweb。forWORKDIRWORKDIRtongfu。netweb
  2。1。5安装工具
  后面的制作过程需要用到wget工具,这个需要通过aptget安装一下。
  因为镜像本身只有一个FPM服务,所以这个Nginx服务我们得通过aptget安装。
  因为后面要是ps命令检测服务健康状态,所以还需要安装procps服务。installwgetRUNaptgetupdateaptgetyinstallwgetvimnginxprocpsRUNaptgetyinstalllibwebpdevlibjpegdevlibpngdevlibfreetype6devRUNaptgetyinstalllibzipdevRUNaptgetyinstalllibcclientdevlibkrb5devRUNaptgetyinstalllibxml2dev
  2。1。6释放PHP源码
  这个php:7。4fpmbuster包含了PHP的源码,因为后面需要使用PHP源码安装PHP扩展,所以先要释放PHP源码。extractPHPsourceRUNdockerphpsourceextract
  2。1。7GD图形库扩展
  GD图形库可以让我们通过PHP直接加工各种图片文件,这个库可以用来实现图片验证码、照片加工等等功能的。gdextensionRUNdockerphpextconfiguregdwithjpegusrincludewithfreetypeusrincludedockerphpextinstallgddockerphpextenablegd
  2。1。8MySQL扩展
  福哥是使用PDO来连接MySQL数据库,而MySQL的PDO库PHP资源包里包含了,只要安装起来就行了。extensionofmysqliforMySQLRUNdockerphpextinstallmysqlidockerphpextenablemysqliextensionofPDOforMySQLRUNdockerphpextinstallpdomysqldockerphpextenablepdomysql
  2。1。9Memcached扩展
  memcached库需要从PECL下载,福哥选择的是3。1。5版本,这里直接通过phpize编译后就可以通过make安装了。memcached库依赖libmemcached库,福哥选择的是1。0。18版本,尽量不要改避免版本冲突extensionofMemcachedRUNwgethttps:launchpad。netlibmemcached1。01。0。18downloadlibmemcached1。0。18。tar。gzwgethttp:pecl。php。netgetmemcached3。1。5。tgztarxzvflibmemcached1。0。18。tar。gzcdlibmemcached1。0。18sedisoptserversfalse!optserversgclientsmemflush。cc。configuremakemakeinstallcd。。rmflibmemcached1。0。18。tar。gzrmrflibmemcached1。0。18tarxzvfmemcached3。1。5。tgzcdmemcached3。1。5usrlocalbinphpize。configurewithphpconfigusrlocalbinphpconfigdisablememcachedsaslmakemakeinstallcd。。rmfmemcached3。1。5。tgzrmrfmemcached3。1。5dockerphpextenablememcached
  2。1。10Redis扩展
  redis库需要从PECL下载,福哥选择的是4。1。0版本,这里直接通过phpize编译后就可以通过make安装了。extensionofRedisRUNwgethttp:pecl。php。netgetredis4。1。0。tgztarxzvfredis4。1。0。tgzcdredis4。1。0usrlocalbinphpize。configurewithphpconfigusrlocalbinphpconfigmakemakeinstalldockerphpextenablerediscd。。rmfredis4。1。0。tgzrmrfredis4。1。0
  2。1。11MongoDB扩展
  MongoDB库需要从PECL下载,福哥选择的是1。7。4版本,这里直接通过phpize编译后就可以通过make安装了。extensionofMongoDBRUNwgethttp:pecl。php。netgetmongodb1。7。4。tgztarxzvfmongodb1。7。4。tgzcdmongodb1。7。4usrlocalbinphpize。configurewithphpconfigusrlocalbinphpconfigmakemakeinstalldockerphpextenablemongodbcd。。rmfmongodb1。7。4。tgzrmrfmongodb1。7。4
  2。1。12其他扩展
  除了前面安装的几个扩展之外,福哥还安装了imap、zlib、soap、bcmath这些扩展,建议大家也把这些安装上。imapextensionRUNdockerphpextconfigureimapwithkerberoswithimapssldockerphpextinstallimapdockerphpextenableimapzlibextensionRUNmvusrsrcphpextzlibconfig0。m4usrsrcphpextzlibconfig。m4dockerphpextinstallzlibdockerphpextenablezlibsoapextensionRUNdockerphpextinstallsoapdockerphpextenablesoapbcmathextensionRUNdockerphpextinstallbcmathdockerphpextenablebcmath
  2。1。13清理PHP源码
  现在PHP的扩展都按照好了,已经不需要源码了,清理掉吧。sourcedeleteRUNdockerphpsourcedelete
  2。2多进程
  福哥今天制作的镜像是基于FastCGI方式运行的,这里面有Nginx和FPM两个服务,也就是说使用这个镜像启动的容器里面就会运行两个进程。但是按照Docker的设计思想一个容器里只能跑一个进程,怎么办?
  其实按PHP的FastCGI方式的设计,应该是启动两个容器共同处理用户的请求。静态内容由Nginx容器负责处理,PHP程序由FPM容器负责处理。
  但是福哥不想弄那么麻烦,就想把Nginx服务和FPM服务放在一起!要实现这个目的,就需要修改镜像的ENTRYPOINT,一个ENTRYPOINT只能运行一个进程。为了解决这个问题,福哥要自定义这个ENTRYPOINT,用ENTRYPOINT启动一个Shell脚本,在Shell脚本里面同时启动Nginx和FPM服务。
  下面是福哥写的一个ENTRYPOINT启动Shell脚本startservice,用来同时启动Nginx和FPM服务。!binshargvfunctionsfunctionmain{startfpmusrlocalsbinphpfpmDstartnginxusrsbinnginxwaitsecssleep6sservicewhile〔1〕;doif〔psefgrepvgrepgrepphpfpm:masterprocess〕;thenechophpisdownexit1fiif〔psefgrepvgrepgrepnginx:masterprocess〕;thenechonginxisdownexit2fisleep6sdone}mainmain
  在创建新的镜像的时候把startservice配置文件拷贝进去,并且授权可执行权限,最后将ENTRYPOINT的命令改成startservice。entrypointCOPYstartserviceusrsbinstartserviceRUNchmodxusrsbinstartserviceENTRYPOINT〔usrsbinstartservice,〕
  2。3php配置文件
  2。3。1php。ini
  php。ini的存放目录是usrlocaletcphp,镜像提供了phpinidevelopment、php。iniproduction两个配置文件模板,我们可以根据使用场景选择开发版本还是生产版本。
  2。4nginx配置文件
  2。4。1模块配置
  镜像安装的nginx包括modulesavailable和modulesenabled两个模块配置目录,modulesavailable里面包含全部的可用模块配置文件,modulesenabled里面是启用的模块配置文件。
  要启用模块就从modulesavailable选择模块配置文件移动到modulesenabled下面。
  要停用模块就从modulesenabled选择模块配置文件移动回modulesavailable下面。
  2。4。2站点配置
  镜像安装的nginx包括sitesavailable和sitesenabled两个站点配置目录,sitesavailable里面包含全部的可用站点配置文件,sitesenabled里面是启用的站点配置文件。
  要启用站点就从sitesavailable选择站点配置文件建立符号链接到sitesenabled下面。
  要停用站点就将sitesenabled下面删除站点配置文件的符号链接。
  福哥在默认站点的server里面利用rewrite实现了一个PHP的伪静态重定向配置,可以将各种html请求转交给htmlRouteMap。php处理。
  如果要修改配置文件就需要先启动一个容器,然后把需要修改的配置文件复制出来一份,在外面改好了在通过COPY命令导入进去。
  下面是福哥修改过的默认站点default配置文件的内容,因为默认文件里面有大篇幅说明太长了,福哥就给去掉了。server{listen80defaultserver;listen〔::〕:80defaultserver;servername;rewrite(。)。htmlhtmlRouteMap。php?tfphpstaticname1;location{rootvarwwwhtml;}location。phpnbsp;{clientbodybuffersize1m;rootvarwwwhtml;fastcgipasslocalhost:9000;fastcgiindexindex。php;fastcgiparamSCRIPTFILENAMEdocumentrootfastcgiscriptname;includefastcgiparams;}}
  在创建新的镜像的时候把default配置文件拷贝进去。nginxsitesCOPYdefaultetcnginxsitesenableddefault
  2。5创建镜像
  使用下面的命令创建tfphp:7。4nginx1。0。0镜像。dockerbuildfDockerfiletregistry。tongfu。net:5000tfphp:7。4nginx1。0。0。
  2。6查看镜像
  看看新的镜像,现在有apache版本、nginx版本两个tfphp的镜像了。dockerimagesgreptfphp
  3。测试
  3。1宿主机程序目录
  在宿主机建立一个用来存放php程序的目录,它将被映射到容器的nginx主目录上面。mkdirptongfu。netdatadockerdatatfphphtml
  3。2宿主机程序文件
  在刚刚建立的目录下面建立一个php程序文件index。php,写入下面的代码。lt;?phpphpinfo();
  再建立一个php程序文件htmlRouteMap。php,写入下面的代码。lt;?phpvardump(GET〔tfphpstaticname〕。。html);
  3。3删除容器
  因为前面我们使用apache版本的tfphp启动了一个容器了,现在要测试nginx版本的tfphp就需要先把这个tfphp容器删除掉。dockerrmftfphp
  3。4启动容器
  使用下面的命令基于tfphp:7。4nginx1。0。0镜像启动一个容器,将80端口和443端口映射到宿主机上面,将varwwwhtml这个nginx主目录映射到前面建立的目录上面。dockerruntidnametfphphtfphpp80:80p443:443vtongfu。netdatadockerdatatfphphtml:varwwwhtmlregistry。tongfu。net:5000tfphp:7。4nginx1。0。0
  3。5浏览器访问
  打开浏览器访问http:192。168。168。68index。php,可以看到PHP系统信息。
  可以看到ServerAPI一栏的信息是FPMFastCGI,证明我们的这个运行环境是FastCGI模式的。
  输入网址http:192。168。168。68tongfu。netdockertfphp。html,可以看到请求html资源路径被htmlRouteMap。php打印出来了。
  4。总结
  今天福哥在TFCentOS7x64服务器上面通过Dockerfile创建了一个镜像tfphp:7。4nginx1。0。0,并且通过这个新创建的镜像tfphp:7。4nginx1。0。0启动了一个容器,这个镜像用来运行基于PHP语言开发的应用程序。
  后面福哥会在这个镜像tfphp:7。4nginx1。0。0基础之上进行二次扩展制作新的镜像,然后根据镜像的用途针对nginx和php进行自定义的配置,敬请期待
  https:m。tongfu。nethome35blog513983。html

人类首次抵达雅浦海沟,科学家却感到担忧,8919米深海下有什众所周知,海洋的总面积占地球总面积的71,因此海洋也一直都是人类研究的重点,比如之前我们就对地球上最深的海沟,马里亚纳海沟,进行了10909米的载人深潜,这不最近,我国又首次抵……这位真子公主个子不高但很会穿!出街穿搭舒适好看,很适合学hi大家好小个子的冬季穿搭模板又有了!不足160cm的美眉在冬天穿衣,大多数会面临在层层叠叠的衣服中,难以实现竖向延长身高的问题。特别是大件厚外套,时髦的长裤……春节假期进入公园景区游玩时这些措施要记牢春节假期北京市疾控中心提醒广大市民朋友进入公园、景区游玩时防控措施要记牢尽量选择空旷的郊外旅游方式,避开热门景点,实行网上预约、错峰出行。提前做好……首播即决赛水哥回归诸神混战,你对脑王的力量一无所知!强哥就问!还有没看《最强大脑》第十季的吗!!豪华阵容王者重征反正强哥看完肾上腺素直飙久久无法平息忍不住和脑粉们再复习一遍!脑王互殴……很有野心,三星量产6200mAh新机,12256G低价出售,可能在许多小伙伴的固有印象当中,三星手机就是高价的代名词,甚至有小伙伴告诉小芳,如果预算没有5000元就别想买三星手机了。在这里小芳想要告诉大家的是有这种想法是不对的,其实三星……世界首富新欢放大招,穿开叉裙秀肌肉腿,贝佐斯一脸骄傲近日,世界首富贝佐斯,带着女友桑切斯一起出席LACMA艺术电影联欢晚会,桑切斯当晚一袭银色亮片礼服可以说是非常惊艳了。贝佐斯为了和桑切斯在一起,不惜耗资383亿美元,而且……麒麟9000新U5G,Mate40系列再上新机,这次你买吗?近几年关于数码手机圈的饭圈文化是越演越烈了,诚然有手机厂商的推波助澜,但本质上还是咱们消费者因为对其他厂商的不认同而私下带节奏。这其中华为可以说是非常充满争议的品牌,作为……从越南收复回来的赤瓜礁现在怎么样?机场5G信号统统都有海域面积达到210万平方米公里的南海,是伟大祖国壮丽宽广的海疆中面积最大、水深最深的近海。而在碧波荡漾、一望无垠的海面上,位于九章群礁西南端的一个岛屿随着海水涨落若隐若现……TGA2021年度游戏公布!原神获得最佳手机游戏与持续运营提TGA主持人GeoffKeighley今天公开了获得TGA2021各奖项提名的候选名单,《死亡循环》《双人成行》《密特罗德生存恐惧》《意航员2》《瑞奇与叮当时空跳转》《生化危机……帝国神话试玩报告在东方沙盒世界里白手起家《帝国神话》是由AngelaGame开发的开放世界生存冒险类游戏。其实说生存冒险并不尽然,因为它不能简单地用某一种具体的类型带过。实际上,这是一款建立在乱世背景下、让玩家体验白……输球不输好心情!浓眉哥与绝美妻子约会,妻子非常开心北京时间2月4日,洛杉矶湖人以110111惜败洛杉矶快船。赛后,湖人球星浓眉哥接受采访时谈到了自己落选全明星的话题,因为浓眉哥本赛季伤病不断,缺席的场次太多导致了他未能入选全明……解放者杯决赛1弗拉门戈卫冕一年内两次捧杯北京时间11月28日凌晨4点,2021年解放者杯迎来了决赛,这是一场巴西内战,由帕尔梅拉斯迎战弗拉门戈。上半场,维加为帕尔梅拉斯首开纪录;下半场,加布里埃尔巴博萨为弗拉门戈扳平……
支持WiFi6ampampamp双频3000M华硕灵耀AX魔写在前面华硕灵耀AX魔方Pro路由器是一款高性能的WiFi6无线路由器,它采用了华硕的AiMesh2。0技术,可以实现多设备同时连接,支持MUMIMO和OFDMA,提供更……2023年第一批去香港的人,不是购物而是打针品牌新事文杜衡周末上午十点,尖沙咀海港城各家奢侈品店门口已经排起了长龙,说普通话的游客络绎不绝。通关之后的香港,内地游客再度涌入,维港畔又一次热闹起来。上海来的游客张先生回……解决大航海时代起源卡加载界面加载失败的情况《大航海时代:起源》船团是帐号,船团名称即是帐号名称。船团是包含提督与航海士、船只在内的整体舰队,是玩家的基本单位。船团等级包括提督的成长、航海士的成长等,是玩家所有活动累积的……上海人好吃懒做吗?答案也许真的是菜场旁开了一家卤鹅店。新店开张,生意不错,高峰时段常看到七、八、十来个人排队。我喜欢鹅。偶有山阴道上如相见,应写黄庭换白鹅这样的雅致,更多时候图的则是口腹之欲……微软今年3月后将停止发布旧版Win10的一部分更新IT之家1月20日消息,目前微软是以Windows11为中心进行主要开发,Windows10作为辅助更新,进入了技术支持的后期。最近的迹象表明,微软在1月底前停止通过其网站销售……马来西亚公开赛20击败日本组合,郑思维黄雅琼夺国羽赛季首冠北京时间1月15日下午,2023年马来西亚羽毛球公开赛进入了决赛的争夺,中国组合郑思维黄雅琼、陈清晨贾一凡、梁伟铿王昶在混双、女双、男双三个项目中争夺冠军。在率先进行的混双决赛……打开它游戏性能飙升46!NVIDIA为啥不要呢?ResizableBAR是个非常好的功能,无论是AMD显卡还是Intel显卡,都可以默认开启,从而带来巨大的性能提升,且无需担心兼容性问题。但是,NVIDIA一直对该功能……每天吃一片阿司匹林不但能软化血管,还能延长寿命?告诉你真相67岁的曾阿姨,身体一直健朗。但退休后的这几年,周围不断有人相继患上高血压,曾阿姨担心自己迟早也是其中的一员,便开始搜集各种降压宝典和高血压预防知识。偶然得知一位高血压的……节前探店丨降价之后,特斯拉进店顾客翻数倍,其他新能源车企压力1月16日,距离特斯拉(TSLA。US)大幅下调国产车型价格已过去了10天。国产特斯拉Model3降至22。99万元起,ModelY降至25。99万元起,创下历史最低价格。这场……足坛最高级别官员落马,黎明到来!近日,足坛再掀风波。国家体育总局党组成员、副局长杜兆才被查,成为去年足坛反腐行动开始以来落马的最高级别官员。这已经是141天内第九位重要人物被查。足球作为我国体育项目中的……二姐来家,我做了4道菜招待,荤素搭配,花钱不多味道好二姐来家,我做了4道菜招待,荤素搭配,花钱不多味道好!过了十五,这个年就算过完了,上班的开工了,家里的小学生也快开学了,马上就要回归正轨。趁着学生还没开学,赶在寒假的小尾巴去玩……婴儿不长头发是缺少营养吗?6个月大的乐乐长得胖嘟嘟的,非常可爱,可是他的头发越长越少,后脑勺还有一圈没有头发。乐乐的妈妈为此很是担心:宝宝是不是营养不良?是不是缺钙、缺锌?要去医院做检查吗?有什么方法可……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网