全网最细且手把手一起学CentOS8.0源码编译安装LAMP环境之apache2源码安装(一)

作者: 温新

分类: 【Linux】

阅读: 6125

时间: 2019-09-29 13:18:59

前提:准一个全新的Linux系统。我这里使用的是全新的CentOs8.0系统,刚刚出炉的并且使用最小化安装。我在源码安装apache2使用出现了不少的问题,所以,为了确保你能够在接下来的操作中顺利搭建出环境,请跟我的环境一样。
虚拟机:VMware14
Linux系统:CentOs8.0

说明:
本环境只供交流学习使用,忽略生产环境中的安全问题;
后面没有配置开机自启,请自行配置。

一、准备工作

1.1)安装方便操作的软件

yum -y install lrzsz
yum -y install vim
yum -y install wget

1.2)准备源码包

所有源码包放置/usr/local/src/目录下

切下到/usr/local/src目录

cd /user/local/src

下载apache依赖包

wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz
wget :wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz

上传apache mysql php源码到/user/local/src

1.3)安装LAMP所需依赖包

yum -y install gcc gcc-c++ make cmake bison autoconf automake zlib* libxml*  libtool-ltdl-devel* libaio libaio-devel libtool libxml2-devel openssl-devel

1.4、CentOs8.0关闭防火墙

systemctl stop firewalld.service                     关闭防火墙          
systemctl disable firewall.servei                    关闭防火墙开机自启
systemctl status firewalld.service                   查看防火墙状态

【如若报错】Failed to stop filewall.service: Unit filewall.service not loaded. 如果出现这样的错误,请首先检查自己的命令是否写正确(注意大小写、复制或粘贴等因素),若确实出现这样的错误,请自行百度解决,百度有方法。

二、源码编译安装Apache

apache版本:httpd-2.4.41.tar.gz
依赖包版本: pcre-8.42.tar.gz apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz

2.1)源码安装 apr-1.7.0.tar.gz

切换目录
cd /usr/local/src
解压
tar -zxvf apr-1.7.0.tar.gz
进入解压后的目录
cd apr-1.7.0
预编译
./configure --prefix=/usr/local/apr
编译 && 安装
make && make install

2.2)源码安装 apr-util-1.6.1.tar.gz

cd /usr/local/src/
tar -zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make

make预编译报错】致命错误:expat.h:没有那个文件或目录

【解决方法】>

yum install -y  expat-devel

重新执行make进行预编译

make
make install

2.3)源码编译安装 pcre-8.42.tar.gz

cd /usr/local/src
tar -zxvf pcre-8.42.tar.gz 
cd pcre-8.42
./configure --prefix=/usr/local/pcre
make && make install

2.4)源码编译安装apache2

cd /usr/local/src
tar -zxvf httpd-2.4.41.tar.gz
cd httpd-2.4.41
./configure \
--prefix=/usr/local/apache2 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-pcre=/usr/local/pcre \
--with-zlib \
--enable-so \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-ssl \
--enable-cgi \
--enable-proxy \
--enable-proxy-fcgi \
--enable-rewrite \
--enable-mpms-shared=all \
--with-mpm=prefork \
--enable-mods-shared=most \
--enable-dav \
--enable-dav-fs \
--enable-dav-lock

make
make install

安装成功

2.5)修改apache2配置文件

cd /usr/local/apache2/conf
备份配置分解
cp ./httpd.conf ./httpd.conf.bak
vim httpd.conf

修改一
在 #ServerName www.example.com:80 下一行添加  ServerName localhost:80

修改二 修改web文件位置
将修改 DocumentRoot "/usr/local/apache2/htdocs" 为 DocumentRoot "/WWW"
将修改<Directory "/usr/local/apache2/htdocs"> 为 <Directory "/WWW">
注意:WWW是大写

修改三 修改默认首先访问index.php
将 DirectoryIndex index.html 修改为 DirectoryIndex index.php index.html

修改四 配置虚拟主机
将 #Include conf/extra/httpd-vhosts.conf  修改为 Include conf/extra/httpd-vhosts.conf

修改五 根目录下创建WWW目录并写入测试index.html文件
mkdir /WWW

2.5)启动、重启、停止apache2

 /usr/local/apache2/bin/apachectl start             启动
 /usr/local/apache2/bin/apachectl stop              停止
 /usr/local/apache2/bin/apachectl restart           重启

【启动apache报错】配置完pache2的配置之后,启动apache2服务会报错,错误如下:
AH00112: Warning: DocumentRoot [/usr/local/apache2/docs/dummy-host.example.com] does not exist
AH00112: Warning: DocumentRoot [/usr/local/apache2/docs/dummy-host2.example.com] does not exist

【解决办法】启动失败的原因是因为我们配置了虚拟主机。只需在配置虚拟主机文件中添加如下操作即可。
cd /usr/local/apache2/conf/extra
cp ./httpd-vhosts.conf ./ httpd-vhosts.conf.bak
vim httpd-vhosts.conf

<VirtualHost _default_:80>
    DocumentRoot "/WWW"
  <Directory "/WWW">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
      DirectoryIndex index.php index.html
  </Directory>
</VirtualHost>

CentOs8源码编译安装apache完成!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下当做了解。是个人在配置中出现的一些小问题,记录下来
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【编译apache时报错】 以下我错信息是我第一次安装apache执行make编译时报错的错误。网上也有解决办法,自行搜索。出现错误后我把删除了apr和apr-util两个扩展并重新编译安装。刚要重新编译apache时,发现预编译里面有个--with-apr-util=/usr/local/apr-util/ \有个这样的配置,改成--with-apr-util=/usr/local/apr-util \后重新编译安装,结果,成功!编译安装时一定要小心!

collect2: error: ld returned 1 exit status make[2]: *** [Makefile:48:htpasswd] 错误 1 make[2]: 离开目录“/usr/local/src/httpd-2.4.41/support” make[1]: *** [/usr/local/src/httpd-2.4.41/build/rules.mk:75:all-recursive] 错误 1 make[1]: 离开目录“/usr/local/src/httpd-2.4.41/support” make: *** [/usr/local/src/httpd-2.4.41/build/rules.mk:75:all-recursive] 错误 1

不同的环境会存在一些小问题,但方法都是一样的。虽然这些小错误有时候比较让人头疼,但我们依旧能够把它解决。

我是夕阳何处寻,期待能和优秀的你一起同行!

夕阳何处寻

2019年9月29

请登录后再评论