国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

docker 安裝 php-fpm 服務(wù) / 擴展 / 配置的示例教程詳解

瀏覽:8日期:2023-11-27 13:45:56

在 mac 上用 brew 裝 php56 時,因為 openssl 是 1.1 版本而導(dǎo)致各種 google 都搞不定的錯誤,太折騰了,現(xiàn)在用 docker 創(chuàng)建一個 php56-fpm 服務(wù)容器,nginx 直裝在宿主機上。

PHP DockerHub 主頁

創(chuàng)建容器

# 創(chuàng)建容器docker run -d --name php56-fpm -p 9056:9000 -v /home/wwwroot:/var/www/html--privileged=truephp:5.6-fpm

注意:

/var/www/html 是 php docker 鏡像的工作目錄。

-v /home/wwwroot:/var/www/html 的作用是將宿主機的站點目錄掛載到容器上。比如 /home/wwwroot/siteA,在容器中的訪問位置是 /var/www/html/siteA。

nignx 轉(zhuǎn)發(fā) php 請求時,會將執(zhí)行的腳本名 SCRIPT_NAME 和腳本文件名 SCRIPT_FILENAME 轉(zhuǎn)發(fā)給 fpm,而后 fpm 去讀取腳本執(zhí)行。

在使用 fpm 容器時,需要注意 nginx 轉(zhuǎn)發(fā)的 SCRIPT_FILENAME 是否是 fpm 容器中的有效站點路徑,如果 nginx 的 root 并不能直接映射至 fpm 容器的站點 root,我們需要在 php location 中重新定義為 fpm 容器的站點 root。這樣 fpm 才能正確的讀取到腳本。

即宿主機上的 /home/wwwroot/siteA/public/index.php 要轉(zhuǎn)為 /var/www/html/siteA/public/index.php 發(fā)送給 fpm 容器,否則會報 File not found 的錯誤。

所以 nginx 配置 server 時要注意如下的卷路徑轉(zhuǎn)換:

server { listen 8056; .... # 宿主機的站點根目錄 root /home/wwwroot/siteA/public; location ~* (^[/]*.php)[/|$] { # 容器中的站點根目錄 root /var/www/html/siteA/public; pass_proxy: 127.0.0.1:9056; include fastcgi.conf; }}

不過一般情況下大家都是 docker nginx + docker php-fpm,兩個容器都統(tǒng)一映射了站點目錄,就不會有這個問題了。這里的 nginx 是直接裝在宿主機上才導(dǎo)致 nginx 轉(zhuǎn)發(fā) php 請求時需要重新定義下站點的根目錄。

登陸容器

# 查看容器是否運行docker ps# 登陸容器docker exec -it php56-fpm /bin/bash

php 的 docker 鏡像是基于 ubuntu 我們可以使用 apt-get 安裝需要的工具,比如 vim/vi lrzsz net-tools 之類的。

# 在使用 apt-get 安裝一些工具前,需要 update 更新一下源# 否則會 apt-get E: Unable to locate packageapt-get updateapt-get install vim

安裝 php/pecl 擴展

安裝 php 擴展

即 php 官方擴展,比如 shomp 這種自帶但默認不開啟的擴展。

# 查看自帶了那些擴展cd /usr/local/php/ext && ls -l# 安裝擴展dcoker-php-ext-install shmop

安裝 pecl 擴展

容器中是有安裝 pecl的,所以直接使用 pecl 安裝即可,注意擴展對 php 版本的支持即可。

docker-php-ext-enable的主要用途是生成擴展相應(yīng)的配置文件到 /usr/local/etc/php/conf.d/docker-php-ext-{extName}.ini 方便 php 加載擴展。

# igbinary php5.6 最高版本是 2.0.8pecl install igbinary-2.0.8docker-php-ext-enable igbinary# phpredis php5.6 最高版本是 4.3.0pecl install redis-4.3.0docker-php-ext-enable redis# swoole php5.6 最高版本是 2.0.11pcel install swoole-2.0.11docker-php-ext-enable swoole

php/php-fpm 配置

/usr/local/etc 是 php 容器的配置目錄,里面自帶了 php 及 php-fpm 的配置文件,配置目錄結(jié)構(gòu)如下:

root@aa739592b579:/usr/local# tree etc/ etc/|-- pear.conf|-- php # php 配置目錄| |-- conf.d # php 擴展配置| | |-- docker-php-ext-shmop.ini| |-- php.ini # cp 的 php.ini-development/production| |-- php.ini-development| |-- php.ini-production|-- php-fpm.conf # php-fpm 的配置 自帶的主要是引入 php-fpm.d|-- php-fpm.conf.default # php-fpm 配置本體 同 php-fpm.d/www.conf 一致|-- php-fpm.d # php-fpm 的擴展配置 |-- docker.conf |-- www.conf # php-fpm 配置本體 模式啊 max/min children 啊都在這里 |-- zz-docker.conf

你可映射宿主機的配置目錄到容器的 /usr/local/etc,但要注意宿主機上的配置目錄與容器現(xiàn)有的要保持一致,或者直接在容器里編輯配置文件。按 docker 的理念我們應(yīng)該在宿主機上維護一份配置文件映射到容器的配置目錄上,這樣才能發(fā)揮出 docker 容器的復(fù)用性。

映射宿主機的 php 配置文件到容器

-v /opt/docker/conf/php/php.ini:/usr/local/etc/php/php.ini-v /opt/docker/conf/php/php-fpm.ini:/usr/local/etc/php-fpm.d/www/conf

常見問題

1、File not foundnginx 指定的 站點根目錄 無法直接映射給 fpm 容器,在 location 中重新指定 fpm 容器的 站點根目錄。2、apt-get E: Unable to locate package執(zhí)行 apt-get update 刷新一下源即可。3、容器的相關(guān)約定工作目錄:/var/www/html 建議將宿主機的站點目錄映射至此目錄配置目錄:/usr/local/etc 注意配置目錄結(jié)構(gòu)php 擴展目錄:/usr/local/php/ext 可以查看 php 自帶的擴展包 使用 docker-php-ext-install 安裝更方便

到此這篇關(guān)于docker 安裝 php-fpm 服務(wù) / 擴展 / 配置的文章就介紹到這了,更多相關(guān)docker 安裝 php-fpm內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 九九re6精品视频在线观看 | 日本特黄特色大片免费视频网站 | 日韩一级大毛片欧美一级 | 精品亚洲成a人在线观看 | 欧美亚洲一级片 | 三级亚洲 | 国产永久在线观看 | 国产精品久久网 | 色综合在| 国产免费网| 亚洲国产欧美日韩第一香蕉 | 日韩欧美精品综合一区二区三区 | 国产专区第一页 | 日本欧美韩国一区二区三区 | 自拍第1页| 色吊丝在线观看国产 | 中文字幕成人 | 怡红院免费的全部视频国产a | 99久久综合给久久精品 | 中文字幕在线看片成人 | 国产成人黄网址在线视频 | 欧美在线a | 亚洲人欧洲日韩 | 亚洲欧美日韩综合久久久久 | 一区二区三区国产美女在线播放 | 欧美三级一级 | 国产免费网| 亚洲 自拍 另类 欧美 综合 | 福利姬在线精品观看 | 久色视频在线观看 | 国产成人精品视频免费大全 | 亚洲欧美高清视频 | 欧美成人小视频 | 亚洲欧美日韩国产精品26u | 亚洲在线一区二区三区 | 国内自拍在线观看 | 国产性大片黄在线观看在线放 | 久久精品成人 | 性感美女一级片 | 日本高清乱偷www | 久久久小视频 |