前言:
当前我们对“apachephp测试页面”大概比较注意,各位老铁们都需要剖析一些“apachephp测试页面”的相关内容。那么小编在网摘上网罗了一些关于“apachephp测试页面””的相关资讯,希望咱们能喜欢,同学们快快来了解一下吧!1. 介绍
1.1 介绍
前面福哥已经教给大家使用Dockerfile制作自己的镜像的方法了,今天我们使用Dockerfile制作一个PHP7+Apache的运行环境的镜像,用来部署PHP应用程序和服务。
福哥选择的基础镜像是php:7.4-apache-buster,这个镜像可以从官方拉取。
1.2 环境
镜像版本
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服务,我们可以直接拿来用。
;name=7.4-apache-buster
目前hub.docker.com应该已经无法打开了!大家直接docker pull就可以了!
拉取镜像php:7.4-apache-buster,添加到registry.tongfu.net:5000私有仓库里面。
docker pull php:7.4-apache-busterdocker tag php:7.4-apache-buster registry.tongfu.net:5000/php:7.4-apache-busterdocker rmi php:7.4-apache-busterdocker images | grep php
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。
FROM registry.tongfu.net:5000/php:7.4-apache-buster
2.1.4 维护者信息
这是福哥写的维护者信息。
# for MAINTAINERMAINTAINER Author: Andy BogateMAINTAINER Email: tongfu@tongfu.netMAINTAINER Home page: ;Datetime: 2023/03/08MAINTAINER Version: v1.0
2.1.5 暴露端口
提供服务的端口通常情况下是80和443,我们把它们暴露出来。
# for EXPOSEEXPOSE 80 443
2.1.6 主目录
福哥设置镜像的主目录是/tongfu.net/web。
# for WORKDIRWORKDIR /tongfu.net/web
2.1.7 设置时区
默认时区是UTC,我们把它改成CST,也就是中国标准时间。
# for timezoneRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone
2.1.8 安装工具和依赖库
后面的制作过程需要用到wget工具,这个需要通过apt-get安装一下。除此之外还要安装一些依赖库,包括图形库、zip和xml等等。
# install wgetRUN apt-get update \&& apt-get -y install wget vimRUN apt-get -y install libwebp-dev libjpeg-dev libpng-dev libfreetype6-devRUN apt-get -y install libzip-devRUN apt-get -y install libc-client-dev libkrb5-devRUN apt-get -y install libxml2-dev
2.1.9 释放PHP源码
这个php:7.4-apache-buster包含了PHP的源码,因为后面需要使用PHP源码安装PHP扩展,所以先要释放PHP源码。
# extract PHP sourceRUN docker-php-source extract
2.1.10 GD图形库扩展
GD图形库可以让我们通过PHP直接加工各种图片文件,这个库可以用来实现图片验证码、照片加工等等功能的。
# gd extensionRUN docker-php-ext-configure gd \--with-jpeg=/usr/include \--with-freetype=/usr/include/ \&& docker-php-ext-install gd \&& docker-php-ext-enable gd
2.1.11 MySQL扩展
福哥是使用PDO来连接MySQL数据库,而MySQL的PDO库PHP资源包里包含了,只要安装起来就行了。
# extension of mysqli for MySQLRUN docker-php-ext-install mysqli \&& docker-php-ext-enable mysqli# extension of PDO for MySQLRUN docker-php-ext-install pdo_mysql \&& docker-php-ext-enable pdo_mysql
2.1.12 Memcached扩展
memcached库需要从PECL下载,福哥选择的是3.1.5版本,这里直接通过phpize编译后就可以通过make安装了。
memcached库依赖libmemcached库,福哥选择的是1.0.18版本,尽量不要改避免版本冲突~
# library of MemcachedRUN wget ;\&& tar -xzvf libmemcached-1.0.18.tar.gz \&& cd libmemcached-1.0.18 \&& sed -i 's/opt_servers \=\= false/\!opt_servers/g' clients/memflush.cc \&& ./configure \&& make && make install \&& cd ../ \&& rm -f libmemcached-1.0.18.tar.gz \&& rm -rf libmemcached-1.0.18# extension of MemcachedRUN wget ;\&& tar -xzvf memcached-3.1.5.tgz \&& cd memcached-3.1.5 \&& /usr/local/bin/phpize \&& ./configure --with-php-config=/usr/local/bin/php-config \--disable-memcached-sasl \&& make && make install \&& cd ../ \&& rm -f memcached-3.1.5.tgz \&& rm -rf memcached-3.1.5 \&& docker-php-ext-enable memcached
2.1.13 Redis扩展
redis库需要从PECL下载,福哥选择的是4.1.0版本,这里直接通过phpize编译后就可以通过make安装了。
# extension of RedisRUN wget ;\&& tar -xzvf redis-4.1.0.tgz \&& cd redis-4.1.0 \&& /usr/local/bin/phpize \&& ./configure --with-php-config=/usr/local/bin/php-config \&& make && make install \&& cd ../ \&& rm -f redis-4.1.0.tgz \&& rm -rf redis-4.1.0 \&& docker-php-ext-enable redis
2.1.14 MongoDB扩展
MongoDB库需要从PECL下载,福哥选择的是1.7.4版本,这里直接通过phpize编译后就可以通过make安装了。
# extension of MongoDBRUN wget ;\&& tar -xzvf mongodb-1.7.4.tgz \&& cd mongodb-1.7.4 \&& /usr/local/bin/phpize \&& ./configure --with-php-config=/usr/local/bin/php-config \&& make && make install \&& cd ../ \&& rm -f mongodb-1.7.4.tgz \&& rm -rf mongodb-1.7.4 \&& docker-php-ext-enable mongodb
2.1.15 其他扩展
除了前面安装的几个扩展之外,福哥还安装了imap、zlib、soap、bcmath这些扩展,建议大家也把这些安装上。
# imap extensionRUN docker-php-ext-configure imap \--with-kerberos \--with-imap-ssl \&& docker-php-ext-install imap \&& docker-php-ext-enable imap# zlib extensionRUN mv /usr/src/php/ext/zlib/config0.m4 /usr/src/php/ext/zlib/config.m4 \&& docker-php-ext-install zlib \&& docker-php-ext-enable zlib# soap extensionRUN docker-php-ext-install soap \&& docker-php-ext-enable soap# bcmath extensionRUN docker-php-ext-install bcmath \&& docker-php-ext-enable bcmath
2.1.16 清理PHP源码
现在PHP的扩展都按照好了,已经不需要源码了,清理掉吧。
# source deleteRUN docker-php-source delete
2.2 php配置文件
2.2.1 php.ini
php.ini的存放目录是/usr/local/etc/php/,镜像提供了php-ini-development、php.ini-production两个配置文件模板,我们可以根据使用场景选择开发版本还是生产版本。
启动临时容器,从容器里复制php.ini-development出来放到镜像目录下。
docker run -tid --name ttt -h ttt registry.tongfu.net:5000/php:7.4-apache-busterdocker cp ttt:/usr/local/etc/php/php.ini-development php.inidocker rm -f ttt
设置错误日志路径,将PHP的执行错误存起来。
error_log = /tmp/php_errors.log
修改php.ini设置时区为Asia/Shanghai。
date.timezone = Asia/Shanghai
复制php.ini覆盖镜像里面的php.ini配置文件。
# php.iniCOPY php.ini /usr/local/php/etc/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的伪静态就需要它。
# apache modulesRUN cd /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出来放到镜像目录下。
docker run -tid --name ttt -h ttt registry.tongfu.net:5000/php:7.4-apache-busterdocker cp ttt:/etc/apache2/sites-available/000-default.conf 000-default.confdocker rm -f ttt
福哥在默认站点的虚拟主机里面利用rewrite模块实现了一个PHP的伪静态重定向配置,可以将各种html请求转交给htmlRouteMap.php处理。
在000-default.conf的VirtualHost节点里面添加如下配置信息。
# For route static requests RewriteEngine On RewriteRule (.*)\.html /htmlRouteMap.php?tfphp_static_name=$1 [L]
复制000-default.conf覆盖镜像里面的000-default.conf配置文件。
# apache sitesCOPY 000-default.conf /etc/apache2/sites-available/000-default.conf
2.4 创建镜像
使用下面的命令创建tfphp:7.4-apache-1.0.0镜像。
docker build -f Dockerfile \-t registry.tongfu.net:5000/tfphp:7.4-apache-1.0.0 ./
2.5 查看镜像
看看新的镜像。
docker images | grep tfphp3. 测试
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($_GET['tfphp_static_name']. ".html");
3.3 启动容器
使用下面的命令基于tfphp:7.4-apache-1.0.0镜像启动一个容器,将80端口和443端口映射到宿主机上面,将/var/www/html这个apache主目录映射到前面建立的目录上面。
docker run -tid \--name tfphp \-h tfphp \-p 80:80 \-p 443: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 浏览器访问
打开浏览器访问,可以看到PHP系统信息。
输入网址,可以看到请求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进行自定义的配置,敬请期待~
标签: #apachephp测试页面