|
主题设置

卡片式面板通常用于非白色背景色的主体内

Linux 安装 Apache

以下是在 Linux 上通过源码安装 Apache 的简要步骤。

安装版本

之前尝试安装了很多次 Apache 都没有成功,即使将 Apache 所需的所有依赖软件都安装好了,但还是会在 Apache make 的时候报错。

所以就想着是不是 Apache 和依赖软件的版本不匹配。

最终,从网上找到了这样的搭配:

  • Apache:httpd-2.4.46.tar.gz
  • APR:apr-1.6.2.tar.gz
  • APR-util:apr-util-1.6.0.tar.gz
  • PCRE:pcre-8.41.tar.gz

下载 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

下载完成

安装 Apache

对下载的文件进行解压:tar -xzvf httpd-2.4.46.tar.gz

进入解压出的目录:cd httpd-2.4.46/

安装 Apache,并指定安装目录:./configure --prefix=/usr/local/httpd

  • --prefix 指定安装目录的前缀
  • 最后的 httpd 指定安装到 http 的文件夹(没有则新建),当然如果看不习惯,也可以将 httpd 改成 apache

发现报错,报错信息说的很清楚,缺少 APR,所以需要先安装 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

先下载 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

下载 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 命令,大功告成,安装成功。

配置 Apache

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。

启动 Apache

cd 到 Apache 的 bin 目录:cd /usr/local/httpd/bin

启动:./apachectl start

启动成功界面

在浏览其中访问

因为域名已经解析了 Apache 所在的服务器 IP,所以可直接通过域名访问。

重启 Apache:./apachectl restart

停止 Apache:./apachectl stop

查看 Apache 进程:ps -ef | grep httpd