以下是在 Linux 上通过源码安装 Apache 的简要步骤。
之前尝试安装了很多次 Apache 都没有成功,即使将 Apache 所需的所有依赖软件都安装好了,但还是会在 Apache make 的时候报错。
所以就想着是不是 Apache 和依赖软件的版本不匹配。
最终,从网上找到了这样的搭配:
下载链接:http://httpd.apache.org/download.cgi
在 linux 的 /usr/local 目录中,输入命令 wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.46.tar.gz 进行下载。
如果官网的下载链接不能用了,可先从本站下载,然后上传到 linux 服务器上:点击下载 Apache 2.4.46
下载完成
对下载的文件进行解压:tar -xzvf httpd-2.4.46.tar.gz
进入解压出的目录:cd httpd-2.4.46/
安装 Apache,并指定安装目录:./configure --prefix=/usr/local/httpd
发现报错,报错信息说的很清楚,缺少 APR,所以需要先安装 APR
先下载APR:http://archive.apache.org/dist/apr/
下载 1.6.2 版本:wget http://archive.apache.org/dist/apr/apr-1.6.2.tar.gz
如果官网的下载链接不能用了,可先从本站下载,然后上传到 linux 服务器上:点击下载 APR 1.6.2
对下载文件进行解压:tar -xzvf apr-1.6.2.tar.gz
进入解压出的文件:cd apr-1.6.2/
安装 APR,并指定安装目录:./configure --prefix=/usr/local/apr
但是安装过程中报错
这种报错只需要进入 configure 文件,将其中的 $RM "$cfgfile" 注释掉即可。
进入 configure 文件:vi configure
搜索 $RM "$cfgfile":按下斜杠 /,然后输入 $RM "$cfgfile",回车进行搜索,就会快速跳搜索内容所在的地方。
找到后按下 i 键进入编辑模式,将 $RM "$cfgfile" 注释掉。
按下 esc 键,退出编辑模式;输入 :wq 退出并保存。
保存后,重新安装 APR:./configure --prefix=/usr/local/apr
这次 APR 安装成功
继续执行 make 命令
继续执行 make install 命令
返回 /usr/local 目录,发现 apr 已经安装成功。
既然 APR 已经安装成功,那么就接着安装 Apache。
cd httpd-2.4.46/
./configure --prefix=/usr/local/httpd
发现还是报错,报错信息上说缺少 APR-util ,所以还需要先安装 APR-util
先下载 APR-util:http://archive.apache.org/dist/apr/
下载 1.6.0 版本:wget http://archive.apache.org/dist/apr/apr-util-1.6.0.tar.gz
如果官网的下载链接不能用了,可先从本站下载,然后上传到 linux 服务器上:点击下载 APR-util 1.6.0
下载完成
对下载文件进行解压:tar -xzvf apr-util-1.6.0.tar.gz
进入解压出的文件:cd apr-util-1.6.0/
安装 apr-util:./configure --prefix=/usr/local/apr-util
出现报错,报错信息指出安装命令需要跟上 --with-apr 的信息。
所以正确的安装命令:./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
如果没有报错,则继续执行 make 命令。
执行过程中报错
查阅资料发现,发生这个报错是因为系统缺失 expat 库,所以需要给系统先安装上 expat 库。
cd 到根目录下(为啥要在根目录呢?不为啥,仅仅是习惯将不明的库在根目录下安装)
安装 expat 库:yum install -y expat-devel
expat 库安装完成
cd 到 apr-util-1.6.0 目录,再次执行 make 命令,这一次没有报错,执行成功。
继续执行 make install 命令,执行成功。
到了这里,apr-util 就安装完成了。
cd 到 httpd-2.4.46 目录,重新继续 Apache 的安装:./configure --prefix=/usr/local/httpd
发现报错,提示没有 APR-util,但是上面 APR-util 已经安装成功了呀。
一番折腾之后发现,安装命令需要跟上 --with 指令:./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
按理说这次应该不会报错了,但是我无语了,仍然报错。
好在这是一个新错误。
错误信息中提示缺少 pcre,所以接下来目标很明确,安装 pcre。
下载 pcre:https://sourceforge.net/projects/pcre/files/
注意需要下载 pcre,不要下载 pcre2。
点击 pcre,下载 8.41 版本。
下载 8.41 版本:wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz
如果官网的下载链接不能用了,可先从本站下载,然后上传到 linux 服务器上:点击下载 pcre 8.41
下载完成后,对下载文件进行解压:tar -xzvf pcre-8.41.tar.gz
cd 进 pcre-8.41:cd pcre-8.41/
安装 pcre:./configure --prefix=/usr/local/pcre
安装过程报错
这是因为系统缺失 gcc-c++ 库,所以在根目录下安装 gcc-c++ 库:yum install -y gcc-c++
安装完成后 cd 进 pcre-8.41,继续安装 pcre:./configure --prefix=/usr/local/pcre,这次安装成功。
执行 make 命令,顺利执行。
执行 make install 命令,出现了警告(暂时不确定警告是否对安装有影响)
终于,又又又一次到了安装 Apache 的时候:./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
这一次终于木有报错,开森ing
继续执行 make 命令,顺利执行。
继续执行 make install 命令,大功告成,安装成功。
cd 到 /usr/local/httpd/conf,先备份配置文件:cp httpd.conf httpd.conf.bak
进入配置文件:vi httpd.conf
看一下软件根目录设置的是不是我们安装的位置,如果不是,需要将其改成 Apache 的实际安装位置。
如果需要修改端口,在这个地方,Apache 默认开启 80 端口。
谨慎起见,还是确认一下80端口有没有被占用:netstat -anp | grep 80
如果端口被占用,图中红框处会显示 LISTEN(LISTENING不表示占用)。
拓展一下,查看当前被占用的所有端口:netstat -nultp
修改 ServerName,指定 IP,或者用 localhost替代,否则无法启动 Apache(启动会报错)。
保存后退出:esc 键,:wq
Apache 默认访问的文件夹是 httpd/htdocs,若要修改默认访问文件夹,则修改下图位置。
禁止用户浏览目录:将 Options Indexes FollowSymLinks 改成 Options FollowSymLinks,即去掉 Indexes。
cd 到 Apache 的 bin 目录:cd /usr/local/httpd/bin
启动:./apachectl start
启动成功界面
在浏览其中访问
因为域名已经解析了 Apache 所在的服务器 IP,所以可直接通过域名访问。
重启 Apache:./apachectl restart
停止 Apache:./apachectl stop
查看 Apache 进程:ps -ef | grep httpd