源码安装Apache
配置:Linux Mint +Apache2.4
2.4版本需要我们手动的安装apr
和apr-util
包
- 下载
httpd
,apr
,apr-util
这三个包
# cd /usr/local/src
# sodu wget https://coding.net/u/aminglinux/p/resource/git/blob/master/README.md
# sodu wget https://coding.net/u/aminglinux/p/resource/git/blob/master/README.md
# sodu wget https://coding.net/u/aminglinux/p/resource/git/blob/master/README.md
// 所有的软件都在这个网站里面有
下载完之后就将这三个软件解压出来
apr(包括apr和apr-util)
可以理解成一个通用的函数库,主要为上次应用提供支持。在这里httpd
是依赖apr
和apr-util
的,如果不先安装上面两个东西的话就无法让httpd
工作。- 首先安装
apr
:
# cd /usr/local/src/apr-1.5.2
# sudo ./configure --prefix=/usr/local/apr
# sudo make && sudo make install
//--prefix表示指定软件的安装位置
- 安装
apr-util
:
# cd /usr/local/src/apr-util-1.5.2
# sudo ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# sudo make && sudo make install
//--with-apr表示apr-util是依赖于apr的
在3,4步骤之中提示缺少包的错误,都百度后下载安装相应的包
- 安装完
apr
和apr-util
后,进入/usr/local/httpd-2.4.5
,配置编译参数
sudo ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared-most
- 解析
--eanble-so
表示启用DSO.DSO表示把某些功能以模块(一个功能就是一个so文件,在httpd编译完后可以看到)的形式展示出来.`--enable-mods-shared-most`表示以共享的方式安装大多数功能模块,安装后可以在`modules`目录下看到这些文件.
- 进行编译安装
# sudo make
# sudo make install
// 可以使用`echo $?`来检查执行是否正确
- 查看加载了哪些模块
# cd /usr/local/apache2.4/bin
# sudo apachectl -M
- 启动
httpd
之前需要检查配置文件是否正确
# cd /usr/local/apache2.4/bin
# sudo apachectl -t
如果有错误,则继续修配置文件`conf/httpd.conf`,配置正确的话则会显示`Synax OK`.
10 启动httpd
服务
# cd /usr/local/apache2.4/bin
# sudo apachectl -start
11 查看命令是否启动
# sudo netstat -lnp | grep httpd
- 我们也可以使用
curl
命令进行简单的测试
# curl localhost
<html><body><h1>It works!</h1></body></html>
如果显示上一行则表示测试成功了.
遇到的错误
- 运行
apachectl -M
(查看加载了哪些模块)
The program 'apachectl' is currently not installed. You can install it by typing:
sudo apt install apache2
apachectl 没有安装,请typeing apt -install apche2
cp /usr/local/apache2/bin/apachectl /usr/local/bin/apachectl
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:88
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:88
no listening sockets available, shutting down
AH00015: Unable to open logs
可能有以下几个原因:
1. 配置文件的80端口被占用了。
2. 权限不够:`sudo apachectl start`