Linux安装Apache,设置反向代理,配置SSL证书使用https安全协议

4 篇文章 0 订阅
2 篇文章 0 订阅

一、准备安装软件

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  文件夹。同时解压及创建安装文件夹

二、安装时需要按顺序安装

安装gccgcc-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.证书申请

阿里云购买Symantec(赛门铁克)免费的SSL

使用的是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

apache安装mod_ssl.so模块解决办法

解决办法:在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= 路径,路径写错了,注意空格

其它文章

apache服务的配置

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值