环境部署:
本次实验以redhat6.5系统为安装对象,(CentOS其他系列也可以)
安装Apache源码包 httpd-2.4.29.tar.bz2
依赖包 pcre-8.41.tar.gz, apr-1.6.3.tar.bz2 , apr-util-1.6.1.tar.bz2
获取安装包链接:百度云盘
https://pan.baidu.com/s/1HPvV68ICTHkNf-ty1VGXyw
https://pan.baidu.com/s/1h3LBtqCMEAcEugAx6YczGg
在安装之前卸载掉使用rpm方式安装的httpd
rpm -q httpd #查看系统是否安装有httpd
yum -y remove httpd #卸掉rpm安装的httpd
解压源码包及依赖包
tar xzvf /root/pcre-8.41.tar.gz -C /opt
tar xjvf /root/apr-1.6.3.tar.bz2 -C /opt
tar xjvf /root/apr-util-1.6.1.tar.bz2 -C /opt
tar xjvf /root/httpd-2.4.29.tar.bz2 -C /opt
将依赖包移动到httpd-2.4.29/srclib/目录中
使用yum命令安装配置编译环境组件,gcc gcc-c++ expat-devel pcre-devel
进入到httpd-2.4.29/目录中,进行配置编译安装。
根据服务器的实际应用需要,进行配置时可以灵活设置不同的定制选项,,如指定安装路径,启用字符集支持等,若要详细知道可用的各种配置选项及含义,可以执行“./configure --help”
cd /opt/httpd-z.4.29
./configure \
--prefix=/usr/local/httpd \ #指定安装路径
--enable-expires \ #启用缓存模块mod_exprices
--enable-so \ #启用动态加载模块
--with-mpm=worker \ #更改apache运行模式为worker
--enable-rewrite \ #支持网站地址重写
--enable-charset-lite \ #启用字符集支持
--enable-cgi #启用CGI脚本程序支持
make && make install
确认安装结果
由于指定的安装目录为/usr/local/httpd ,因此httpd服务的各种程序,模块,帮助文件,配置文件等都将复制到此目录下。
在安装后的/usr/local/httpd目录下,主要子目录的用途如下
bin:存放httpd服务的各种执行程序文件,包括主程序httpd,服务控制工具apachectl等
conf;存放httpd服务的各种配置文件,包括主配置文件httpd,conf,增强配置子目录extra等
htdocs;存放网页文档,包括默认首页文件index.html等
logs;存放httpd服务的日志文件
modules;存放httdp服务的各种模块文件
cgi-bin;存放各种CGI程序文件
优化执行路径,添加httpd为系统服务,使其可以使用service命令进行管理
通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时方便,可以将其添加为系统服务,以便通过chkconfig进行管理。将apachectl脚本重定向为/etc/init.d/httpd ,并在文件开头添加chkconfig识别配置,然后再将其添加为标准的系统服务。
grep -v "#" bin/apachectl >/etc/init.d/httpd
vim /etc/init.d/httpd
#!/bin/bash #shell脚本必要注释
#chkconfig:2345 85 35 #服务识别参数,在级别2345中启动;启动和关闭的顺序分别为85,35
#description:Apache is a web server #服务描述信息
chmod 755 /etc/init.d/httpd #给服务脚本赋予执行权限
chkconfig --add httpd #将httpd加入系统服务
chkconfig httpd on #设置httpd开机自启
ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf #给主配置文件httpd.conf生成一个链接文件,方便操作
这样可以使用service命令管理httpd服务了
service httpd start #开启
service httpd stop #关闭
service httpd restart #重启
更改apache的主配置文件httpd.conf
vim /etc/httpd.conf
Listen 192.168.30.15:80
#Listen 80ServerName www.example.com:80
关闭防火墙,selinux功能
在浏览器中输入ip 进行访问,可以看到apache的默认首页。
为了以后安装方便,整理出一个apache安装脚本。
vim apache.sh
#!/bin/bash
#this is apachedate
#判断光盘是否挂载
df -h | grep /mnt >/dev/null
if [ $? -ne 0 ]
then
mount /dev/sr0 /mnt >/dev/null
fi
#创建yum仓库
rm -rf /etc/yum.repos.d/*
echo -e "[a]\nname=test\nbaseurl=file:///mnt\nenabled=1\ngpgcheck=0" >/etc/yum.repos.d/a.repo
yum -y install gcc gcc-c++ expat-devel make pcre-devel &>/dev/null
tar xzvf /root/pcre-8.41.tar.gz -C /opt &>/dev/null
tar xjvf /root/apr-1.6.3.tar.bz2 -C /opt &>/dev/null
tar xjvf /root/apr-util-1.6.1.tar.bz2 -C /opt &>/dev/null
tar xjvf /root/httpd-2.4.29.tar.bz2 -C /opt &>/dev/null
cd /opt
mv apr-1.6.3/ httpd-2.4.29/srclib/apr
mv apr-util-1.6.1/ httpd-2.4.29/srclib/apr-util
mv pcre-8.41/ httpd-2.4.29/srclib/pcre
#进入到apache目录进行配置,编译安装
cd httpd-2.4.29/
./configure --prefix=/usr/local/httpd --enable-rewrite --enable-mods-shared=most --with-mpm=worker --enable-charset-lite --enable-so --enable-cgi
make && make install &>/dev/null
#优化执行路径,加入httpd到系统服务
grep -v "#" /usr/local/httpd/bin/apachectl >/etc/init.d/httpd
sed -i '1i #!/bin/bash\n#chkconfig:2345 80 40\n#description:apache is a web server' /etc/init.d/httpd
chkconfig --add httpd
chkconfig httpd on
ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
#监听地址根据实际情况进行更改
sed -i '51c Listen 192.168.30.15:80' /etc/httpd.conf
sed -i '52c #Listen :80' /etc/httpd.conf
service httpd start
service iptables stop
setenforce 0
date
echo "apache已经安装完成"
赋予脚本执行权 限。
chmod 755 apache.sh