首页 » Web前端 » apache切换php7技巧_运用php74apachebuster镜像支配PHP7Apache情形

apache切换php7技巧_运用php74apachebuster镜像支配PHP7Apache情形

访客 2024-12-06 0

扫一扫用手机浏览

文章目录 [+]

前面福哥已经教给大家利用Dockerfile制作自己的镜像的方法了,本日我们利用Dockerfile制作一个PHP7+Apache的运行环境的镜像,用来支配PHP运用程序和做事。

福哥选择的根本镜像是php:7.4-apache-buster,这个镜像可以从官方拉取。

apache切换php7技巧_运用php74apachebuster镜像支配PHP7Apache情形

1.2 环境

apache切换php7技巧_运用php74apachebuster镜像支配PHP7Apache情形
(图片来自网络侵删)

镜像版本

php:7.4-apache-buster

操作系统

CentOS 7 x86_64 2009

做事器

TFCentOS7x64

IP

192.168.168.68

端口

80

2. 安装

2.1 Dockerfile

2.1.1 根本镜像

福哥选择的是php:7.4-apache-buster这个根本镜像,由于这个镜像包含了apache做事,我们可以直接拿来用。

https://hub.docker.com/_/php/tags?page=1&name=7.4-apache-buster

目前hub.docker.com该当已经无法打开了!
大家直接docker pull就可以了!

拉取镜像php:7.4-apache-buster,添加到registry.tongfu.net:5000私有仓库里面。

dockerpullphp:7.4-apache-busterdockertagphp:7.4-apache-busterregistry.tongfu.net:5000/php:7.4-apache-busterdockerrmiphp:7.4-apache-busterdockerimages|grepphp

2.1.2 创建镜像目录

创建镜像目录php7.4apache并切换到php7.4apache目录下面。

mkdir/tongfu.net/data/dockerfile/tfphp7.4apachecd/tongfu.net/data/dockerfile/tfphp7.4apache

2.1.3 依赖镜像

第一行写上依赖镜像php:7.4-apache-buster。

FROMregistry.tongfu.net:5000/php:7.4-apache-buster

2.1.4 掩护者信息

这是福哥写的掩护者信息。

#forMAINTAINERMAINTAINERAuthor:AndyBogateMAINTAINEREmail:tongfu@tongfu.netMAINTAINERHomepage:https://tongfu.netMAINTAINERDatetime:2023/03/08MAINTAINERVersion:v1.0

2.1.5 暴露端口

供应做事的端口常日情形下是80和443,我们把它们暴露出来。

#forEXPOSEEXPOSE80443

2.1.6 主目录

福哥设置镜像的主目录是/tongfu.net/web。

#forWORKDIRWORKDIR/tongfu.net/web

2.1.7 设置时区

默认时区是UTC,我们把它改成CST,也便是中国标准韶光。

#fortimezoneRUNln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime\&&echo"Asia/Shanghai">/etc/timezone

2.1.8 安装工具和依赖库

后面的制作过程须要用到wget工具,这个须要通过apt-get安装一下。
除此之外还要安装一些依赖库,包括图形库、zip和xml等等。

#installwgetRUNapt-getupdate\&&apt-get-yinstallwgetvimRUNapt-get-yinstalllibwebp-devlibjpeg-devlibpng-devlibfreetype6-devRUNapt-get-yinstalllibzip-devRUNapt-get-yinstalllibc-client-devlibkrb5-devRUNapt-get-yinstalllibxml2-dev

2.1.9 开释PHP源码

这个php:7.4-apache-buster包含了PHP的源码,由于后面须要利用PHP源码安装PHP扩展,以是先要开释PHP源码。

#extractPHPsourceRUNdocker-php-sourceextract

2.1.10 GD图形库扩展

GD图形库可以让我们通过PHP直接加工各种图片文件,这个库可以用来实现图片验证码、照片加工等等功能的。

#gdextensionRUNdocker-php-ext-configuregd\--with-jpeg=/usr/include\--with-freetype=/usr/include/\&&docker-php-ext-installgd\&&docker-php-ext-enablegd

2.1.11 MySQL扩展

福哥是利用PDO来连接MySQL数据库,而MySQL的PDO库PHP资源包里包含了,只要安装起来就行了。

#extensionofmysqliforMySQLRUNdocker-php-ext-installmysqli\&&docker-php-ext-enablemysqli#extensionofPDOforMySQLRUNdocker-php-ext-installpdo_mysql\&&docker-php-ext-enablepdo_mysql

2.1.12 Memcached扩展

memcached库须要从PECL下载,福哥选择的是3.1.5版本,这里直接通过phpize编译后就可以通过make安装了。

memcached库依赖libmemcached库,福哥选择的是1.0.18版本,只管即便不要改避免版本冲突~

#libraryofMemcachedRUNwgethttps://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz\&&tar-xzvflibmemcached-1.0.18.tar.gz\&&cdlibmemcached-1.0.18\&&sed-i's/opt_servers\=\=false/\!opt_servers/g'clients/memflush.cc\&&./configure\&&make&&makeinstall\&&cd../\&&rm-flibmemcached-1.0.18.tar.gz\&&rm-rflibmemcached-1.0.18#extensionofMemcachedRUNwgethttp://pecl.php.net/get/memcached-3.1.5.tgz\&&tar-xzvfmemcached-3.1.5.tgz\&&cdmemcached-3.1.5\&&/usr/local/bin/phpize\&&./configure--with-php-config=/usr/local/bin/php-config\--disable-memcached-sasl\&&make&&makeinstall\&&cd../\&&rm-fmemcached-3.1.5.tgz\&&rm-rfmemcached-3.1.5\&&docker-php-ext-enablememcached

2.1.13 Redis扩展

redis库须要从PECL下载,福哥选择的是4.1.0版本,这里直接通过phpize编译后就可以通过make安装了。

#extensionofRedisRUNwgethttp://pecl.php.net/get/redis-4.1.0.tgz\&&tar-xzvfredis-4.1.0.tgz\&&cdredis-4.1.0\&&/usr/local/bin/phpize\&&./configure--with-php-config=/usr/local/bin/php-config\&&make&&makeinstall\&&cd../\&&rm-fredis-4.1.0.tgz\&&rm-rfredis-4.1.0\&&docker-php-ext-enableredis

2.1.14 MongoDB扩展

MongoDB库须要从PECL下载,福哥选择的是1.7.4版本,这里直接通过phpize编译后就可以通过make安装了。

#extensionofMongoDBRUNwgethttp://pecl.php.net/get/mongodb-1.7.4.tgz\&&tar-xzvfmongodb-1.7.4.tgz\&&cdmongodb-1.7.4\&&/usr/local/bin/phpize\&&./configure--with-php-config=/usr/local/bin/php-config\&&make&&makeinstall\&&cd../\&&rm-fmongodb-1.7.4.tgz\&&rm-rfmongodb-1.7.4\&&docker-php-ext-enablemongodb

2.1.15 其他扩展

除了前面安装的几个扩展之外,福哥还安装了imap、zlib、soap、bcmath这些扩展,建议大家也把这些安装上。

#imapextensionRUNdocker-php-ext-configureimap\--with-kerberos\--with-imap-ssl\&&docker-php-ext-installimap\&&docker-php-ext-enableimap#zlibextensionRUNmv/usr/src/php/ext/zlib/config0.m4/usr/src/php/ext/zlib/config.m4\&&docker-php-ext-installzlib\&&docker-php-ext-enablezlib#soapextensionRUNdocker-php-ext-installsoap\&&docker-php-ext-enablesoap#bcmathextensionRUNdocker-php-ext-installbcmath\&&docker-php-ext-enablebcmath

2.1.16 清理PHP源码

现在PHP的扩展都按照好了,已经不须要源码了,清理掉吧。

#sourcedeleteRUNdocker-php-sourcedelete

2.2 php配置文件

2.2.1 php.ini

php.ini的存放目录是/usr/local/etc/php/,镜像供应了php-ini-development、php.ini-production两个配置文件模板,我们可以根据利用场景选择开拓版本还是生产版本。

启动临时容器,从容器里复制php.ini-development出来放到镜像目录下。

dockerrun-tid--namettt-htttregistry.tongfu.net:5000/php:7.4-apache-busterdockercpttt:/usr/local/etc/php/php.ini-developmentphp.inidockerrm-fttt

设置缺点日志路径,将PHP的实行缺点存起来。

error_log=/tmp/php_errors.log

修正php.ini设置时区为Asia/Shanghai。

date.timezone=Asia/Shanghai

复制php.ini覆盖镜像里面的php.ini配置文件。

#php.iniCOPYphp.ini/usr/local/etc/php/php.ini

2.3 apache配置文件

2.3.1 模块配置

镜像安装的apache2包括/etc/apache2/mods-available和/etc/apache2/mods-enabled两个模块配置目录,mods-available里面包含全部的可用模块配置文件,mods-enabled里面是启用的模块配置文件。

要启用模块就从mods-available选择模块配置文件建立符号链接到mods-enabled下面。

要停用模块就将mods-enabled下面的模块配置文件的符号链接删除掉。

福哥这里把rewrite.load模块给打开了,这个利用场景还是非常多的,最最少实现PHP的伪静态就须要它。

#apachemodulesRUNcd/etc/apache2/mods-enabled/\&&ln-s../mods-available/rewrite.load

2.3.2 站点配置

镜像安装的apache2包括/etc/apache2/sites-available和/etc/apache2/sites-enabled两个站点配置目录,sites-available里面包含全部的可用站点配置文件,sites-enabled里面是启用的站点配置文件。

要启用站点就从sites-available选择站点配置文件建立符号链接到sites-enabled下面。

要停用站点就将sites-enabled下面删除站点配置文件的符号链接。

启动临时容器,从容器里复制000-default.conf出来放到镜像目录下。

dockerrun-tid--namettt-htttregistry.tongfu.net:5000/php:7.4-apache-busterdockercpttt:/etc/apache2/sites-available/000-default.conf000-default.confdockerrm-fttt

福哥在默认站点的虚拟主机里面利用rewrite模块实现了一个PHP的伪静态重定向配置,可以将各种html要求转交给htmlRouteMap.php处理。

在000-default.conf的VirtualHost节点里面添加如下配置信息。

#ForroutestaticrequestsRewriteEngineOnRewriteRule(.)\.html/htmlRouteMap.php?tfphp_static_name=$1[L]

复制000-default.conf覆盖镜像里面的000-default.conf配置文件。

#apachesitesCOPY000-default.conf/etc/apache2/sites-available/000-default.conf

2.4 创建镜像

利用下面的命令创建tfphp:7.4-apache-1.0.0镜像。

dockerbuild-fDockerfile\-tregistry.tongfu.net:5000/tfphp:7.4-apache-1.0.0./

2.5 查看镜像

看看新的镜像。

dockerimages|greptfphp

3. 测试

3.1 宿主机程序目录

在宿主机建立一个用来存放php程序的目录,它将被映射到容器的apache主目录上面。

mkdir-p/tongfu.net/data/docker/data/tfphp/html/cd/tongfu.net/data/docker/data/tfphp/html/

3.2 宿主机程序文件

在刚刚建立的目录下面建立一个php程序文件index.php,写入下面的代码。

<?phpphpinfo();

再建立一个php程序文件htmlRouteMap.php,写入下面的代码。

<?phpvar_dump(date("Y-m-dH:i:s"),$_GET['tfphp_static_name'].".html");

3.3 启动容器

利用下面的命令基于tfphp:7.4-apache-1.0.0镜像启动一个容器,将80端口和443端口映射到宿主机上面,将/var/www/html这个apache主目录映射到前面建立的目录上面。

dockerrun-tid\--nametfphp\-htfphp\-p80:80\-p443:443\-v/tongfu.net/data/docker/data/tfphp/html:/var/www/html\registry.tongfu.net:5000/tfphp:7.4-apache-1.0.0

3.4 浏览器访问

打开浏览器访问http://192.168.168.68/index.php,可以看到PHP系统信息。

输入网址http://192.168.168.68/tongfu.net/docker/tfphp.html,可以看到要求html资源路径被htmlRouteMap.php打印出来了。

4. 总结

本日福哥在TFCentOS7x64做事器上面通过Dockerfile创建了一个镜像tfphp:7.4-apache-1.0.0,并且通过这个新创建的镜像tfphp:7.4-apache-1.0.0启动了一个容器,这个镜像用来运行基于PHP措辞开拓的运用程序。

后面福哥会在这个镜像tfphp:7.4-apache-1.0.0根本之上进行二次扩展制作新的镜像,然后根据镜像的用场针对apache和php进行自定义的配置,敬请期待~

https://m.tongfu.net/home/35/blog/513977.html

标签:

相关文章