Docker搭建多版本PHP共存同时在线运行的方法
一台服务器可能需要运行多个php网站,但是有的php程序只能在php 5.x版本上运行,尤其是php 7.x上线后,很多程序都不支持,这个时候在服务器上搭建多版本php共存显得尤为重要,即在一台服务器上既能运行php5.x版本的程序也能运行php7.x版本的程序,多个版本的php同时在一台服务器上运行起来。
本文将介绍在docker上运行多个php版本,具体如何安装docker可以参考这篇文章:https://www.zyku.net/centos/1700.html
使用docker搭建LNMP环境可以参考这篇文章:https://www.zyku.net/centos/1704.html
1、docker安装mysql :
docker pull mysql:5.6
运行并启动mysql所在容器:
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=dk123456 --name dk_mysql mysql:5.6
进入MySQL容器:
docker exec -ti dk_mysql /bin/bash
2、docker安装php-fpm:
这里以php 5.6和php 7.0为例,搭建两个版本php环境
首先拉取php-fpm的镜像:
docker pull php:5.6-fpm docker pull php:7.0-fpm
先创建一个php 5.6的容器:
docker run -d -v /var/nginx/www/html/56:/var/www/html/56 -p 9000:9000 --link dk_mysql:mysql --name dk_php56 php:5.6-fpm
再创建一个php 7.0的容器:
docker run -d -v /var/nginx/www/html/70:/var/www/html/70 -p 9001:9000 --link dk_mysql:mysql --name dk_php70 php:7.0-fpm
执行命令“docker ps -a”可以查看我们刚刚创建的容器,如下图所示:
下面分别进入php 5.6和7.0的容器中安装模块:
php5.6容器:
docker exec -ti dk_php56 /bin/bash docker-php-ext-install pdo_mysql docker-php-ext-install mysqli
php7.0容器:
docker exec -ti dk_php70 /bin/bash docker-php-ext-install pdo_mysql docker-php-ext-install mysqli
如果在安装的过程中有报错“configure: error: png.h not found.”就需要在容器中安装libpng和libpng-devel:
apt-get update apt-get install libpng libpng-devel
3、docker安装nginx:
docker pull nginx:1.10.3
创建nginx容器:
docker run -d -p 80:80 --name dk_nginx -v /var/nginx/www/html/56:/var/www/html/56 -v /var/nginx/www/html/70:/var/www/html/70 --link dk_php56:php56 --link dk_php70:php70 --name dk_nginx nginx:1.10.3
进入nginx容器,修改配置文件:
docker exec -ti dk_nginx /bin/bash
配置文件默认在/etc/nginx目录下,这里我们到“conf.d”目录下创建两个虚拟机配置文件分别对应到php5.6和7.0来进行演示,如下图所示:
56.aitest.top.conf:
server { listen 80; server_name 56.aitest.top; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /var/www/html/56; index index.html index.htm index.php; } location ~ \.php$ { root /var/www/html/56; fastcgi_index index.php; fastcgi_pass php56:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
70.aitest.top.conf:
server { listen 80; server_name 70.aitest.top; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /var/www/html/70; index index.html index.htm index.php; } location ~ \.php$ { root /var/www/html/70; fastcgi_index index.php; fastcgi_pass php70:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
修改配置文件后我们可以使用“service nginx reload”来重新加载nginx配置信息
紧接着到“/var/www/html/56”和“/var/www/html/70”目录下分别新建一个index.php文件并且写入 phpinfo(); 来测试我们的安装是否成功了,浏览器访问域名效果如下:
(资源库 www.zyku.net)
上一篇:CentOS 7中Docker搭建LNMP环境的方法
栏 目:CentOS
下一篇:Docker中使用SSH连接登录CentOS容器的方法
本文标题:Docker搭建多版本PHP共存同时在线运行的方法
本文地址:https://www.zyku.net/centos/1705.html
您可能感兴趣的文章
- 05-10执行docker ps命令,提示 "Cannot connect to the Docke
- 04-24docker镜像中安装gd库的方法
- 04-22Docker容器和主机如何互相拷贝传输文件
- 12-10docker修改无法启动的容器中的内容
- 11-23简单查看docker name和ip
- 11-23docker 容器(container)获取ip地址的方法
- 10-23Docker基本命令整理
- 10-22Docker是什么?可以用Docker做什么?
- 09-25Nginx反向代理docker容器进行域名解析绑定的实现方法
- 09-22Docker中使用SSH连接登录CentOS容器的方法
- 06-26正则表达式验证用户名、密码、手机号
- 01-18快剪辑app-快剪辑app应用软件功能介绍
- 01-12海贝小说-海贝小说应用软件功能介绍
- 07-22Vultr服务器添加ipv6地址的方法
- 09-17华为手环6怎样绑定手机
- 01-08i武当-i武当应用软件功能介绍
- 01-12无忧好帮手接单端-无忧好帮手接单端应
- 01-11开心相册乐园-开心相册乐园应用软件功
- 03-31基于flask实现五子棋小游戏
- 03-14华为freebuds4唤醒小艺方法
最近更新
阅读排行
猜你喜欢
- 07-21西部数码
- 12-31三哥漫时光-三哥漫时光应用软件功能介
- 03-12DedeCMS图片水印的添加和删除的方法
- 07-30jquery v3.3.1
- 02-19ecshop删除指定时间段订单信息
- 01-11iKnow办公-iKnow办公应用软件功能介绍
- 03-28华为nova8设置虚拟导航键方法
- 04-11华为手机混搭主题设置方法
- 01-07小米极简模式怎么设置
- 09-27万能小组件添加到桌面方法介绍