荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 267|回复: 2

docker安装httpd基于apache 二楼有配合php容器的配置

[复制链接]

1374

主题

2504

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10697
发表于 2025-3-17 18:12 | 显示全部楼层 |阅读模式
https://hub.docker.com/_/httpd?tab=tags

我在hub.docker.com里面搜索apache
结果出来的是另外一个东西
我说我找了半天感觉不对劲呢

  1. 先临时运行一下把conf文件复制出来
  2. docker run -it \
  3. -d \
  4. --name httpd \
  5. -v /root/docker/httpd/:/root/docker/httpd/ \
  6. -e TZ=Asia/Shanghai \
  7. --restart unless-stopped \
  8. httpd:latest

  9. 把/usr/local/apache2/路径下面的conf和htdocs文件复制出来
  10. 最后删掉这个docker
  11. ##########################################################################################
  12. 然后编辑conf文件
  13. #############################################
  14. 需要https的话就把下面3行前面的注释去掉

  15. #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  16. ...
  17. #LoadModule ssl_module modules/mod_ssl.so
  18. ...
  19. #Include conf/extra/httpd-ssl.conf

  20. #############################################
  21. 需要VHOST的话就把下面的注释去掉
  22. # Virtual hosts
  23. #Include conf/extra/httpd-vhosts.conf

  24. #############################################
  25. 需要rewrite的话就把下面的注释去掉
  26. #LoadModule rewrite_module modules/mod_rewrite.so

  27. #############################################
  28. 把显示文件列表去掉
  29. AllowOverride All

  30. #############################################
  31. 然后编辑网站的配置文件

  32. 首先
  33. 编辑extra/httpd-vhosts.conf
  34. 默认已经提供了2个网站
  35. DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
  36. DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com"
  37. 需要手动创建文件夹,注意,这个默认的路径不是htdocs,需要手动改为htdocs

  38. 然后
  39. 编辑extra/httpd-ssl.conf
  40. 默认提供了一个网站
  41. DocumentRoot "/usr/local/apache2/htdocs"
  42. ServerName www.example.com:443
  43. 根据需要修改
  44. 貌似这个必须要改好,不然docker无法启动

  45. 和阿里云给的配置文件对比了一下
  46. 只需要改下面几个地方
  47. <VirtualHost _default_:443> 这里改为*:443

  48. DocumentRoot "/usr/local/apache2/htdocs"
  49. ServerName www.example.com:443
  50. ServerAdmin you@example.com
  51. ErrorLog /proc/self/fd/2
  52. TransferLog /proc/self/fd/1 #这个多
  53. 这几个按照对应的改就行

  54. CustomLog /proc/self/fd/1 \
  55. 这个路径改一下

  56. 参考这个配置
  57.     ServerAdmin 123456@qq.com
  58.     DocumentRoot /var/www/html/ryzl/www
  59.     ServerName www.ryzl.com.cn
  60.     ErrorLog logs/www.ryzl.com.cn-error_log
  61.     CustomLog logs/www.ryzl.com.cn-access_log common

  62. 然后把证书路径改好
  63.     SSLCertificateFile /var/www/html/ryzl/zhengshu/ryzl.com.cn_public.crt
  64.     SSLCertificateKeyFile /var/www/html/ryzl/zhengshu/ryzl.com.cn.key
  65.     SSLCertificateChainFile /var/www/html/ryzl/zhengshu/ryzl.com.cn_chain.crt #这个默认是注释掉了的,取消注释

  66. 应该就好了

  67. #############################################

  68. 最后
  69. 开始正式创建
  70. docker run -it \
  71. -d \
  72. --name httpd_13 \
  73. -v /root/docker/httpd/conf/:/usr/local/apache2/conf/ \
  74. -v /root/docker/httpd/htdocs/:/usr/local/apache2/htdocs/ \
  75. -e TZ=Asia/Shanghai \
  76. --network=docker_bridge_192_168_21 --ip=192.168.21.13 \
  77. -p 30080:80 \
  78. -p 30043:443 \
  79. --restart unless-stopped \
  80. httpd:latest

  81. 我临时测试的,端口没用80和443
  82. #############################################

  83. 然后配置好域名解析就可以访问了

  84. #############################################
  85. docker stats
  86. 纯http模式下,内存占用只有不到10M

  87. 重启这个docker就相当于重启了httpd

  88. #############################################

  89. #目前httpd最新的版本是2.4.64
  90. #我的HK阿里云用的是2.4.37

  91. #############################################
复制代码
回复

使用道具 举报

1374

主题

2504

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10697
 楼主| 发表于 2025-7-22 07:44 | 显示全部楼层
  1. 用docker分别运行httpd和php  怎么把php集成到httpd里面
  2. https://www.doubao.com/thread/w4289e7c4abaa8695
  3. 我问了豆包
  4. 结果他回复的 有问题
  5. 最后我查阅了大量资料 总结如下
  6. #############################################
  7. 首先是php的选择

  8. 必须要用带fpm的docker镜像
  9. 然后-v的目录映射必须和httpd一样
  10. 最后最好是固定IP

  11. https://hub.docker.com/_/php
  12. docker pull php:7.2-fpm

  13. docker run -it \
  14. -d \
  15. --name php_14 \
  16. -v /root/docker/httpd/htdocs/:/usr/local/apache2/htdocs/ \
  17. -e TZ=Asia/Shanghai \
  18. --network=docker_bridge_192_168_21 --ip=192.168.21.14 \
  19. --restart unless-stopped \
  20. php:7.2-fpm

  21. docker exec -it php_14 bash
  22. 默认是/var/www/html的目录
  23. cd /usr/local/apache2/htdocs/
  24. 然后直接执行 php phpinfo.php 如果能看到输出就是正常的

  25. #############################################
  26. 然后httpd的配置
  27. 编辑conf文件

  28. # 启用必要的模块
  29. LoadModule proxy_module modules/mod_proxy.so
  30. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

  31. # 服务器根目录的配置 添加下面的那段PHP的
  32. DocumentRoot "/usr/local/apache2/htdocs"
  33. <Directory "/usr/local/apache2/htdocs">
  34.     Options Indexes FollowSymLinks
  35.     AllowOverride All
  36.     Require all granted
  37.    
  38.     # 将 PHP 文件转发到 PHP-FPM
  39.     <FilesMatch \.php$>
  40.         SetHandler "proxy:fcgi://192.168.21.14:9000"
  41.     </FilesMatch>
  42. </Directory>

  43. 把默认页面加上index.php并且放到index.html前面
  44. <IfModule dir_module>
  45.     DirectoryIndex index.php index.html
  46. </IfModule>




  47. 然后重新运行httpd的docker
  48. 确保他们的IP是同一个网段

  49. docker run -it \
  50. -d \
  51. --name httpd_13 \
  52. -v /root/docker/httpd/conf/:/usr/local/apache2/conf/ \
  53. -v /root/docker/httpd/htdocs/:/usr/local/apache2/htdocs/ \
  54. -e TZ=Asia/Shanghai \
  55. --network=docker_bridge_192_168_21 --ip=192.168.21.13 \
  56. -p 30080:80 \
  57. -p 30043:443 \
  58. --restart unless-stopped \
  59. httpd:latest

  60. 注意:必须启动php容器以后才能正常显示php的网页

  61. #############################################

  62. 最后访问就能看到正常的解析了php网页了

  63. #############################################

  64. 怎么添加功能呢 比如php-gd或者数据库连接
  65. 我参考的这个教程
  66. https://www.cnblogs.com/firstlady/p/17636034.html

  67. 如果php容器服务里面还需要安装一些扩展,可以这样操作
  68. 运行命令:docker exec -it 容器ID /bin/bash进入容器,并执行下列命令
  69. docker-php-ext-install mysqli
  70. docker-php-ext-enable mysqli

  71. docker-php-ext-install pdo_mysql
  72. docker-php-ext-enable pdo_mysql

  73. docker-php-ext-install bcmath
  74. docker-php-ext-enable bcmath

  75. docker-php-ext-install gd
  76. docker-php-ext-enable gd


  77. 最后安装discuz 只需要额外的安装
  78. docker-php-ext-install mysqli

  79. 然后重启php容器
  80. 然后在httpd容器里面把bbs目录权限改为777

  81. 之后就可以安装了

  82. #############################################
复制代码
回复 支持 反对

使用道具 举报

1374

主题

2504

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10697
 楼主| 发表于 2025-7-22 08:11 | 显示全部楼层
LAMP的配置

首先创建httpd的容器 做好配置
然后创建php的容器 并安装mysqli扩展
最后创建mariadb的容器

最后就是上传discuz的安装文件
就可以安装了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-9-10 14:17 , Processed in 0.014545 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表