一、准备安装软件
1.什么是APR
要测APR给tomcat带来的好处最好的方法是在慢速网络上(模拟Internet),将Tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。APR对于Tomcat最大的作用就是socket调度。你在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的。
原文:https://blog.csdn.net/qq_32447301/article/details/80891414
2.PCRE的作用
PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之类的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库。
和Boost正则表达式库的比较显示 [2] ,双方的性能相差无几,PCRE在匹配简单字符串时更快,Boost则在匹配较长字符串时胜出---但两者差距很小,考虑到PCRE的大小和易用性,我们可以认为PCRE更值得考虑。
PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。
PCRE是用C语言实现的,其C++实现版本是PCRE++。
原文:百度百科
3.configure
在./configure之前要首先安装pcre-devel
configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。
其中 --prefix 选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。
如果配置了--prefix,如:
$ ./configure --prefix=/usr/local/test1
安装后的所有资源文件都会被放在/usr/local/test目录中,不会分散到其他目录。
使用--prefix选项的另一个好处是方便卸载软件或移植软件
-
当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载干净;
-
移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)
软件下载
注意:安装时的版本 apr 为1.5.0,apr-util 为1.6.1,pcre 为8.43,httpd 为2.4.39
1. Apache HTTP Server
地址:http://httpd.apache.org/download.cgi#apache24
2. APR 和 APR-Util
最新版本地址:http://apr.apache.org/download.cgi
其它版本:https://archive.apache.org/dist/apr/
3. PCRE
地址:https://sourceforge.net/projects/pcre/files/pcre/
文件下载后上传文件到 /usr/local/apache 文件夹。同时解压及创建安装文件夹
二、安装时需要按顺序安装
安装gcc或gcc-c++ 默认安装
1.查询这两个东西是否已安装
可知 gcc已安装,gcc-c++没有安装。在安装pcre时会用到这两个所以必须提前安装
查询gcc-c++的版本 -- list,查询gcc同理
[root@izwz9fsrpjaxqttxhfhj5lz apache]# yum list gcc-c++
安装gcc-c++,安装gcc同理
[root@izwz9fsrpjaxqttxhfhj5lz apache]# yum install gcc-c++
安装过程需要确认是否现在安装
Complete! # 该提示表示安装完成
安装apr
1.解压
root apache> tar -vxzf apr-1.5.2.tar.gz
解压命令参考网址: https://www.cnblogs.com/wangluochong/p/7194037.html
2.创建文件夹及配置安装目录
root apache> mkdir apr # 创建文件夹
root apache> cd apr-1.5.2 # 进入解压文件
root apr-1.5.2> ./configure --prefix=/usr/local/apache/apr # 配置安装目录
3.安装
root apr-1.7.0> make
root apr-1.7.0> make install
4.安装成功后 apr 文件夹出现安装文件:
安装apr-util
先安装库: yum install expat-devel # 否则安装apr-util会出错
1.解压
root apache> tar -vxzf apr-util-1.6.1.tar.gz
2.创建文件夹及配置安装目录
root apache> mkdir apr-util # 创建文件夹
root apache> cd apr-util-1.6.1 # 进入解压文件
root apr-util-1.6.1> ./configure --prefix=/usr/local/apache/apr-util --with-apr=/usr/local/apache/apr/bin/apr-1-config # --prefix:配置安装目录 --with-apr:告知apr-util配置的时候apr的路径在什么地方
3.安装
root apr-util-1.6.1> make
root apr-util-1.6.1> make install
4.安装成功后 apr-util 文件夹出现安装文件:
安装pcre
1.解压
root apache> unzip pcre-8.43.zip # 默认解压到当前目录
2.创建文件夹及配置安装目录
root apache> mkdir pcre # 创建文件夹
root apache> cd pcre-8.43 # 进入解压文件
root pcre-8.43> ./configure --prefix=/usr/local/apache/pcre --with-apr=/usr/local/apache/apr/bin/apr-1-config # --prefix:配置安装目录 --with-apr:告知apr-util配置的时候apr的路径在什么地方
3.安装
root pcre-8.43> make
root pcre-8.43>make install
4.安装成功后 pcre文件夹出现安装文件:
安装httpd
1.解压
root apache> tar -vxzf httpd-2.4.39.tar.gz
2.创建文件夹及配置安装目录
root apache> mkdir apache # 创建文件夹
root apache> cd apache # 进入解压文件
root apache> ./configure --prefix=/usr/local/apache/httpd --with-pcre=/usr/local/apache/pcre --with-apr=/usr/local/apache/apr --with-apr-util=/usr/local/apache/apr-util --enable-ssl # --prefix:配置安装目录 --with-apr:告知apr-util配置的时候apr的路径在什么地方 --enable-ssl 为安装时添加SSL模块,不使用https可不配置
3.安装
root apache> make
root apache> make install
4.判断安装是否完成
启动apache: 命令行 bin/apachectl start
提示的警告 解决办法:
进入安装好的httpd里的 conf/httpd 文件
将ServerName前的“#”去掉,将网址 www.example.com 修改成自己的服务器地址 160.84.1.177(160.84.1.177 为服务器地址)
如:#ServerName www.example.com:80 改为 ServerName 160.84.1.177:80
5.浏览器访问服务器地址 160.84.1.177 ,出现下图安装成功
三、反向代理的配置
1.修改conf下的httpd.conf 文件,去掉前面的#号注释
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule proxy_connect_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
注:其他的 mod_proxy 模块可根据需要自行添加
2.监听80端口,80端口为apache http协议的默认端口,实现反向代理
启用httpd-vhosts.conf文件(去掉前面的#号注释),也可以不启用
在.conf文件里面添加配置(可以在httpd.conf 加,也可以在httpd-vhosts.conf加)
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com #标签可不加
DocumentRoot "/usr/local/apache/htdocs" #标签可不加
ProxyRequests Off
#Proxy 标签可不加
<Proxy /mycat>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /mycat http://127.0.0.1:8887/mycat
ProxyPassReverse /mycat http://127.0.0.1:8887/mycat
</VirtualHost>
这时候访问 http://160.84.1.177/mycat 即可实现转发,无需使用端口号。
如果有域名可使用域名代替地址ip
https实现方向代理,不过要先实现下面的第四点
已实现,过程出现如下报错(麻了个鸡)
解决办法:
问题出现在 modules 下的mod_ssl.so 文件,一开始安装http 的时候没有编译出该文件,然后在其它版本的modules复制了一个过来,文件大小都不一样,然后不关怎么访问https代理都会出现问题。最后重装整个流程的软件和安装httpd时编译SSL模块就可以了。
剩下的反向代理https,打开conf/extra/httpd-ssl.conf 文件,加入上述 http 的反向代码即可,一模一样的代码,如果说有啥鸡儿区别就是 监听的默认端口为 443. 如需默认修改端口,下面有介绍。
四、配置SSL证书,使用https协议
1.证书申请
使用的是apache的SSL证书
2.证书配置
修改httpd.conf文件:
1.使用 Include conf/extra/httpd-ssl.conf 配置文件(去掉前面的#号注释)
2.找到#LoadModule ssl_module modules/mod_ssl.so,去掉前面的#.如果不存在请先添加该模块。2.4版本没有,底下有解决办法
修改httpd-ssl.conf文件配置,将证书的路径和名字修改,建议从根目录开始配置
SSLCertificateFile "/usr/local/apache/conf/server.crt" # 公共密匙
SSLCertificateKeyFile "/usr/local/apache/conf/server.key" # 私有密匙
SSLCertificateChainFile "/usr/local/apache/conf/server-ca.crt" # 链路证书
3.验证安装成功
浏览器访问服务器地址 https://160.84.1.177 ,出现下图安装成功
如果有域名可使用域名代替地址ip
五、apache 的其它操作
1.启动停止命令
基本的操作方法:
本文假设你的apahce安装目录为/usr/local/apache,这些方法适合任何情况
1.1 启动
推荐/usr/local/apache/bin/apachectl start #启动
1.2 停止
/usr/local/apache/bin/apachectl stop #停止
1.3 重新启动
/usr/local/apache/bin/apachectl restart #重启,新修改的配置生效
1.4 重启 Apache 服务器时不中断当前的连接
/usr/local/sbin/apachectl graceful
如果apache已经安装成为linux的服务
service httpd start #启动
service httpd restart #重启
service httpd stop #停止服务
2.设置开机自动启动和添加为服务
2.1 指定安装目录时/etc/rc.d/init.d/下不存在httpd服务
ls /etc/rc.d/init.d/ | grep httpd #查看该目录下是否存在httpd
2.2 将自己安装目录下的apachectl复制到该目录下并修改为httpd
cp /usr/local/apche/httpd/bin/apachectl /etc/init.d/httpd # 可根据实际情况修改自己安装目录
2.3 在新修改的httpd 中添加 httpd 服务对 chkconfig 的支持, 在#!/bin/sh下面加入
#chkconfig:345 85 15
#description:Start and stop the Apache HTTP Server
2.4 执行:
chkconfig --add httpd
chkconfig httpd on
2.5 查看是否添加成功
chkconfig --list httpd
2.6 查看自己的运行级别:命令:runlevel
2.7 查看是否已设置为开机启动, 命令: systemctl is-enabled httpd.service (enabled是 disabled否)
3.查看服务,apache为例
systemctl list-units --all --type=service
3.1 查看所有系统服务
systemctl list-units --all --type=service
3.2 查询服务状态
systemctl status httpd.service
3.3 查询服务是否为开机启动
systemctl is-enabled httpd.service
enabled是 disabled否
3.4 设置服务为开机启动状态
systemctl enable httpd.service
会自动创建一个系统链接
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
3.5 设置服务为开机不启动状态
systemctl disable httpd.service
会自动移除系统链接
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
3.6 设置httpd开机自启动
systemctl enable httpd.service
重启即可。
查看服务原文链接:https://blog.csdn.net/abcwanglinyong/article/details/80079068
5.配置文件的功能及使用
5.1 修改默认端口
在 conf/httpd.conf 文件修改 Listen 80 的 80端口为自己想要的就行,不建议修改,使用网址接口时需要加上端口才能访问.也可以添加端口 Listen 8088
修改 https的443端口同理,在conf/extra/httpd-ssl.conf 文件修改
。。。安装出现的错误:
1.安装apr-util 时出错:xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
#include <expat.h>
^
compilation terminated.
make[1]: *** [xml/apr_xml.lo] Error 1
make[1]: Leaving directory `/usr/local/apache/apr-util-1.6.1'
make: *** [all-recursive] Error 1
原因:缺少expat.h
解决办法:yum install expat-devel # 一般这类错误都是缺少依赖,问题是怎么找出来。
2.安装pcre:configure: error: Invalid C++ compiler or C++ compiler flags
原因:缺少expat.h
解决办法:yum install expat-devel # 一般这类错误都是缺少依赖,问题是怎么找出来。
cp -r apr-1.7.0 /usr/local/apache/httpd-2.4.39/srclib/apr
3.make命令安装Apache时报错
错误内容:make[2]: *** [htpasswd] 错误 1
make[2]: Leaving directory `/usr/local/httpd-2.4.29/support'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/usr/local/httpd-2.4.29/support'
make: *** [all-recursive] 错误 1
解决办法:不知道
不知道是不是这个原因:由于安装的“apr”和“apr-util”的版本是V1.6,造成版本不兼容,需要安装它们的V1.5。
以上是网络上的解决办法,但是我使用的apr是1.5,apr-util 是1.6 现在也安装成功了.版本一般都会兼容
3.安装 2.4 版本的httpd 出现 mod_ssl 错误,modules(模块/依赖)中缺少 mod_ssl.so
Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the serv
解决办法:在modules 文件夹加上 mod_ssl.so
4. 2.4版本的httpd 配置ssl证书时报的错
AH00526: Syntax error on line 92 of /usr/local/apache/conf/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).
解决办法:在conf文件夹下找到 httpd.conf,去掉下面配置前面的 #(注释)
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
5.ssl证书过期或与服务器ID(域名)不对应。域名没有备案(这个错误是使用中突然出现的,要注意)
AH01909: RSA certificate configured for 10.116.152.118:443 does NOT include an ID which matches the server name
[Wed Jun 19 20:38:04.362558 2019] [ssl:emerg] [pid 31002:tid 140087556859776] AH02238: Unable to configure RSA server private key
[Wed Jun 19 20:38:04.362578 2019] [ssl:emerg] [pid 31002:tid 140087556859776] SSL Library Error: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
[Wed Jun 19 20:38:04.362582 2019] [ssl:emerg] [pid 31002:tid 140087556859776] AH02312: Fatal error initialising mod_ssl, exiting.
解决办法:更换证书、备案域名
6.APR-util安装成功的话,注意每个配置之间的空格问题,不要和下一个连在一起,最好手敲
configure:
checking for APR-util... configure: error: the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.
1.APR-util 安装没成功,目录下没有东西
2.安装 httpd 时 的 --with-apr-util= 路径,路径写错了,注意空格
其它文章