升级Apache2.4.18到Apache2.4.38
1.安装平台环境要求:
Ubuntu:
1 | You will need to ensure that you have either libtool 1.5.6 |
没有libtool和PCRE时,需要先安装libtool和PCRE
pcre 的安装可以参考
https://stackoverflow.com/questions/10663180/apache-installation-libpcre-error
- 下载解压apache2.4.38
1 | cd /usr/local |
- 进入httpd-2.4.38目录,执行命令安装apache2
$ ./configure --prefix=/usr/local/apache2
报错: configure: error: APR not found. Please read the documentation.
通过INSTALL文件了解到需要安装APR and APR-Util - 安装APR and APR-Util到srclib目录下
进入httpd-2.4.38下的srclib目录,执行命令下载并解压APR and APR-Util
1 | wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.5.tar.gz |
注意: 解压后的文件名不能带版本号,将apr-1.6.5改名为apr,apr-util-1.6.1改名为apr-util
1 | mv apr-1.6.5 apr |
5.回到httpd-2.4.38根目录,再次执行./configure –prefix=/usr/local/apache2, 无报错后继续执行以下命令
1 | make |
成功执行后在/usr/local目录下会发现apache2已经存在
6.将原apache版本中定义的环境变量加到新的apache bin目录下的envvars文件中
1 | cd /usr/local/apache2/bin |
7.修改httpd.conf, 注释掉listen 80和ServerAdmin,在文件尾添加
1 | ServerTokens OS |
并将日志文件的路径替换为
1 | ErrorLog ${APACHE_LOG_DIR}/error.log |
将“User daemon Group daemon” 改为
1 | User ${APACHE_RUN_USER} |
8.将旧版本apache下的 sites-enabled复制到/usr/local/apache2/conf$ cp -r /etc/apache2/sites-enabled/ /usr/local/apache2/conf/
9.停止旧的服务(或者开放新的端口进行测试),启动新版apache进行测试
1 | cd /usr/local/apache2/bin |
报错:Invalid command ‘XSendFile’, perhaps misspelled or defined by a module not included in the server configuration
这种报错是因为有些模块没有加载造成的,进入旧版apache的模块目录,将缺少的模块复制到新版中,并在httpd.conf中加载即可(也可以自己下载)
测试发现缺少mod_xsendfile.so和mod_wsgi.so
1 | cp /usr/lib/apache2/modules/mod_xsendfile.so /usr/local/apache2/modules |
在新版本的httpd.conf中加载
1 | LoadModule wsgi_module modules/mod_wsgi.so |
取消 httpd.conf 中 deflate_module、negotiation_module、rewrite_module的注释
重启新版apache
1 | cd /usr/local/apache2/bin |