服務(wù)器
這篇文章主要為大家展示了docker如何安裝php-fpm服務(wù)/擴(kuò)展/配置,內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來(lái)看看吧。
創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為景東企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),景東網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。在 mac
上用 brew
裝 php56
時(shí),因?yàn)?openssl
是 1.1
版本而導(dǎo)致各種 google
都搞不定的錯(cuò)誤,太折騰了,現(xiàn)在用 docker
創(chuàng)建一個(gè) php56-fpm
服務(wù)容器,nginx
直裝在宿主機(jī)上。
PHP DockerHub 主頁(yè)
創(chuàng)建容器
# 創(chuàng)建容器 docker run -d \\ --name php56-fpm \\ -p 9056:9000 \\ -v /home/wwwroot:/var/www/html --privileged=true php:5.6-fpm
注意:
/var/www/html
是 php docker
鏡像的工作目錄。
-v /home/wwwroot:/var/www/html
的作用是將宿主機(jī)的站點(diǎn)目錄掛載到容器上。比如 /home/wwwroot/siteA
,在容器中的訪問(wèn)位置是 /var/www/html/siteA
。
nignx
轉(zhuǎn)發(fā) php
請(qǐng)求時(shí),會(huì)將執(zhí)行的腳本名 SCRIPT_NAME
和腳本文件名 SCRIPT_FILENAME
轉(zhuǎn)發(fā)給 fpm
,而后 fpm
去讀取腳本執(zhí)行。
在使用 fpm
容器時(shí),需要注意 nginx
轉(zhuǎn)發(fā)的 SCRIPT_FILENAME
是否是 fpm
容器中的有效站點(diǎn)路徑,如果 nginx
的 root
并不能直接映射至 fpm
容器的站點(diǎn) root
,我們需要在 php location
中重新定義為 fpm
容器的站點(diǎn) root
。這樣 fpm
才能正確的讀取到腳本。
即宿主機(jī)上的 /home/wwwroot/siteA/public/index.php
要轉(zhuǎn)為 /var/www/html/siteA/public/index.php
發(fā)送給 fpm
容器,否則會(huì)報(bào) File not found
的錯(cuò)誤。
所以 nginx
配置 server
時(shí)要注意如下的卷路徑轉(zhuǎn)換:
server { listen 8056; .... # 宿主機(jī)的站點(diǎn)根目錄 root /home/wwwroot/siteA/public; location ~* (^[/]*.php)[/|$] { # 容器中的站點(diǎn)根目錄 root /var/www/html/siteA/public; pass_proxy: 127.0.0.1:9056; include fastcgi.conf; } }
不過(guò)一般情況下大家都是 docker nginx + docker php-fpm
,兩個(gè)容器都統(tǒng)一映射了站點(diǎn)目錄,就不會(huì)有這個(gè)問(wèn)題了。這里的 nginx
是直接裝在宿主機(jī)上才導(dǎo)致 nginx
轉(zhuǎn)發(fā) php
請(qǐng)求時(shí)需要重新定義下站點(diǎn)的根目錄。
登陸容器
# 查看容器是否運(yùn)行 docker ps # 登陸容器 docker exec -it php56-fpm /bin/bash
php 的 docker 鏡像是基于 ubuntu 我們可以使用 apt-get 安裝需要的工具,比如 vim/vi lrzsz net-tools 之類的。
# 在使用 apt-get 安裝一些工具前,需要 update 更新一下源 # 否則會(huì) apt-get E: Unable to locate package apt-get update apt-get install vim
安裝 php/pecl 擴(kuò)展
安裝 php 擴(kuò)展
即 php 官方擴(kuò)展,比如 shomp 這種自帶但默認(rèn)不開(kāi)啟的擴(kuò)展。
# 查看自帶了那些擴(kuò)展 cd /usr/local/php/ext && ls -l # 安裝擴(kuò)展 dcoker-php-ext-install shmop
安裝 pecl 擴(kuò)展
容器中是有安裝 pecl的,所以直接使用 pecl 安裝即可,注意擴(kuò)展對(duì) php 版本的支持即可。
docker-php-ext-enable的主要用途是生成擴(kuò)展相應(yīng)的配置文件到 /usr/local/etc/php/conf.d/docker-php-ext-{extName}.ini 方便 php 加載擴(kuò)展。
# igbinary php5.6 高版本是 2.0.8 pecl install igbinary-2.0.8 docker-php-ext-enable igbinary # phpRedis php5.6 高版本是 4.3.0 pecl install redis-4.3.0 docker-php-ext-enable redis # swoole php5.6 高版本是 2.0.11 pcel install swoole-2.0.11 docker-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 擴(kuò)展配置 | | |-- 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 的擴(kuò)展配置 |-- docker.conf |-- www.conf # php-fpm 配置本體 模式啊 max/min children 啊都在這里 |-- zz-docker.conf
你可映射宿主機(jī)的配置目錄到容器的 /usr/local/etc,但要注意宿主機(jī)上的配置目錄與容器現(xiàn)有的要保持一致,或者直接在容器里編輯配置文件。按 docker 的理念我們應(yīng)該在宿主機(jī)上維護(hù)一份配置文件映射到容器的配置目錄上,這樣才能發(fā)揮出 docker 容器的復(fù)用性。
映射宿主機(jī)的 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
常見(jiàn)問(wèn)題
1、File not found
nginx 指定的 站點(diǎn)根目錄 無(wú)法直接映射給 fpm 容器,在 location 中重新指定 fpm 容器的 站點(diǎn)根目錄。
2、apt-get E: Unable to locate package
執(zhí)行 apt-get update 刷新一下源即可。
3、容器的相關(guān)約定
工作目錄:/var/www/html 建議將宿主機(jī)的站點(diǎn)目錄映射至此目錄
配置目錄:/usr/local/etc 注意配置目錄結(jié)構(gòu)
php 擴(kuò)展目錄:/usr/local/php/ext 可以查看 php 自帶的擴(kuò)展包 使用 docker-php-ext-install 安裝更方便
以上就是關(guān)于docker如何安裝php-fpm服務(wù)/擴(kuò)展/配置的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。
網(wǎng)頁(yè)題目:docker如何安裝php-fpm服務(wù)/擴(kuò)展/配置
當(dāng)前URL:http://muchs.cn/article2/cghooc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、虛擬主機(jī)、ChatGPT、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)