源码安装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 相关文章推荐
制作能在nginx和IIS中使用的ssl证书
Jun 21 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
Nginx反向代理学习实例教程
Oct 24 Servers
Nginx源码编译安装过程记录
Nov 17 Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 Servers
nginx刷新页面出现404解决方案(亲测有效)
Mar 18 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
IIS服务器中设置HTTP重定向访问HTTPS
Apr 29 Servers
详解ZABBIX监控ESXI主机的问题
Jun 21 Servers
win sever 2022如何占用操作主机角色
Jun 25 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 Servers
源码安装apache脚本部署过程详解
Sep 23 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
动易数据转成dedecms的php程序
2007/04/07 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
几个判断型的面试题
2012/07/03 面试题
幼儿园亲子活动方案
2014/01/29 职场文书
大学军训感言600字
2014/02/25 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
银行求职自荐信
2014/06/30 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
个人承诺书格式范文
2015/04/29 职场文书
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server
Golang 链表的学习和使用
2022/04/19 Golang