在一次安装Apache2源码的过程中,遇到过很多坑,也翻了很多博客,其中还把虚拟机搞炸掉了一次,弄了很久才解决,所以自己想总结一篇博客,用来记录一次这个过程,给以后自己再次安装的时候节省时间,同时可以给跟我一样踩坑的人解决问题,节省时间。
跟着步骤一步步来,应该不会遇到什么问题。
一、安装依赖包
sudo apt -y install gcc g++ make libexpat1-dev
- gcc是C语言编译器
- g++是C++编译器
- make是执行Makefile文件
- libexpat1-dev是一个解析XML的C语言库
libexpat1-dev安装过程可能会出现报错,原因是依赖包版本不符合,把依赖包版本安装为对应的版本就可以解决了。
二、创建文件夹
cd /usr/local sudo mkdir apache2 pcre
- apache2是apache2安装的位置
- pcre是apache的依赖包安装位置
三、下载源码包和依赖包
# 源码包通常放在这个目录下 cd /usr/local/src # 下载apache2源码包 sudo wget https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.46.tar.gz # 解压 sudo tar -zxvf httpd-2.4.46.tar.gz # 删除压缩包 sudo rm httpd-2.4.46.tar.gz # 把依赖包放srclib下 cd /usr/local/src/httpd-2.4.46/srclib # 下载依赖包 sudo wget https://mirrors.bfsu.edu.cn/apache//apr/apr-1.7.0.tar.gz sudo wget https://mirrors.bfsu.edu.cn/apache//apr/apr-util-1.6.1.tar.gz sudo wget https://ftp.pcre.org/pub/pcre/pcre-8.45.tar.gz # 解压依赖包 sudo tar -zxvf apr-1.7.0.tar.gz sudo tar -zxvf apr-util-1.6.1.tar.gz sudo tar -zxvf pcre-8.45.tar.gz # 删除压缩包 sudo rm *.tar.gz # 重命名,把版本号去掉 sudo mv apr-1.7.0 apr sudo mv apr-util-1.6.1 apr-util sudo mv pcre-8.45 pcre # apr和apr-util不用安装,只安装pcre cd /usr/local/src/httpd-2.4.46/srclib/pcre sudo ./configure --prefix=/usr/local/pcre # 编译 sudo make # 执行安装pcre sudo make install # 删除make产生的文件 sudo make clean
- --prefix=...,是指定安装目录
四、安装Apache2
# 进入apache源码包 cd /usr/local/src/httpd-2.4.46 sudo ./configure --prefix=/usr/local/apache2 --with-pcre=/usr/local/pcre --with-included-apr # 编译 sudo make # 运行安装 sudo make install # 清除编译产生的文件 sudo make clean
- --prefix=/usr/local/apache2,将apache2安装在/usr/local/apache2文件夹下
- --with-pcre=/usr/local/pcre,/usr/local/pcre是依赖包pcre已经安装的位置
- --with-included-apr,使用/usr/local/src/httpd-2.4.46/srclib下的apr和apr-uitl
如果使用make过程中出现错误了,先使用make clean清除文件之后,再重新make
五、运行Apache2
# 修改配置文件,修改为本地运行 sudo vim /usr/local/apache2/conf/httpd.conf # 找到ServerName # 进入vim之后直接输入 /ServerName 然后回车就可以直接跳转到ServerName了 # 可以在下面看到有一行注释为 ServerName www.example.com:80 # 在这一行的下面添加 ServerName localhost:80 ServerName localhost:80 # 启动Apache2 sudo /usr/local/apache2/bin/apachectl -k start # 停止Apache2 sudo /usr/local/apache2/bin/apachectl -k stop # 重启Apache2 sudo /usr/local/apache2/bin/apachectl -k restart
1、如果启动Apache2成功,访问http://localhost,网页会出现It works!
2、如果启动Apache2报错了,可能是由于80端口被占用的原因,类似于下面的报错
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
以下是我的一种解决方案
# 安装Linux的网络工具集 sudo apt install net-tools # 查看80端口是否被占用 sudo lsof -i:80
如果80端口有被占用会出现类似一下图片的内容
我们只需要把这些pid都杀死就好了
# sudo kill -9 pid sudo kill -9 61468 61469 ...
总结
本次安装Apache2源码的教程就结束了,很荣幸你能看到最后,那说明这篇文章对你有很大帮助,如果还遇到什么问题的话,可以在评论区说说你的问题(最好附上截图)。



