centos ssh apache php fcgi

2025-12-07 0 566

标签和各自的Dockerfile链接

  • 2.2.3centos-7 (Centos-7/dockerfile
  • 1.13.3centos-6 (Centos-6/dockerfile)

概述

Apache PHP(FastCGI)Web服务器,默认情况下仅加载一组最小的Apache模块。

该构建使用基本图像jdeathe/centos-ssh,因此继承了其功能,但默认情况下已禁用sshd 。当运行基于此图像的Docker容器时,主管用于启动Apache httpd守护程序。

图像变体

  • Apache 2.4,PHP-CGI 5.4(FastCGI),PHP MEMCACH 2.2,PHP REDIS 2.2,ZEND OPCACHE 7.0-CENTOS-7
  • Apache 2.2,PHP-CGI 5.3(FastCGI),PHP MEMCACHED 1.0,PHP REDIS 2.2,PHP APC 3.1-CENTOS-6

快速开始

为了生产使用,建议选择一个特定的发布标签,如示例所示。

从Docker Image jdeathe/centos-ssh-apache-php-fcgi上运行一个名为apache-php.1的容器。

 $ docker run -d \\
  --name apache-php.1 \\
  -p 8080:80 \\
  -e \"APACHE_SERVER_NAME=app-1.local\" \\
  jdeathe/centos-ssh-apache-php-fcgi:2.2.3

请访问http://{{dock*e*r-*host}}:8080使用浏览器{{docker-host}}是您的Docker Server的主机名称,如果一切顺利,您都应该看到“ Hello,World!”页。

为了能够使用“ app-1.local”域名访问服务器,您需要在本地添加主机文件条目;因此,Docker主机的IP地址可以解决到名称“ App-1.local”。另外,您可以使用安装在容器中的elinks浏览器。

请注意,由于您正在使用来自标准端口80的站点的容器中的浏览器。

 $ docker exec -it apache-php.1 \\
  elinks http://app-1.*lo*ca*l

验证指定的容器的过程状态和健康。

 $ docker ps -a \\
  -f \"name=apache-php.1\"

验证命名容器的成功初始化。

 $ docker logs apache-php.1

在第一次运行时,如果DocumentRoot Directory为空,则将使用示例应用程序脚本和App特定配置文件填充它。

apachectl命令可以如下访问。

 $ docker exec -it apache-php.1 \\
  apachectl -h

指示

跑步

要从此图像运行A Docker容器,您可以使用标准Docker命令,如下示例所示。另外,还有一个Docker-Compose示例。

为了生产使用,建议选择一个特定的发布标签,如示例所示。

使用环境变量

 $ docker stop apache-php.1 && \\
  docker rm apache-php.1; \\
  docker run -d \\
  --name apache-php.1 \\
  --publish 8080:80 \\
  --publish 9443:443 \\
  --env \"APACHE_CUSTOM_LOG_LOCATION=/dev/stdout\" \\
  --env \"APACHE_ERROR_LOG_LOCATION=/dev/stderr\" \\
  --env \"APACHE_EXTENDED_STATUS_ENABLED=true\" \\
  --env \"APACHE_LOAD_MODULES=env_module rewrite_module\" \\
  --env \"APACHE_MOD_SSL_ENABLED=true\" \\
  --env \"APACHE_SERVER_NAME=app-1.local\" \\
  --env \"APACHE_SSL_PROTOCOL=All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1\" \\
  --env \"PHP_OPTIONS_DATE_TIMEZONE=Europe/London\" \\
  jdeathe/centos-ssh-apache-php-fcgi:2.2.3

环境变量

有可用的环境变量,允许操作员自定义运行容器。

enable_httpd_bootstrap&enable_httpd_wrapper

可能需要防止httpd-bootstrap和/或httpd-wrapper脚本的启动。例如,当使用从该Dockerfile构建的图像作为另一个Dockerfile的源时,您可以通过将ENABLE_HTTPD_WRAPPER设置为false通过将启动服务禁用。这样做的好处是减少最终容器中的运行过程数量。这是另一个用途是使用图像中安装的软件包,例如abcurlelinksphp-cli等。

apache_content_root

Apache DocumentRoot的服务用户和父目录的主目录默认为/var/www/app但在必要时可以使用APACHE_CONTENT_ROOT环境变量进行更改。

 ...
  --env \"APACHE_CONTENT_ROOT=/var/www/app-1\" \\
...
apache_custom_log_location&apache_custom_log_format

可以使用APACHE_CUSTOM_LOG_LOCATION定义Apache CustomLog,以设置文件(或管道),位置和APACHE_CUSTOM_LOG_FORMAT以指定所需的LogFormat昵称。

 ...
  --env \"APACHE_CUSTOM_LOG_LOCATION=/var/log/httpd/access_log\" \\
  --env \"APACHE_CUSTOM_LOG_FORMAT=common\" \\
...

要设置相对于APACHE_CONTENT_ROOT文件路径,路径值应排除领先/

 ...
  --env \"APACHE_CUSTOM_LOG_LOCATION=var/log/httpd_access_log\" \\
...
apache_error_log_location&apache_error_log_level

可以使用APACHE_ERROR_LOG_LOCATION定义Apache Errorlog来设置文件(或管道),位置和APACHE_ERROR_LOG_LEVEL以指定所需的loglevel值。

 ...
  --env \"APACHE_ERROR_LOG_LOCATION=/var/log/httpd/error_log\" \\
  --env \"APACHE_ERROR_LOG_LEVEL=error\" \\
...

要设置相对于APACHE_CONTENT_ROOT文件路径,路径值应排除领先/

 ...
  --env \"APACHE_ERROR_LOG_LOCATION=var/log/httpd_error_log\" \\
...
apache_extended_status_enabled

变量APACHE_EXTENDED_STATUS_ENABLED允许您打开ExtendedStatus。默认情况下它会关闭,因为它对服务器的性能有影响,但是启用了它,您可以收集更多的统计信息。

 ...
  --env \"APACHE_EXTENDED_STATUS_ENABLED=true\" \\
...

您可以使用来自容器上的elinks浏览器或使用watchcurl来监视状态随着时间的推移来查看Apache Server status的输出。以下命令显示了“ App-1.local”的APACHE_SERVER_NAMEAPACHE_SERVER_ALIAS ,以1秒的间隔显示了服务器端口。

 $ docker exec -it apache-php.1 \\
  env TERM=xterm \\
  watch -n 1 \\
  -d \"curl -s \\
    -H \'Host: app-1.local\' \\
    http://127.**0*.0.1/server-status?auto\"
apache_header_x_service_uid

APACHE_HEADER_X_SERVICE_UID环境变量用于设置名为X-Service-UID的响应标头,该标题可让您识别服务于内容的容器。当您使用不同端口在单个主机上运行的许多容器,或者您正在运行群集并且需要识别内容所提供的宿主时,这很有用。如果该值包含占位符{{HOSTNAME}}则将其替换为系统hostname值。默认情况下,这是容器ID,但是可以使用--hostname docker create | run参数修改主机名。

 ...
  --env \"APACHE_HEADER_X_SERVICE_UID={{HOSTNAME}}\" \\
...
apache_load_modules

默认情况下,图像加载了最小必需的Apache模块。为了加载其他模块,可以使用APACHE_LOAD_MODULES 。要加载mod_envmod_rewrite apache模块,请使用相应的模块标识符。 IE env_modulerewrite_module

 ...
  --env \"APACHE_LOAD_MODULES=env_module rewrite_module\"
...
apache_mod_ssl_enabled

默认情况下,SSL支持被禁用,但第二个端口(映射到8443)可用于通过上游SSL终止(SSL卸载)的流量。如果您希望容器直接支持SSL,请设置APACHE_MOD_SSL_ENABLED=true这将生成一个自签名证书,并将更新Apache以接受端口443上的流量。

 $ docker stop apache-php.1 && \\
  docker rm apache-php.1; \\
  docker run -d \\
  --name apache-php.1 \\
  --publish 8080:80 \\
  --publish 9443:443 \\
  --env \"APACHE_SERVER_ALIAS=app-1\" \\
  --env \"APACHE_SERVER_NAME=app-1.local\" \\
  --env \"APACHE_MOD_SSL_ENABLED=true\" \\
  jdeathe/centos-ssh-apache-php-fcgi:2.2.3
apache_mpm

使用APACHE_MPM可以设置Apache MPM。默认为FASTCGI图像的worker默认,不应更改此图像。

 ...
  --env \"APACHE_MPM=worker\" \\
...
apache_run_user&apache_run_group

Apache进程由用户和组分别由APACHE_RUN_USERAPACHE_RUN_GROUP运行。

 ...
  --env \"APACHE_RUN_GROUP=www-app\" \\
  --env \"APACHE_RUN_USER=www-app\" \\
...
apache_public_directory

公共目录是相对于APACHE_CONTENT_ROOT的,它们共同构成了Apache DocumentRoot路径。默认值是public_html ,除非对应用程序的来源进行更改以包括替代公共目录,例如webpublic ,否则不应更改。

 ...
  --env \"APACHE_PUBLIC_DIRECTORY=web\" \\
...
apache_server_alias&apache_server_name

APACHE_SERVER_NAMEAPACHE_SERVER_ALIAS环境变量分别用于设置VirtualHost ServerNameServerAlias值。如果该值包含占位符{{HOSTNAME}}则将其替换为系统hostname值。默认情况下,这是容器ID,但是可以使用--hostname docker create | run参数修改主机名。

在下面的示例中,运行容器将响应主机名app-1.localapp-1

 ...
  --env \"APACHE_SERVER_ALIAS=app-1\" \\
  --env \"APACHE_SERVER_NAME=app-1.local\" \\
...
apache_ssl_certificate

APACHE_SSL_CERTIFICATE环境变量用于定义PEM编码的证书捆绑包。要制作兼容的证书捆绑包,请使用cat命令将证书文件组合在一起。

 $ cat /usr/share/private/server-key.pem \\
    /usr/share/certs/server-certificate.pem \\
    /usr/share/certs/intermediate-certificate.pem \\
  > /usr/share/certs/server-bundle.pem

如果不使用文件路径方法,建议使用PEM文件内容的base64编码。

注意: MAC OSX上的base64命令将默认情况下编码一个无需线路断路的文件,但是如果使用Linux上的命令,则需要使用-w选项,以防止80个字符的包装行。 IE base64 -w 0 -i {{certificate-path}}

 ...
  --env \"APACHE_SSL_CERTIFICATE=$(
    base64 -i \"/usr/share/certs/server-bundle.pem\"
  )\" \\
...

如果设置为有效的容器文件路径,则将从文件中读取值 – 这允许在与编排功能(例如Docker swarm Secrets)结合使用时将值牢固地设置。

 ...
  --env \"APACHE_SSL_CERTIFICATE=/run/secrets/apache_ssl_certificate\" \\
...
apache_ssl_cipher_suite

使用APACHE_SSL_CIPHER_SUITE环境变量来定义适当的密码套件。默认的“中间”选择应适用于大多数使用对宽范围浏览器的支持。

参考:

  • OpenSSL密码文档。
  • Mozilla安全/服务器端TLS指南。

注意:值表是使用空间分离值以允许文档中的可读性;这是有效的语法,但是使用结肠分离器是建议的形式。

 ...
  --env \"APACHE_SSL_CIPHER_SUITE=ECDHE-ECDSA-AES256-GCM-SHA384 \\
ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-CHACHA20-POLY1305 \\
ECDHE-RSA-CHACHA20-POLY1305 ECDHE-ECDSA-AES128-GCM-SHA256 \\
ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-SHA384 \\
ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA256 \\
ECDHE-RSA-AES128-SHA256\" \\
...
apache_ssl_protocol

使用APACHE_SSL_PROTOCOL环境变量来定义支持的协议。默认协议适用于大多数“中间”用例,但是您可能需要限制例如TLS版本支持。

 ...
  --env \"APACHE_SSL_PROTOCOL=All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1\" \\
...
apache_system_user

使用APACHE_SYSTEM_USER环境变量来定义自定义服务用户名。

 ...
  --env \"APACHE_SYSTEM_USER=app-1\" \\
...
php_options_date_timezone

容器和PHP应用程序的默认时区是UTC,但是操作员可以使用PHP_OPTIONS_DATE_TIMEZONE变量设置合适的时区。价值应该是时区标识符,例如UTC或欧洲/伦敦。有效标识符列表可在受支持时区的PHP列表中找到。

为了为英国设置时区并说明英国夏季时间:您将使用:

 ...
  --env \"PHP_OPTIONS_DATE_TIMEZONE=Europe/London\" \\
...
php_options_session_name,php_options_session_save_handler&php_options_session_sever_save_path

使用PHP_OPTIONS_SESSION_SAVE_HANDLERPHP_OPTIONS_SESSION_SAVE_PATH一起配置php以使用替代session.save_handlersession.save_path 。例如,如果您在默认端口6379上的主机redis-server上运行的redis服务器,以下配置将允许将会话数据存储在REDIS中,从而可以在多个PHP容器之间共享会话数据。

使用PHP_OPTIONS_SESSION_NAME可以定义会话名 – 否则使用默认名称“ phpsessid”。

 ...
  --env \"PHP_OPTIONS_SESSION_NAME=APPSESSID\" \\
  --env \"PHP_OPTIONS_SESSION_SAVE_HANDLER=redis\" \\
  --env \"PHP_OPTIONS_SESSION_SAVE_PATH=redis-server:6379\" \\
...

如果使用文件处理程序,则要设置相对于APACHE_CONTENT_ROOT保存路径,路径值应排除领先/

 ...
  --env \"PHP_OPTIONS_SESSION_SAVE_HANDLER=files\" \\
  --env \"PHP_OPTIONS_SESSION_SAVE_PATH=var/session\" \\
...

下载源码

通过命令行克隆项目:

git clone https://github.com/jdeathe/centos-ssh-apache-php-fcgi.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 centos ssh apache php fcgi https://www.zuozi.net/31758.html

rest api core php html
上一篇: rest api core php html
HstarDoc
下一篇: HstarDoc
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务