之前由于需要在mac上安装docker配置对应的项目,为了图方便,于是找了个一键安装包 dnmp,后来运行项目的时候,发现一些老的项目需要使用php5.6以下的版本,于是就想着在这个包中集成一个5.6的PHP版本,经过我多方折腾,终于成功啦,下面将具体步骤记录如下。
【开源推荐】mac下使用docker安装dnmp环境一键安装包
增加文件
1、在 services/php 文件夹中增加 php5.6的包(包我会放到附件中,需要可以下载)
包的内容如下,你也可以按照需求自己添加。
Dockerfile extensions php-fpm.conf php.ini
2、在 services/nginx/nginx1.21 文件夹中添加 enable-php-56.conf 文件。
fastcgi_pass php56:9000;
#fastcgi_pass unix:/usr/panel/sock/php/php-fpm56.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
这里的 fastcgi_pass一定要填写对,这个需要和nginx的容器进行通信用的, `php56` 是`compose.yml`文件中服务器的名称。,`9000`是容器内的端口号非宿主机的端口号,切记。
3、在 services/panel/vhost/nginx/nginx1.21 中增加对应的nginx配置文件。
server {
listen 80;
listen [::]:80;
server_name localhost;
root /home/www/;
index index.html index.php;
access_log /var/log/nginx/www.log main;
error_log /var/log/nginx/www.error.log info;
charset utf-8; #防止txt文本出现乱码
# 伪静态
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ [^/]\.php(/|$) {
# 注意这里和php-fpm的挂载目录一致
root /home/www/;
include enable-php-56.conf;
}
}
注意:这个程序的目录有两个都需要写上并且要写一样的,否则会报错。
compose.yml 文件添加
在composer.yml文件中,添加对应的构建项目,可以仿照之前作者写好的写一个。
php56:
build:
context: ./servers/php/php5.6
args:
PHP_VERSION: php:5.6.40
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
PHP_EXTENSIONS_56: ${PHP_EXTENSIONS_56}
ALPINE_MIRRORS_URL: mirrors.ustc.edu.cn
TZ: ${TZ}
container_name: php56
restart: always
image: imeepo/php:5.6.40-fpm-alpine
ports:
- "9007:9000"
volumes:
- "./servers/php/php5.6/php.ini:/usr/local/etc/php/php.ini:ro" # php.ini
- "./servers/php/php5.6/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf:rw" # php-fpm.conf
- "./servers/panel:/usr/panel" # nginx使用unix连接文件
- "./logs/php/php5.6:/var/log/php"
- "./data/composer:/tmp/composer" # 日志文件
- "./www:/home/www" # 文件路径
cap_add:
- SYS_PTRACE
networks:
- dnmp-net
变量在 .env里面,注意改成自己的。
CONTAINER_PACKAGE_URL=mirrors.aliyun.com
PHP_EXTENSIONS_56=pdo_mysql,mysqli,opcache,redis,gd,mongodb,swoole,memcached,sockets,bcmath,rdkafka
这个是 php56的扩展文件,不过由于我安装脚本中没写默认安装,因此我们可以换另外一种安装扩展的方法。
docker exec -it php56 /bin/sh #也可以在客户端直接进入
install-php-extensions redis #等待执行完成,然后重启即可
常用的扩展基本都支持,不支持的可以用编译安装的方式安装。
启动安装
在安装包的根目录执行
docker-compose up php56 #安装php56包
等启动后即可在容器中看见对应的项目。
附件下载
附件是我找到的另外一个 dnmp 的安装包,我发现这个安装包有好几个版本,每个里面包含的不一样,也许是大家根据最后又重新打包的,不想重新添加的,可以下载这个包,包里本身还有php5.6到php8.1,我是本身电脑里已经有了,不想重新安装,因此自己集成啦。