Docker编译安装httpd
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/apachectlExecReload=/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相关推荐
- LAMP架构之编译安装httpd+(php-fpm)+mariadb
php-fpm: CentOS 6: PHP-5.3.2-:默认不支持fpm机制:需要自行打补丁并编译安装: httpd-2.2:默认不支持fcgi协议,需要自行编译此模块: 解决方案:编译安装htt ...
- 源码编译安装httpd服务
1 概述 很多软件没有发布rpm包,而是直接发布了源码,好处是这样能兼容更多的平台,但是,用户需要对源码进行编译后安装.利用工具make将源码生成二进制文件. 本文主要讲解了对httpd进行编译安装. ...
- 编译安装httpd,并启动之
首先查看系统有没httpd,如有将其卸载. root@ localhost ~]# rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64 [root@ loca ...
- Linux文件查找与tar包管理、企业级sed应用 软件包管理与编译安装httpd
总结 第7节 Linux文件查找与tar包管理.企业级sed应用 使用locate命令 使用find命令 压缩和解压缩工具 01-文件搜索 locate (00:02:30) locate test. ...
- 源码编译安装httpd及其常见错误
一.编译安装的整体步骤 1.在官网下载源码,并解压 2.切换到其目录中 3.执行./configure 4.编译 二.编译中及安装后配置常见的参数及其说明 编译中配置 1)指定安装路径 --prefi ...
- centos下LAMP之源码编译安装httpd
1 最好先安装组件 [root@localhost ~]# yum groupinstall additional development [root@localhost ~]# yum groupi ...
- Docker - 编译安装nginx镜像
目录 知识点1:制作镜像的常用指令 RUN和CMD/ENTRYPOINT的区别 首先需要一个安装nginx的脚本 制作Dockerfile 开始制作镜像 查看镜像是否制作成功 启动一个容器来测试镜像 ...
- 编译安装LAMP之配置httpd以FastCGI方式与php整合
一.编译安装httpd(httpd 2.4.4,相关软件包可到apache官网上下载) # hwclock -s 将软件时间同步为硬件时间,防止安装软件时出错 1.解决依赖关系 httpd-2.4.4 ...
- LAMP编译安装之———httpd
LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据 库,Perl.PHP或者Pytho ...
- linux下编译httpd,Linux下编译安装Apache httpd 2.4
Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.当前Apache版本为2.4,本文主要描 ...
最新文章
- 洛谷 - P1433 - 吃奶酪 - dfs
- matlab指纹图像采集,基于MATLAB实现的指纹图像预处理
- 文献记录(part28)--A rotation and scale invariant approach for multi-oriented floor plan image ...
- springboot导入项目依赖报错_最详细的 Spring Boot 多模块开发与排坑指南
- centos6.5 python2.6.6升级到python2.7.15
- 富士康筹划在越南建造2.7亿美元新工厂,扩大生产线!
- VB删除带子文件夹和文件的文件夹
- 不止音箱,百度还发布了这些AI产品,还有参会者的10个小建议
- win7安装mysql后“应用程序无法启动因为应用程序的并行配置不正
- 《宏观经济学》第一章
- 如何用c语言强制删除文件夹,c++ - 使用C ++在Windows上强制删除文件 - 堆栈内存溢出...
- Android 传感器篇:(一)方向传感器
- Redis设计与实现 -- 浅谈Redis持久化
- 仙剑奇侠传四服务器维护,《仙剑奇侠传四》无法登录怎么办_无法登录解决办法_3DM手游...
- vue.使用popstate监听点击浏览器自带返回按钮
- DNS发生错误导致网页打不开
- 怎么提高App推广效率
- Manage images
- 黄金发展期已远,蜻蜓、荔枝、喜马拉雅们下一个增长点何在?
- Android Studio中的手机通讯录开发