Shell脚本部署Apache

Shell脚本部署Apache


思路:先把所有需要更改的配置文件都操作做完在进行编译安装。

1、去Apache官网下载源码包

apr: https://dlcdn.apache.org/apr/apr-1.7.0.tar.gz
apr-uilt: https://dlcdn.apache.org/apr/apr-util-1.6.1.tar.gz
httpd: https://dlcdn.apache.org/httpd/httpd-2.4.48.tar.bz2
先创建一个名为Apache目录,在目录中在创建一个名为apache.sh 的脚本和lost的目录,然后把刚刚下载的三个包移动到lost这个目录中。

2、编写shell文件

编写开始:

#!/bin/bash

install_httpd=/usr/local/httpd      //设置一个变量,改变量是http编译安装的位置

//下载所需的软件包
yum groups mark install 'Development Tools'    
yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make

//创建apache用户
id apache &> /dev/null      //把id apache的返回值放到回收站中
if [ $? -ne 0  ];then
//根据上个命令的返回值来和0比较,判断是否和0相等,如果不相等则表示没有这个用户,需要创建。
如果相等表示有这个用户直接掉过。
        useradd -r -M -s /sbin/nologin  apache
//创建apache用户,-r: 建立系统用户  -M: 不要自动建立用户的登入目录 -s: 指定登陆shellhe              
fi

//切换到放置压缩包的位置
cd /root/install/lost     
tar xf apr-util-1.6.1.tar.gz -C /usr/src    //把解压后的文件放到 /usr/src下
tar xf httpd-2.4.48.tar.gz  -C /usr/src
tar xf lost/apr-1.7.0.tar.gz -C /usr/src

cd /usr/src/apr-1.7.0
sed -i '/$RM "$cfgfile"/d' configure  
//删除configure文件中的“$RM "$cfgfile"” ,d表示删除  -i:直接修改文件内容

cd /usr/src/apr-1.7.0
if [ ! -d /usr/local/apr ];then 
//取反判断是否没有这个目录,没有则执行下面的编译,如果有则跳过
       ./configure --prefix=/usr/local/apr && make && make install
fi

cd /usr/src/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
fi

//http的编译安装
cd /usr/src/httpd-2.4.48
if [ ! -d $install_httpd ];then
         ./configure --prefix=$install_httpd \
                 --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
fi

//修改httpd的配置文件,把文件中的#号删掉或者注释
sed -i "/#ServerName/s/#//" $install_httpd/conf/httpd.conf       

//添加环境变量
echo "export PATH=$install_httpd/bin:\$PATH" > /etc/profile.d/httpd.sh

//配置httpd.service配置文件,这个就可以用户systemctl控制了。
所有源码安装的服务都不能用systemctl控制,所以需要写一个配置文件。
这个配置文件模板默认是在/usr/lib/systemd/system/sshd.service,直接复制过来修改即可。
cat > /usr/lib/systemd/system/httpd.service <<EOF
[Unit]
Description=httpd server daemon    //描述信息 这是httpd服务的守护进程
After=network.target       //网卡开启时启动

[Service]
Type=forking
ExecStart=$install_httpd/bin/apachectl start     //启动
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload     //重新加载配置
systemctl enable --now httpd  //设置httpd服务开机自启和启动

3、检测

[root@localhost ~]# ss -antl
State      Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     
LISTEN     0           128                    0.0.0.0:22                  0.0.0.0:*        
LISTEN     0           128                          *:80                        *:*        
LISTEN     0           128                       [::]:22                     [::]:*        

[root@localhost ~]# systemctl status httpd.service     //查看Apache状态
● httpd.service - httpd server daemon
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-09-14 18:41:01 CST; 42s ago      //running(运行)
  Process: 1369771 ExecStart=/usr/local/httpd/bin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 1369774 (httpd)
    Tasks: 6 (limit: 11300)
   Memory: 5.0M
   CGroup: /system.slice/httpd.service
           ├─1369774 /usr/local/httpd/bin/httpd -k start
           ├─1369775 /usr/local/httpd/bin/httpd -k start
           ├─1369776 /usr/local/httpd/bin/httpd -k start
           ├─1369777 /usr/local/httpd/bin/httpd -k start
           ├─1369778 /usr/local/httpd/bin/httpd -k start
           └─1369779 /usr/local/httpd/bin/httpd -k start

9月 14 18:41:01 localhost.localdomain systemd[1]: Starting httpd server daemon...
9月 14 18:41:01 localhost.localdomain systemd[1]: Started httpd server daemon.

//此时Apache已经启动并且是开机自启
上一篇:Web服务器集群——部署LAMP平台


下一篇:Linux下安装与配置apache,PHP