源码安装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的rewrite模块详解
Mar 31 Servers
Linux安装Nginx步骤详解
Mar 31 Servers
查看nginx配置文件路径和资源文件路径的方法
Mar 31 Servers
Nginx配置https原理及实现过程详解
Mar 31 Servers
Nginx配置Https安全认证的实现
May 26 Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 Servers
Nginx的基本概念和原理
Mar 21 Servers
Window server 2012 R2 AD域的组策略相关设置
Apr 28 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
腾讯云服务器部署前后分离项目之前端部署
Jun 28 Servers
Nginx文件已经存在全局反向代理问题排查记录
Jul 15 Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 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与javascript的两种交互方式
2006/10/09 PHP
php eval函数用法总结
2012/10/31 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
python基于ID3思想的决策树
2018/01/03 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
查看django版本的方法分享
2018/05/14 Python
python的继承知识点总结
2018/12/10 Python
python可视化实现代码
2019/01/15 Python
Django实现文件上传下载功能
2019/10/06 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
python中wheel的用法整理
2020/06/15 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
医药大学生求职简历的自我评价
2013/10/17 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
机电系毕业生求职信
2014/07/11 职场文书
公司授权委托书样本
2014/09/15 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
高中班主任心得体会
2016/01/07 职场文书
利用js实现简单开关灯代码
2021/11/23 Javascript