Linux手动安装Apache2.4.x全部流程

本文详细介绍了在Linux上手动升级Apache从2.4.18到更高版本的全过程,包括备份配置文件、卸载旧版Apache、安装最新Apache版本以及PHP的安装和配置。过程中涉及apr、apr-util、pcre等依赖的安装,并解决了编译和配置过程中遇到的各种问题。

之前服务器有一个漏洞需要升级Apache,2.4.25以下的都需要升级,我的服务器的Apache是2.4.18…悲催的要升级,由于直接apt-get upgrade 发现检测到的版本还是2.4.18,因此就需要手动升级,好麻烦啊


备份

首先是/etc/apache2/apache2.conf,以及/var/www下的文件,保险起见我都备份了一下

.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2

主要用到的是httpd.conf、apache2.conf两个文件,用于之后快速恢复配置

卸载Apache

卸载是参考的这篇文章 https://www.linuxidc.com/Linux/2013-06/85825.htm

安装Apache

官网上下载最新版本的安装包 http://httpd.apache.org/download.cgi
下载到download目录中

    tar zxvf httpd-*
    cd httpd-*    

./configure --prefix=/usr/local/apache3 --with-mpm=worker --enable-cache --enable-disk-cache --enable-so --enable-mem-cache --enable-file-cache --enable-nonportable-atomics --enable-mods-shared=most --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
make
sudo make install

首先第一个标红的是要放置的目录,enable-so用于添加对php的引用,剩下的apr、apr-util、pcre都是需要安装的软件,如果配置过程出现了问题,那么就需要安装一下这几个软件
apr/apr-util的手动安装:https://blog.csdn.net/chrise_/article/details/78904762

推荐下载的版本是1.5 ,1.6的版本取消了对expat的依赖,这样在Apache编译的时候会报错,如果使用了1.6的版本,那么就需要再手动安装expat

==================================================
cd expat-2.2.3/
./configure --prefix=/usr/local/expat
make
sudo make install
并且在安装apr-util的时候,对其的配置如下:
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr –with-expat=/usr/local/expat
以上解决方法来自 https://bbs.csdn.net/topics/392191188

安装apr-util时报fatal error: expat.h错误的解决:

解决办法就是安装libexpat1-dev
sudo apt-get install libexpat1-dev
make
make install
到这一步基本就能解决,解决方法来自 https://blog.csdn.net/MimiSnowing/article/details/79535278

pcre的手动安装:http://www.cnblogs.com/LiuYanYGZ/p/5903954.html

注意在安装的配置时候,更改一下–prefix=/usr/local/pcre-7.8为–prefix=/usr/local/pcre

php的安装

Apache安装好后需要在./conf/httpd.conf里面添加如下的内容

AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php 
LoadModule php5_module   modules/libphp5.so
PHPIniDir "/etc/php.ini"

这个时候../bin/apachectl restart多半是会报错的,会提示没有libphp5.so,因此需要重新编译php,据说php通过apt安装的时候会自动添加编译选项在Apache中添加libphp5.so,但是对Apache的编译目录有要求…没有细查,这里我采用了手动安装php的选项,安装时采用5.6的版本,配置参数为

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache3/bin/apxs --with-zlib-dir --with-libxml-dir=/usr/local/libxml2/ --with-freetype --enable-mbstring --with-mysql --with-mysqli --enable-gd-native-ttf --with-gettext=/usr/local/gettext/ --enable-magic-quotes --enable-sockets --with-config-file-path=/etc/
网上其他的参数还有with-jpg之类的,由于这些我还要重新手动安装,因此进行了缩减,最后这些参数即可保证编译成功

============================
make install 的时候如果有libtool的红色的warning提示可以忽略,详情可以看一下这个博客

注意第一个标红的是用于生成libphp5.so文件,第二个标红是用于指定php的配置文件,即php.ini存放的位置,这个目录的位置要和在httpd.conf里面之前添加的最后一行设置PHPIniDir 的文件位置相同

然后由于我之前安装过php因此通过locate php.ini找到了一份配置文件,复制到了/etc/下

讲道理这个时候已经好了,这个时候输入网址访问会提示:(涉及数据库)

PHP Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

于是又是需要在php.ini里面修改一项,查看该链接:https://www.cnblogs.com/Darlin356230410/p/5691241.html

随后再重启,结果直接500…当时是崩溃了的,之后查看了Apache的错误日志(在./logs/error_log里),提示是因为php缺少PDO_MYSQL这个模块

php拥有的模块可以通过输入命令php -m来查看

随后就走上了安装php模块之路,如何安装参考了这篇文章:https://www.cnblogs.com/qq78292959/p/4084868.html

以下为错误解决:

PHP_AUTOCONF

Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.

安装autoconf后重试:apt-get install autoconf


./configure 的参数问题:

./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql

有的人没有安装,所以需要安装一下,如果手动安装,找到目录后按照链接里的步骤进行即可,如果没有手动安装,可以直接通过apt安装Mysql-devel:

sudo apt-get install libmysqld-dev
sudo apt-get install libmysql++-dev

随后按链接中的说明,建立软连接,继续配置即可

软连接后依然报错的问题
不知道为什么我的安装包会很有问题,提示找不到mysql.h,但是搜索又确实能搜索到mysql.h,路径是/usr/include/mysql/mysql/mysql.h,新手不太会这种操作,与是就把
mysql.h软连接到了./include/
/mysql/mysql/* 软连接到了/mysql/
随后编译就成功了…

之后修改php.ini,注意文件名的pdo_mysql.so,和注释时候的文件名不同
随后重启Apache,查看phpinfo(注意这个时候php -m可能查看不到pdo_mysql的加载)
在这里插入图片描述
加载成功

随后改回自己的网页的显示,没有问题了…

Orz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值