Shell脚本一键进行Apache服务的优化
admin
2023-03-01 17:02:32
0

使用Shell脚本一键进行Apache服务的优化

(包含日志分割、日志文件分析系统、静态资源压缩、设置网页缓存时间、防盗链、系统版本号隐藏)

本次实验使用软件包合集(均为开源软件):链接:https://pan.baidu.com/s/1Byuu3PWgCap85lqfqrA6eA 提取码:x806 请添加链接描述

安装步骤:手工编译安装apache→安装dns服务→进行日志分割→安装日志文件分析系统→对静态资源进行压缩→设施网页缓存时间→防盗链设置→版本号隐藏

#!/bin/bash

yum install bind expect -y
#安装基础DNS及expect免交互

read -p "提供硬盘的IP:" ip
smbclient -L //$ip/ <<-eof

eof
read -p "请输入想挂载的文件夹:" test
mount.cifs -o username="******",password="******" //$ip/$test /mnt
#账户密码请自定义

df -hT | grep -o "cifs" &> /dev/null
if [ $? -eq 0 ];then
  echo "挂载成功,开始安装"
else
  echo "失败,请重来"
  exit 1
fi
#远程挂载

yum -y install \
gcc \
gcc-c++ \
pcre \
pcre-devel \
zlib-devel \
expat-devel
#安装环境包

cd /mnt
tar xjf httpd-2.4.29.tar.bz2 -C /opt
tar zxf apr-1.6.2.tar.gz -C /opt/
tar zxf apr-util-1.6.0.tar.gz -C /opt/
rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm

cd /opt
mv apr-1.6.2/ httpd-2.4.29/srclib/apr
mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util

cd httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-deflate \
--enable-expires \
--enable-rewrite \
--enable-charest-lite \
--enable-cgi 
make && make install
#编译安装

quanju="/etc/named.conf"
quyu="/etc/named.rfc1912.zones"
zhu=`ifconfig ens33 | awk 'NR==2{print $2}'`

sed -i -e "13s/127.0.0.1/any/" -e '21s/localhost/any/' $quanju
sed -i "18azone \"zhy.com\" IN {\n  type master\;\n  file \"zhy.zone\"\;\n}\;\n" $quyu
cp -p /var/named/named.localhost /var/named/zhy.zone
sed -i -e '$d' /var/named/zhy.zone
echo "www  IN A    $zhu" >> /var/named/zhy.zone
#DNS配置

http="/usr/local/httpd/conf/httpd.conf"
sed -i -e '/Listen 80/s/^/#/' -e "/#Listen 12.34.56.78:80/s/#Listen 12.34.56.78:80/Listen $zhu:80/" $http
sed -i '/#ServerName www.example.com/s/#ServerName www.example.com/ServerName www.zhy.com/' $http
cd /usr/local/httpd/bin/
./apachectl start
sed -i '/ErrorLog \"logs\/error_log\"/s/ErrorLog \"logs\/error_log\"/ErrorLog \"\| \/usr\/sbin\/cronolog logs\/www.zhy.com.error_\%Y\%m\%d.log\"/' $http
sed -i '/CustomLog \"logs\/access_log\" common/s/CustomLog \"logs\/access_log\" common/CustomLog \"\| \/usr\/sbin\/cronolog logs\/www.zhy.com.access_\%Y\%m\%d.log\" combined/' $http
#HTTP服务改监听、改域名

ln -s /usr/local/httpd/bin/* /etc/init.d/ 
service apachectl stop
service apachectl start
#日志分割

cd /mnt
tar zxf awstats-7.6.tar.gz
mv awstats-7.6 /usr/local/awstats
cd /usr/local/awstats/tools/
expect <<-eof
    spawn ./awstats_configure.pl

    expect ">" {send "/usr/local/httpd/conf/httpd.conf\r"}
    expect "y/N" {send "y\r"}
    expect ">" {send "www.zhy.com\r"}
    expect ">" {send "\r"}
    expect "continue..." {send "\r"}
    expect "finish..." {send "\r"}
eof
time=`date -d 'today' '+%Y%m%d'`
ls /usr/local/httpd/logs/ | grep "$time"
if [ $? -eq 0 ];then
  sed -i "50s/\/var\/log\/httpd\/mylog.log/\/usr\/local\/httpd\/logs\/www.zhy.com.access_$time.log/" /etc/awstats/awstats.www.zhy.com.conf
fi

sed -i "/LogFormat=1/s/1/4/" /etc/awstats/awstats.www.zhy.com.conf
mkdir /var/lib/awstats
sed -i "/#LoadModule cgid_module modules\/mod_cgid.so/aLoadModule cgid_module modules\/mod_cgid.so" $http
sed -i -e '/Order allow,deny/s/^/#/' -e '/Allow from all/s/^/#/' $http
sed -i '/Allow from all/a    Require all granted' $http
echo "* * 1 * * ls /usr/local/httpd/logs/ | grep $time &> /dev/null && sed -i \"50s/\/var\/log\/httpd\/mylog.log/\/usr\/local\/httpd\/logs\/www.zhy.com.access_$time.log/\" root /etc/awstats/awstats.www.zhy.com.conf" >> /etc/crontab

echo "*/5 * * * * root /usr/local/awstats/tools/awstats_updateall.pl now" >> /etc/crontab
/bin/systemctl reload crond.service
systemctl enable crond
#创建计划性任务

touch /usr/local/httpd/htdocs/houtai.html
echo "" >> /usr/local/httpd/htdocs/houtai.html
echo "  " >> /usr/local/httpd/htdocs/houtai.html
echo "   " >> /usr/local/httpd/htdocs/houtai.html
echo "  " >> /usr/local/httpd/htdocs/houtai.html
echo "  " >> /usr/local/httpd/htdocs/houtai.html
echo "" >> /usr/local/httpd/htdocs/houtai.html
service apachectl stop
service apachectl start
systemctl stop firewalld.service 
setenforce 0
systemctl start named
#日志文件分割系统

cd /mnt
sed -i '/LoadModule deflate_ module modules\/mod_ deflate.so/s/#/ /' $http
echo "" >> $http
echo "    AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript" >> $http
echo "    DeflateCompressionLevel 9" >> $http
echo "    SetOutputFilter DEFLATE" >> $http
echo "" >> $http
#静态资源压缩

sed -i '/LoadModule expires_module/s/#/ /' $http
echo "" >> $http
echo "    ExpiresActive On" >> $http
echo "    ExpiresDefault \"access plus 30 seconds\"" >> $http
echo "" >> $http
#网页缓存时间

sed -i '/LoadModule rewrite_module/s/#/ /' $http
sed -i '248a    RewriteEngine On\n    RewriteCond %{HTTP_REFERER} !^http://zhy.com/.*$ [NC]\n    RewriteCond %{HTTP_REFERER} !^http://zhy.com$ [NC]\n    RewriteCond %{HTTP_REFERER} !^http://www.zhy.com/.*$ [NC]\n    RewriteCond %{HTTP_REFERER} !^http://www.zhy.com/$ [NC]\n    RewriteRule .*\\.(gif|jpg|swf)$ https://cache.yisu.com/upload/information/20200309/28/16809.jpg' $http
#防盗链,防盗图片请放到默认站点htdocs中

sed -i '/httpd-default.conf/s/#/ /' $http
default="/usr/local/httpd/conf/extra/httpd-default.conf"
sed -i '55s/Full/Prod/' $default
#隐藏版本号

service apachectl stop
service apachectl start
echo "本机IP为:$zhu"

相关内容

热门资讯

学习机直播乱象调查:主播打北大... 极目新闻记者 刘闪 何佳仪打开短视频平台,各类学习机测评直播间随处可见。一些自诩自己是“老师”的主播...
即日起,郑州“错峰加油”有优惠... 进入5月,又到了郑州臭氧污染频发的季节,记者从郑州市生态环境局移动源污染监管处了解到,为减少臭氧污染...
汗水写热爱 篮球致青春 成人组1VS1比赛。河南日报全媒体记者 黄晖 摄“非常高兴能够参加这种全民赛事,也希望以后能够有更多...
荷兰六六民主党全国办公室遭爆炸... 荷兰警方7日说,荷兰执政党之一的六六民主党位于海牙的全国办公室当晚遭爆炸物袭击,造成建筑受损,无人受...
樱花树油烟机总是开不了怎么回事 电源问题。先检查电源是否未插上或是否电,若没有,将它重新插好,等待来电后测试,检查开不了机的问题是否...
燃气灶打火后一会就灭是什么原因 原因可能是电池没有电了,所以一开始能够打着火,但是燃烧了一会儿又熄灭了,这种情况下可以尝试更换一节新...
灶盘有气儿,就是高压不打火 这种情况是点火器出了问题,如果点火器无法产生火花,那炉灶盘自然也就不能产生火,通常来说,如果灶台的开...
迅达热水器水流小怎么办 当你发现迅达热水器水流小时,可能会感到烦恼。然而,这个问题通常是很容易解决的。以下是一些可能导致水流...
迅达燃气灶打不着火 1、打火时看一下会不会有火花出来,如果没有火花就是电池没有电导致的打不着火。2、也有可能是迅达燃气灶...