Docker编译安装httpd

目录

Docker编译安装httpd

拉取Centos镜像

配置yum源

安装httpd

配置文件

写service文件

删除多余文件及卸载不用的包

镜像制作

上传镜像


使用容器运行httpd可以直接拉去官方Apache的镜像,而想要在容器中实现httpd源码安装那就得拉一个Centos的镜像然后自己在Centos中进行源码安装。

当然,如果找得到已经做好了的镜像也行,这就是Docker的一大特色。

拉取Centos镜像

 [root@master ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZEmysql        5.7       3147495b3a5c   13 days ago   431MB[root@master ~]# docker pull centos:7  #拉取镜像7: Pulling from library/centos2d473b07cdd5: Pull complete Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407Status: Downloaded newer image for centos:7docker.io/library/centos:7  [root@master ~]# docker run -itd --name httpd centos:7   #启动198be6cd882f76b6517acb7e206c0a9af6113466e78147c0663cfbe69b336b1e[root@master ~]# [root@master ~]# docker ps #这里看到容器已经在运行了CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES198be6cd882f   centos:7   "/bin/bash"   58 seconds ago   Up 57 seconds             httpd[root@master ~]# docker exec -it httpd /bin/bash#进入容器 这个命令的意思就是在httpd容器中开启一个交互模式的终端[root@198be6cd882f /]# lsanaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  varbin                etc  lib   media  opt  root  sbin  sys  usr[root@198be6cd882f /]# 

配置yum源

 [root@198be6cd882f /]# cd /etc/yum.repos.d/[root@198be6cd882f yum.repos.d]# lsCentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repoCentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo    CentOS-x86_64-kernel.repo[root@198be6cd882f yum.repos.d]# rm -rf *[root@198be6cd882f yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed100  2523  100  2523    0     0   9238      0 --:--:-- --:--:-- --:--:--  9275#这是用的阿里源[root@198be6cd882f yum.repos.d]# lsCentOS-Base.repo[root@198be6cd882f yum.repos.d]# 

安装httpd

 [root@198be6cd882f yum.repos.d]# useradd -r -M -s /sbin/nologin apache      #创建用户 [root@198be6cd882f yum.repos.d]# yum -y install openssl-devel pcre-devel make expat-devel wget vim gcc gcc-c++ libtool          #安装需要使用的wget和httpd相关依赖包​[root@198be6cd882f ~]# wget https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz[root@198be6cd882f ~]# wget https://downloads.apache.org/apr/apr-1.6.5.tar.gz[root@198be6cd882f ~]#  wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz[root@198be6cd882f ~]# lsanaconda-ks.cfg  apr-1.6.5.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz#ok[root@198be6cd882f ~]# tar -xf apr-1.6.5.tar.gz [root@198be6cd882f ~]# tar -xf apr-util-1.6.1.tar.gz [root@198be6cd882f ~]# tar -xf httpd-2.4.54.tar.gz [root@198be6cd882f ~]# cd apr-1.6.5[root@198be6cd882f apr-1.6.5]# ./configure --prefix=/usr/local/apr[root@198be6cd882f apr-1.6.5]# make && make install[root@198be6cd882f ~]# cd apr-util-1.6.1[root@198be6cd882f apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/[root@198be6cd882f apr-util-1.6.1]# make && make install[root@198be6cd882f ~]# cd httpd-2.4.54[root@198be6cd882f httpd-2.4.54]#  ./configure --prefix=/usr/local/apache --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre  --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork && make &&make install

配置文件

 [root@198be6cd882f ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh[root@198be6cd882f ~]# source /etc/profile.d/apache.sh [root@198be6cd882f ~]# which httpd/usr/local/apache/bin/httpd[root@198be6cd882f ~]# ln -s /usr/local/apache/include/ /usr/include/apache[root@198be6cd882f ~]#  ll /usr/include/|grep apachelrwxrwxrwx.  1 root root     26 Aug  9 01:31 apache -> /usr/local/apache/include/​

写service文件

 [root@198be6cd882f ~]# cd /etc/systemd/system/[root@198be6cd882f system]# lsdefault.target        getty.target.wants       system-update.target.wantsdefault.target.wants  multi-user.target.wants[root@198be6cd882f system]# cd /etc/systemd/system[root@198be6cd882f system]# vim httpd.service[root@198be6cd882f system]# cat httpd.service[Unit]Description=httpd server daemonDocumentation=man:httpd(8)After=network.target ​[Service]Type=forkingExecStart=/usr/local/apache/bin/apachectl startExecStop=/usr/local/apache/bin/apachectl stop#上两个start和stop路径不绝对,倘若安装过程中改变了文件位置可以使用命令找一下find / -name apachectl/root/httpd-2.4.54/support/apachectl/usr/local/apache/bin/apachectl​ExecReload=/bin/kill -HUP $MAINPID​[Install]WantedBy=multi-user.target[root@198be6cd882f system]# ​​[root@198be6cd882f ~]# cd /usr/local/apache/[root@198be6cd882f apache]# lsbin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules[root@198be6cd882f apache]# cd htdocs/#这里就是httpd默认显示页面存放路径.可以改index.html中的文件内容.[root@198be6cd882f htdocs]# lsindex.html[root@198be6cd882f htdocs]# echo "hhhhhhhh" index.html hhhhhhhh index.html[root@198be6cd882f htdocs]# echo "hhhhhhhh" >> index.html [root@198be6cd882f htdocs]# cat index.html <html><body><h1>It works!</h1></body></html>hhhhhhhh[root@198be6cd882f htdocs]# ​---------------#启动服务并设置开机自启[root@198be6cd882f ~]# apachectl startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message[root@198be6cd882f ~]# systemctl start httpd[root@198be6cd882f ~]# ss -antlState      Recv-Q Send-Q   Local Address:Port                  Peer Address:Port              LISTEN     0      128                  *:80                               *:*                  [root@198be6cd882f ~]# ​写一个启动脚本,以便后面启动用[root@198be6cd882f bin]# vi /httpd.sh [root@198be6cd882f bin]# cat /httpd.sh #!/bin/bash/usr/local/apache/bin/apachectl[root@198be6cd882f bin]# chmod +x /httpd.sh [root@198be6cd882f bin]# ll / |grep httpd-rwxr-xr-x.   1 root root    44 Aug  9 02:06 httpd.sh[root@198be6cd882f bin]# ​

删除多余文件及卸载不用的包

保持docker 的优点,尽量做到减少资源消耗.

 [root@198be6cd882f ~]# lsanaconda-ks.cfg  apr-1.6.5.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gzapr-1.6.5        apr-util-1.6.1    httpd-2.4.54[root@198be6cd882f ~]# rm -rf apr*[root@198be6cd882f ~]# rm -rf httpd*[root@198be6cd882f ~]# lsanaconda-ks.cfg[root@198be6cd882f ~]# [root@198be6cd882f ~]# yum  -y remove gcc make wget vim ​

镜像制作

 #在创建镜像的时候,容器不能关闭,必须使其处于允许状态,所以我们必须另起一个终端.[root@198be6cd882f bin]# vi /httpd.sh [root@198be6cd882f bin]# cat /httpd.sh #!/bin/bash/usr/local/apache/bin/apachectl[root@198be6cd882f bin]# chmod +x /httpd.sh [root@198be6cd882f bin]# ll / |grep httpd-rwxr-xr-x.   1 root root    44 Aug  9 02:06 httpd.sh[root@198be6cd882f bin]# [root@master ~]# docker commit -a '1264218057@qq.com' -m 'Source code installation' -c 'CMD ["/httpd.sh"]' -p httpd httpd:v0.1#这里当时写的那个shell脚本就用上了sha256:fddaa12cf47117d3ccbcbb2ee63ed8c802b73985b58e85423dbc208c8c7cf269[root@master ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED          SIZEhttpd        v0.1      fddaa12cf471   13 seconds ago   708MBmysql        5.7       3147495b3a5c   13 days ago      431MBcentos       7         eeb6ee3f44bd   10 months ago    204MB[root@master ~]# [root@master ~]# docker psCONTAINER ID   IMAGE      COMMAND       CREATED             STATUS             PORTS     NAMES198be6cd882f   centos:7   "/bin/bash"   About an hour ago   Up About an hour             httpd[root@master ~]# docker run -itd --name httpd1 -p 80:80 httpd:v0.1[root@master ~]# docker inspect #这个命令里面找ip[root@master ~]# curl 172.17.0.2<html><body><h1>It works!</h1></body></html>hhhhhhhh​[root@master ~]# docker psCONTAINER ID   IMAGE        COMMAND            CREATED          STATUS          PORTS     NAMES30d67b240b9c   httpd:v2     "/root/httpd.sh"   3 minutes ago    Up 3 minutes              httpds​

上传镜像

 [root@master ~]# docker imagesREPOSITORY          TAG       IMAGE ID       CREATED          SIZEtangyuxuan1/httpd   v3        02ac9597a898   58 seconds ago   708MBhttpd               v2        d8966f4bf114   20 minutes ago   708MBcentos              0.1       c857bc039f0e   39 minutes ago   708MBhttpd               v0.1      fddaa12cf471   58 minutes ago   708MBmysql               5.7       3147495b3a5c   13 days ago      431MBcentos              7         eeb6ee3f44bd   10 months ago    204MB[root@master ~]# docker push tangyuxuan1/httpd:v3The push refers to repository [docker.io/tangyuxuan1/httpd]313a85b5213a: Pushed af3cf1502ecd: Pushed bd30f621044a: Pushed 174f56854903: Pushed v3: digest: sha256:2f7663a5ab7810cf0f69f8495cd9654e7566d6bb67c0705edee77a744accca2c size: 1158[root@master ~]# ​

使用命令:

docker run -d --name httpd12 -p 88:80 tangyuxuan1/httpd:v3

[root@master ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS         PORTS                               NAMES
d34943fb9f3f   tangyuxuan1/httpd:v3   "/root/httpd.sh -f -…"   38 minutes ago   Up 7 minutes   0.0.0.0:88->80/tcp, :::88->80/tcp   httpd12

报错:

 docker中安装完httpd服务后,使用命令systemctl start httpd.service,发现报错,错误信息:Failed to get D-Bus connection: Operation not permitted 解决方法:使用命令docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init创建容器,然后使用docker exec -it centos7 /bin/bash进入容器apachectl startAH00112: Warning: DocumentRoot [/usr/local/apache/docs/dummy-host2.example.com] does not exist原因:配置文件有误进入提示路径修改多余配置内容.

Docker编译安装httpd相关推荐

  1. LAMP架构之编译安装httpd+(php-fpm)+mariadb

    php-fpm: CentOS 6: PHP-5.3.2-:默认不支持fpm机制:需要自行打补丁并编译安装: httpd-2.2:默认不支持fcgi协议,需要自行编译此模块: 解决方案:编译安装htt ...

  2. 源码编译安装httpd服务

    1 概述 很多软件没有发布rpm包,而是直接发布了源码,好处是这样能兼容更多的平台,但是,用户需要对源码进行编译后安装.利用工具make将源码生成二进制文件. 本文主要讲解了对httpd进行编译安装. ...

  3. 编译安装httpd,并启动之

    首先查看系统有没httpd,如有将其卸载. root@ localhost ~]# rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64 [root@ loca ...

  4. Linux文件查找与tar包管理、企业级sed应用 软件包管理与编译安装httpd

    总结 第7节 Linux文件查找与tar包管理.企业级sed应用 使用locate命令 使用find命令 压缩和解压缩工具 01-文件搜索 locate (00:02:30) locate test. ...

  5. 源码编译安装httpd及其常见错误

    一.编译安装的整体步骤 1.在官网下载源码,并解压 2.切换到其目录中 3.执行./configure 4.编译 二.编译中及安装后配置常见的参数及其说明 编译中配置 1)指定安装路径 --prefi ...

  6. centos下LAMP之源码编译安装httpd

    1 最好先安装组件 [root@localhost ~]# yum groupinstall additional development [root@localhost ~]# yum groupi ...

  7. Docker - 编译安装nginx镜像

    目录 知识点1:制作镜像的常用指令 RUN和CMD/ENTRYPOINT的区别 首先需要一个安装nginx的脚本 制作Dockerfile 开始制作镜像 查看镜像是否制作成功 启动一个容器来测试镜像 ...

  8. 编译安装LAMP之配置httpd以FastCGI方式与php整合

    一.编译安装httpd(httpd 2.4.4,相关软件包可到apache官网上下载) # hwclock -s 将软件时间同步为硬件时间,防止安装软件时出错 1.解决依赖关系 httpd-2.4.4 ...

  9. LAMP编译安装之———httpd

    LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据 库,Perl.PHP或者Pytho ...

  10. linux下编译httpd,Linux下编译安装Apache httpd 2.4

    Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.当前Apache版本为2.4,本文主要描 ...

最新文章

  1. 洛谷 - P1433 - 吃奶酪 - dfs
  2. matlab指纹图像采集,基于MATLAB实现的指纹图像预处理
  3. 文献记录(part28)--A rotation and scale invariant approach for multi-oriented floor plan image ...
  4. springboot导入项目依赖报错_最详细的 Spring Boot 多模块开发与排坑指南
  5. centos6.5 python2.6.6升级到python2.7.15
  6. 富士康筹划在越南建造2.7亿美元新工厂,扩大生产线!
  7. VB删除带子文件夹和文件的文件夹
  8. 不止音箱,百度还发布了这些AI产品,还有参会者的10个小建议
  9. win7安装mysql后“应用程序无法启动因为应用程序的并行配置不正
  10. 《宏观经济学》第一章
  11. 如何用c语言强制删除文件夹,c++ - 使用C ++在Windows上强制删除文件 - 堆栈内存溢出...
  12. Android 传感器篇:(一)方向传感器
  13. Redis设计与实现 -- 浅谈Redis持久化
  14. 仙剑奇侠传四服务器维护,《仙剑奇侠传四》无法登录怎么办_无法登录解决办法_3DM手游...
  15. vue.使用popstate监听点击浏览器自带返回按钮
  16. DNS发生错误导致网页打不开
  17. 怎么提高App推广效率
  18. Manage images
  19. 黄金发展期已远,蜻蜓、荔枝、喜马拉雅们下一个增长点何在?
  20. Android Studio中的手机通讯录开发

热门文章

  1. 苹果手机换品胜电池后还能保持峰值状态吗?
  2. GPU与CPU的区别
  3. tensorflow中gpu和cpu切换
  4. 2021年总结:回顾这不平凡的一年
  5. 软件设计师必考精华 - 面相对象
  6. OSError: inotify watch limit reached
  7. Angular快速上手
  8. Android文字转语音引擎(TTS)简单比较及下载
  9. 跳马周游c++_c++广搜法跳马问题(队列)
  10. HJ82 将真分数分解为埃及分数 —— 华为机考练习题