源码安装apache脚本部署过程详解


Posted in Servers onSeptember 23, 2022

源码安装apache脚本部署

[root@localhost ~]# ls
anaconda-ks.cfg  httpd.tar.xz
[root@localhost ~]# tar xf httpd.tar.xz  解压存放脚本的压缩包
[root@localhost ~]# ls
anaconda-ks.cfg  httpd  httpd.tar.xz
[root@localhost ~]# cd httpd/
[root@localhost httpd]# ls
apache_lnh.sh(编译安装apache脚本)  config.sh(附属脚本)  files
[root@localhost httpd]# ls files/    //存放安装包的目录
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.53.tar.gz  httpd-2.4.54.tar.gz  zhuawawa(源码包的目录)
[root@localhost httpd]# cat apache_lnh.sh 
#/bin/bash

#列出httpd版本号进行选择
cat > /tmp/xbz.txt <<EOF
请输入要安装的版本序号:
1. 2.4.54
2. 2.4.53
q. 退出

EOF
cat /tmp/xbz.txt
read -p "选择版本号"  apache_version
case $apache_version in
        1)
        apache_version=$(awk 'NR==2{print $2}'  /tmp/xbz.txt)
        echo $apache_version
        ;;
        2)
        apache_version=$(awk 'NR==3{print $2}'  /tmp/xbz.txt)
        echo $apache_version
        ;;
        q)
        apache_version=$(awk 'NR==4{print $2}'  /tmp/xbz.txt)
        echo $apache_version
        exit
        ;;
        *)
        echo "错误输入"
        exit
esac
#设置执行权限
if [ $UID -ne 0 ];then
        echo "请以管理员用户进行执行"
        exit
fi
#定义变量
install_dir=/usr/local/apache
#创建用户
id apache &> /dev/null
if [ $? -ne 0 ];then
            useradd -r -M -s /sbin/nologin apache
    else
            echo "用户已存在"
fi
#安装依赖包
dnf -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ wget make vim  zip --allowerasing
#解压源码包
rm -rf /tmp/*
tar xf files/apr-1.7.0.tar.gz -C /tmp/
tar xf files/apr-util-1.6.1.tar.gz -C /tmp/
tar xf files/httpd-$apache_version.tar.gz -C /tmp/
#编译安装apr
cd /tmp/apr-1.7.0
if [ ! -d /usr/local/apr ];then
sed -i '/$RM "$cfgfile"/d' configure
./configure --prefix=/usr/local/apr && \
make && make install    
else
        ls /usr/local
        echo "apr 编译安装完成"
fi
#编译安装apr-util
cd ../apr-util-1.6.1/
if [ ! -d /usr/local/apr-util ];then
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
make && make install
else
         ls /usr/local/
         echo "apr-util 编译安装完成"       
fi
#编译安装httpd
cd ../httpd-$apache_version/
if [ ! -d ${install_dir} ];then
            ./configure --prefix=${install_dir} \
                    --enable-so \
                    --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    
else
          ls ${install_dir}
          echo "httpd 编译安装完成"
fi
#设置环境变量,man文档,头文件
echo "export PATH=${install_dir}/bin:\$PATH" > /etc/profile.d/apache.sh
ln -s ${install_dir}/include /usr/include/apache &> /dev/null
grep 'apache' /etc/man_db.conf &> /dev/null
if [ $? -ne 0 ];then
            sed -i "22a MANDATORY_MANPATH                       ${install_dir}/man" /etc/man_db.conf
fi
#将其加入systemd服务里面
cat > /usr/lib/systemd/system/httpd.service <<EOF
[Unit]
Description=httpd server daemon
After=network.target

[Service]
Type=forking
ExecStart=${install_dir}/bin/apachectl start
ExecStop=${install_dir}/bin/apachectl stop
ExecReload=/bin/kill -HUP \$MAINPID

[Install]
WantedBy=multi-user.target
EOF
#加载文件并设置开机自启
systemctl daemon-reload
systemctl enable --now httpd
#查看端口
ss -antl
[root@localhost httpd]# cat config.sh 
#!/bin/bash

#定义变量
install_dir=$(grep '^install_dir=' apache_lnh.sh  | awk -F'=' '{print $2}' )
echo $install_dir

#添加包含虚拟主机
grep 'Include conf/extra/httpd-vhosts.conf' $install_dir/conf/httpd.conf &> /dev/null
if [ $? -eq 0 ];then
        echo "Include conf/extra/httpd-vhosts.conf" >> $install_dir/conf/httpd.conf
fi
#配置虚拟主机
cat > $install_dir/conf/extra/httpd-vhosts.conf <<EOF
<VirtualHost *:80>
    DocumentRoot "$install_dir/htdocs/zhuawawa.example.com"
    ServerName zhuawawa.example.com
    ErrorLog "logs/zhuawawa.example.com-error_log"
    CustomLog "logs/zhuawawa.example.com-access_log" common
</VirtualHost>
EOF
#添加防火墙规则
firewall-cmd --add-rich-rule 'rule family=ipv4 source address=0.0.0.0/0 port port=80 protocol=tcp accept' --permanent &> /dev/null
firewall-cmd --reload
#创建网站存放目录
mkdir -p $install_dir/htdocs/zhuawawa.example.com
cp -r files/zhuawawa/* $install_dir/htdocs/zhuawawa.example.com

#重启httpd
systemctl restart httpd
#查看端口
ss -antl
[root@localhost httpd]# ls
apache_lnh.sh  config.sh  files
[root@localhost httpd]# ls files/
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.53.tar.gz  httpd-2.4.54.tar.gz  zhuawawa(提前将源码包解压到这里)
[root@localhost httpd]# ls files/zhuawawa/  (此处是我解压的源码包)
Battle_City  audio  css  images  index.html  js  tk.zip

进行访问:

源码安装apache脚本部署过程详解

[root@localhost ~]# tar -Jcf httpd.tar.xz httpd/  //压缩脚本存放目录
[root@localhost ~]# ls
anaconda-ks.cfg  httpd  httpd.tar.xz

到此这篇关于源码安装apache脚本部署的文章就介绍到这了,更多相关源码安装apache内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
apache基于端口创建虚拟主机的示例
Apr 24 Servers
使用goaccess分析nginx日志的详细方法
Jul 09 Servers
总结高并发下Nginx性能如何优化
Nov 01 Servers
Nginx图片服务器配置之后图片访问404的问题解决
Mar 21 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
nginx配置之并发频次限制
Apr 18 Servers
Apache Hudi 加速传统的批处理模式
Apr 24 Servers
Windows server 2012 R2 安装IIS服务器
Apr 29 Servers
安装harbor作为docker镜像仓库的问题
Jun 14 Servers
nginx配置指令之server_name的具体使用
Aug 14 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 Servers
ubuntu端向日葵键盘输入卡顿问题及解决
Dec 24 Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 #Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Apache SkyWalking 监控 MySQL Server 实战解析
Sep 23 #Servers
服务器nginx权限被拒绝解决案例
Sep 23 #Servers
Fluentd搭建日志收集服务
Sep 23 #Servers
Flink 侧流输出源码示例解析
Sep 23 #Servers
修改Nginx配置返回指定content-type的方法
Sep 23 #Servers
You might like
迅速确定php多维数组的深度的方法
2014/01/07 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
实例讲解php数据访问
2016/05/09 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
浅谈Python协程
2020/06/17 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
初三学生个人自我评定
2014/04/06 职场文书
关键在于落实心得体会
2014/09/03 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
文艺委员竞选稿
2015/11/19 职场文书