最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php环境搭建

旗下网站admin20浏览0评论

php环境搭建

php环境搭建

造梦西游修改器下载-usb转串口

2023年4月2日发(作者:windows live id)

docker前台运⾏PHP,使⽤docker搭建PHP运⾏环境

废话不多说,直接进⼊正题~

环境

Ubuntu18.4;

Dockerversion19.03.1

为了⽅便演⽰操作,简单粗暴的使⽤了sudosu获取了超级管理员权限~

MySQL

#查找镜像仓库

dockersearchmysql

#选择5.7的版本

dockerpullmysql:5.7

拉取完毕后使⽤dockerimages命令可看到已经有⼀个名为mysql:5.7的镜像了

启动⼀个MySQL的实例相当简单:

dockerrun--namemysql-p13306:3306-v/var/mysql:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=root-dmysql:5.7

--namemysql表⽰给这个容器命名为mysql,

-p13306:3306表⽰将宿主主机的13306端⼝映射到容器的3306端⼝,

-v/var/mysql:/var/lib/mysql表⽰将宿主主机的/var/mysql⽬录挂载到容器的/var/lib/mysql⽬录,MySQL就会默认将数据⽂件写⼊

这个⽬录中,

-eMYSQL_ROOT_PASSWORD=root表⽰环境变量参数,MYSQL_ROOT_PASSWORD为必填参数,指定了root⽤户的密码为root,

-d:后台运⾏容器,并返回容器ID,

mysql:5.7表⽰镜像名称和tag.

此时,已经可以通过数据库连接⼯具⽤root⽤户连接上这个数据库了.

PHP

#查找镜像仓库

dockersearchphp

#在这⾥我们选择/library/php:7.2.16-fpm的镜像

/library/php:7.2.16-fpm

拉取完毕后已经可以发现有⼀个名为/library/php:7.2.16-fpm的镜像了,

由于我们在使⽤php的时候经常要安装各种扩展,通过这些镜像创建的实例中不⼀定有我们需要的扩展,这个时候我们可以通过Dockerfile来

构建镜像,创建⼀个名为Dockerfile的⽂件,内容如下:

/library/php:7.2.16-fpm

RUNapt-getupdate

&&aptinstall-ylibwebp-devlibjpeg-devlibpng-devlibfreetype6-devlibjpeg62-turbo-devlibmemcached-devzlib1g-dev

libevent-devopenssllibssl-dev

&&peclinstalligbinary

&&docker-php-ext-install-j$(nproc)pdo_mysqlpcntlsockets

&&peclinstallredis-4.0.0event

&&docker-php-ext-enableredisevent

&&docker-php-ext-install-j$(nproc)mysqli

&&docker-php-ext-configuregd--with-webp-dir=/usr/include/webp--with-jpeg-dir=/usr/include--with-png-

dir=/usr/include--with-freetype-dir=/usr/include/freetype2

&&docker-php-ext-install-j$(nproc)gd

然后执⾏以下命令构建镜像:

dockerbuild-tphp72:ext.

**-tphp72:ext**表⽰将这个镜像命名为php72并且打上ext的tag

.表⽰执⾏命令的⼯作⽬录,也可以指定⽬录,会在该⽬录下寻找Dockerfile⽂件

构建完毕后使⽤dockerimages命令可以发现已经有个叫php72:ext的镜像了

使⽤以下命令来验证刚刚构建的镜像有没安装上所需要的扩展:

dockerrun-itphp72:extphp-m

然后创建⼀个PHP实例:

dockerrun--namephp-v/www:/usr/share/nginx/html-dphp72:ext

-v/www:/usr/share/nginx/html表⽰将⽹站根⽬录/www挂载到容器/usr/share/nginx/html中,此项设置应该跟nginx挂载⼀致,否则

php-fpm⽆法识别正确⽬录

此时已经在后台运⾏了两个容器实例了(mysql和php)

nginx

直接拉取nginx镜像:

dockerpullnginx

拉取完毕后本地镜像中会有⼀个名为nginx:latest的镜像.

我们先运⾏⼀个nginx容器:

dockerrun--namenginx-test-dnginx:latest

然后将容器中的配置⽂件复制到宿主主机中:

dockercpnginx-test:/etc/nginx/var/nginx

nginx-test:/etc/nginx表⽰名为nginx-test容器中的/etc/nginx⽬录

/var/nginx表⽰宿主主机中的⽬录

然后查看复制过来的:

vim/var/nginx/

内容如下:

usernginx;

worker_processes1;

error_log/var/log/nginx/n;

pid/var/run/;

events{

worker_connections1024;

}

http{

include/etc/nginx/;

default_typeapplication/octet-stream;

log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

'$status$body_bytes_sent"$http_referer"'

'"$http_user_agent""$http_x_forwarded_for"';

access_log/var/log/nginx/n;

sendfileon;

#tcp_nopushon;

keepalive_timeout65;

#gzipon;

include/etc/nginx/conf.d/*.conf;

}

注意,这⾥⾯涉及的⽬录会⽐较多,后⾯我们运⾏容器的时候千万别挂载错了.

再看nginx默认的⽂件:

vim/var/nginx/conf.d/

我们将其修改为:

server{

listen80;

server_namelocalhost;

#charsetkoi8-r;

#access_log/var/log/nginx/n;

location/{

root/usr/share/nginx/html;

;

}

#error_page404/;

#redirectservererrorpagestothestaticpage/

#error_page5/;

location=/{

root/usr/share/nginx/html;

}

#proxythePHPscriptstoApachelisteningon127.0.0.1:80

##location~.php${

#}

#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000

#location~.php${

root/usr/share/nginx/html;

fastcgi_passphp:9000;#这个php实际上是表⽰host,我们通过容器连接时可以将其命名为php

fastcgi_;

fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;

includefastcgi_params;

}

#ssfiles,ifApache'sdocumentroot

#concurswithnginx'sone

##location~/.ht{

#denyall;

#}

}

注意我们的⽹站⽬录为/usr/share/nginx/html(针对容器⽽⾔,并不是宿主主机的⽬录,我们可以将本机的⽬录挂载到该⽬录下)

编写php⽂件:

vim/www/

内容如下:

phpinfo();

接下来我们进⾏容器连接,连接nginx和php:

dockerrun--namenginx-p80:80-v/var/nginx:/etc/nginx:ro-v/www:/usr/share/nginx/html--linkphp:php-dnginx:latest

-p80:80表⽰将宿主主机的80端⼝映射到容器的80端⼝,

-v/var/nginx:/etc/nginx:ro表⽰将宿主主机中的配置⽂件⽬录挂载到容器中(之前我们已经使⽤dockercp命令将容器中的配置⽂件复制

到宿主主机),ro表⽰只读,

-v/www:/usr/share/nginx/html表⽰将⽹站根⽬录/www挂载到容器/usr/share/nginx/html中,跟php容器挂载⼀致,

--linkphp:php表⽰将php容器和nginx的⽹络合并,并将php容器的host设置成php,映射到127.0.0.1上,这样nginx就能使⽤php:9000访

问php

访问⽹站

在浏览器中输⼊:

此时,浏览器中已经能查看phpinfo的信息.

本⽂同步发布于:有趣⽹-让编程更有趣

php环境搭建

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论