全网最细且手把手一起学CentOS8.0源码编译安装LAMP环境之apache2源码安装(一)
前提:准一个全新的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