编译安装Apache HTTP Server 2.4.23 以及配置HTTP/HTTPS反向代理

编译安装Apache HTTP Server 2.4.23
以及配置HTTP/HTTPS反向代理
一,依赖软件:

1.1 GCC和C++编译器

  • GCC
  • C++ Compiler

1.1.1 如果没有安装以上依赖包请执行以下命令安装:

[[email protected] ~]# yum install -y gcc gcc-c++

1.1.2 如果已经安装其中一个,可以单独执行以下命令安装其中一个:

[[email protected] ~]# yum install -y gcc
[[email protected] ~]# yum install -y gcc-c++

  • 如果没有安装GCC,在编译其它依赖包的时候会遇到以下错误:

configure: error: no acceptable C compiler found in $PATH.

  • 如果没有安装C++ Compiler,在编译其它依赖包的时候会遇到以下错误:

configure: error: you need a C++ compiler for C++ support.

1.2 APR,APR-Util和PCRE

  • Apache Portable Runtime (APR) 1.5.2 (大小807KB)
  • Apache Portable Runtime Utility (APR-Util) 1.5.4(大小678KB)
  • Perl-Compatible Regular Expressions Library (PCRE) 9.39 (大小1.48MB)
    如果没有安装以上依赖包请执行以下命令下载,服务器需要能够访问外网:
    [[email protected] ~]# wget http://mirrors.cnnic.cn/apache//apr/apr-1.5.2.tar.bz2
    [[email protected] ~]# wget http://mirrors.cnnic.cn/apache//apr/apr-util-1.5.4.tar.bz2
    [[email protected] ~]# wget http://ncu.dl.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.bz2
    如果不能访问外网,请另外下载然后上传到服务
    1.2.1 解压、编译、安装APR 1.5.2,先cd切换到压缩包所在目录:
    [[email protected] ~]# tar xvf apr-1.5.2.tar.bz2
    [[email protected] ~]# cd apr-1.5.2
    [[email protected] apr-1.5.2]# ./configure --prefix=/usr/local/apr
    [[email protected] apr-1.5.2]# make && make install
  • 参数--prefix为指定安装目录(建议使用,下同),可以自行修改
    1.2.2 解压、编译、安装APR-Util 1.5.4,先cd切换到压缩包所在目录:
    [[email protected] ~]# tar xvf apr-util-1.5.4.tar.bz2
    [[email protected] ~]# cd apr-util-1.5.4
    [[email protected] apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    [[email protected] apr-util-1.5.4]# make && make install
  • 参数--prefix为指定安装目录,可以自行修改
  • 参数--with-apr为指定上述APR的安装目录
    1.2.3 解压、编译、安装PCRE 9.39,先cd切换到压缩包所在目录:
    [[email protected] ~]# tar xvf pcre-8.39.tar.bz2?
    [[email protected] ~]# cd pcre-8.39
    [[email protected] pcre-8.39]# ./configure --prefix=/usr/local/pcre
    [[email protected] pcre-8.39]# make && make install
  • 参数--prefix为指定安装目录,可以自行修改
    二,如果需要支持HTTPS,需要下载安装OPENSSL,版本需要>=0.98,本例使用1.0.2版本(大小5.06MB):
    2.1 检查系统是否已经安装ssl还有版本:
    [[email protected] ~]# openssl version
    OpenSSL 1.0.0-fips 29 Mar 2010
    或者执行:
    [[email protected] ~]# rpm -qa|grep openssl
    openssl-1.0.0-20.el6_2.5.x86_64
    如果命令返回类似上述结果,证明系统已经安装,如果没有请参照下面步骤编译安装:
    [[email protected] ~]# wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2i.tar.gz
    如果不能访问外网,请另外下载然后上传到服务器
    2.2 解压、编译、安装OPENSSL 1.0.2,先cd切换到压缩包所在目录:
    [[email protected] ~]# tar xvf openssl-1.0.2i.tar.gz
    [[email protected] ~]# cd openssl-1.0.2i
    [[email protected] openssl-1.0.2i]# ./config -fPIC --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
    [[email protected] openssl-1.0.2i]# make && make install
  • 参数--prefix,--openssldir为指定安装目录,可以自行修改
  • make && make install安装步骤可能需要几分钟
    2.3 之前试过使用1.1.0b版本(openssl-1.1.0b.tar.gz),但是在编译Apache HTTP Server 2.4.23的时候遇到以下错误,觉得是版本不兼容,所以使用openssl-1.0.2i版本:
    ab.c:2416: warning: implicit declaration of function ‘CRYPTO_malloc_init‘
    /usr/local/apr/build-1/libtool --silent --mode=link gcc -std=gnu99 -g -O2 -pthread......
    ab.o: In function main‘:<br/>httpd-2.4.23/support/ab.c:2416: undefined reference toCRYPTO_malloc_init‘
    httpd-2.4.23/support/ab.c:2357: undefined reference to `SSLv2_client_method‘
    三,下载Apache HTTP Server 2.4.23(大小6.05MB),服务器需要能够访问外网:
    [[email protected] ~]# wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.23.tar.bz2
    如果不能访问外网,请另外下载然后上传到服务器
    3.1 解压、编译、安装Apache HTTP Server 2.4.23,先cd切换到压缩包所在目录:
    [[email protected] ~]# tar xvf httpd-2.4.23.tar.bz2
    [[email protected] ~]# cd httpd-2.4.23
    [[email protected] httpd-2.4.23]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl=/usr/local/openssl --enable-modules=most
    [[email protected] httpd-2.4.23]# make && make install
    --prefix:指定安装目录
    --with-pcre:pcre安装目录
    --with-apr:apr安装目录
    --with-apr-util:apr-util安装目录
    --enable-ssl:启用ssl?(如果不需要支持HTTPS,不需要添加此参数)
    --with-ssl:openssl安装目录?(如果不需要支持HTTPS,不需要添加此参数)
    其它参数为可选的,看个人需求
    四,测试安装是否成功
    4.1 修改ServerName
    打开/usr/local/apache2/conf/httpd.conf文件(/usr/local/apache2是httpd的安装目录),查找ServerName,格式为以下所示,默认端口为80:
    ServerName ip:80或者ServerName dns:80
    修改后保存
  • 如果不修改的话,启动的时候有可能会出现以下错误:
    [[email protected] bin]# ./httpd -k start
    AH00558: httpd: Could not reliably determine the server‘s fully qualified domain name, using xxx.xxx.xxx.xxx. Set the ‘ServerName‘ directive globally to suppress this message
    4.2 绑定监听的ip和访问端口
    打开/usr/local/apache2/conf/httpd.conf文件(/usr/local/apache2是httpd的安装目录),查找Listen,格式为以下所示,默认端口为80,如果需要监听其它端口,请修改:
    #Listen ip:port
    Listen 80
    4.3 启动httpd
    进入到bin目录,执行./httpd -k start
    [[email protected] bin]# ./httpd -k start
    httpd (pid 29502) already running
    如果出现类似上述结果证明启动成功
    4.4 页面验证
    打开浏览器输入服务器的ip或者域名(如果上面使用非80端口,需要输入指定的端口),如果出现It works!证明启动成功
    4.5 httpd重启、停止命令
    ./httpd -k restart|stop
    五,修改默认启动group/user
    httpd默认的启动group/user都是daemon,如有需要可以修改,步骤如下:
    打开/usr/local/apache2/conf/httpd.conf文件(/usr/local/apache2是httpd的安装目录),查找User daemon,修改并保存,例如如果使用apache/apache启动的话,替换daemon:
    User apache
    Group apache
  • 系统需要添加apache的group和user并且修改/usr/local/apache2的目录权限
  • 启动的时候使用root,httpd会自动切换,查看进程:
    [[email protected] bin]# ps -ef|grep httpd
    root ? ? ?29502 ? ? 1 ?0 09:40 ? ? ? ? ?00:00:00 ./httpd -k start
    daemon ? 29503 29502 ?0 09:40 ? ? ? ? ?00:00:00 ./httpd -k start
    daemon ? 29504 29502 ?0 09:40 ? ? ? ? ?00:00:00 ./httpd -k start
    daemon ? 29505 29502 ?0 09:40 ? ? ? ? ?00:00:00 ./httpd -k start
    root ? ? ?31623 30134 ?0 10:20 pts/0 ? ? 00:00:00 grep httpd
    六,配置反向代理转发所有请求到应用服务器ls
    6.1 查看已经加载的proxy模块,默认是没有(视乎版本)
    [[email protected] bin]# ./httpd -M|grep proxy
    6.2 修改需要加载的proxy模块
    打开/usr/local/apache2/conf/httpd.conf文件(/usr/local/apache2是httpd的安装目录),查找mod_proxy.so和mod_proxy_http.so,把开头的#去掉:
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.s
    另外还需要加载Virtial hosts的配置,查找httpd-vhosts.conf,把开头的#去掉:

    Virtual hosts

    Include conf/extra/httpd-vhosts.conf

  • 启用Virtual hosts需要mod_log_config.so模块,它是默认加载的,确认开头是没有#:
    LoadModule log_config_module modules/mod_log_config.so
    重启
    [[email protected] bin]# ./httpd -k restart
    重新查看已经加载的proxy模块,这个时候应该出现如下所示的2个模块证明加载成功:
    [[email protected] bin]# ./httpd -M|grep proxy
    ?proxy_module (shared)
    ?proxy_http_module (shared)
    6.3 如果需要使用ssl,需要按照上述方法加载mod_ssl.so模块:
    LoadModule ssl_module modules/mod_ssl.so
    以及Secure (SSL/TLS) connections配置,把开头的#去掉:

    Secure (SSL/TLS) connections

    Include conf/extra/httpd-ssl.conf

  • 启用Secure (SSL/TLS) connections需要以下模块,确认开头的#已经去掉:
    LoadModule log_config_module modules/mod_log_config.so
    LoadModule setenvif_module modules/mod_setenvif.so
    LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
    6.4 配置HTTP反向代理
    打开/usr/local/apache2/conf/extra/httpd-vhosts.conf文件(/usr/local/apache2是httpd的安装目录),修改节点<VirtualHost :80>:
    <VirtualHost
    :80>
    ? ? ServerAdmin [email protected] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#管理员邮箱
    ? ? DocumentRoot "/usr/local/apache2/htdocs" ?#应用文件根目录,在安装目录下面
    ? ? ServerName xxx.com ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #监听的域名或者ip
    ? ? ErrorLog "logs/error.log" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#错误日志相对路径
    ? ? CustomLog "logs/access.log" common ? ? ? ? ?#访问日志相对路径
    ? ? ProxyVia Off ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #用于控制在http首部是否使用Via,off
    ? ? ProxyRequests Off ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#是否开启apache正向代理的功能,off
    ? ? ProxyPreserveHost On ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#是否使用转发,On
    ? ? ProxyPass / http://ip:port/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #监听的路径和转发的路径,根据实际情况修改
    ? ? ProxyPa***everse / http://ip:port/ ? ? ? ? ? ? ? ? ? #需要输入http://和最后面的/
    </VirtualHost>
  • 如果需要使用多个不同端口,可以配置多个<VirtualHost *:端口>节点
  • 修改任何conf文件保存后都必须重启httpd
    6.5 配置HTTPS反向代理
    打开/usr/local/apache2/conf/extra/httpd-ssl.conf文件(/usr/local/apache2是httpd的安装目录),修改以下配置:

    监听的HTTPS端口,默认是443

    Listen 443

    Inter-Process Session Cache:

    Configure the SSL Session Cache: First the mechanism?

    to use and second the expiring timeout (in seconds).

    SSLSessionCache ? ? ? ?"shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
    SSLSessionCacheTimeout ?300

    SSL Virtual Host Context

    <VirtualHost default:443> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#端口需要和上面一致
    ? DocumentRoot "/usr/local/apache2/htdocs" #应用文件根目录,在安装目录下面
    ? ServerName www.xxx.com ? ? ? ? ? ? ? ? ? ? ? ? ? ? #监听的域名或者ip
    ? ServerAdmin [email protected] ? ? ? ? ? ? ? ? ? ? ? ? ? ? #管理员邮箱
    ? ErrorLog "/usr/local/apache2/logs/ssl_error.log" ? ? ? ? ? ?#错误日志路径
    ? TransferLog "/usr/local/apache2/logs/ssl_access.log" ?#访问日志路径
    ? SSLEngine on ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#启用SSLEngine
    ? SSLProxyEngine on ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#启用SSLProxyEngine
    ? #如果使用RSA或DSA或ECC certificate的话也要一起列出
    ? SSLCertificateFile "/usr/local/apache2/conf/server.crt" ? ? #Server Certificate证书路径
    ? SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" ?#Server Private Key路径
    ? #下面是可选的,如果有的话,需要去掉前面的#
    ? #SSLCertificateChainFile "/usr/local/apache2/conf/server-ca.crt" ?#Server Certificate Chain
    ? #SSLCACertificatePath "/usr/local/apache2/conf/ssl.crt" ? ? ? ? ? #Certificate Authority (CA)
    ? #Certificate Revocation Lists (CRL)
    ? #SSLCARevocationPath "/usr/local/apache2/conf/ssl.crl"
    ? #SSLCARevocationFile "/usr/local/apache2/conf/ssl.crl/ca-bundle.crl"
    ? #SSLCARevocationCheck chain
    ? #Client Authentication (Type):
    ? #SSLVerifyClient require
    ? #SSLVerifyDepth ?10
    ? #TLS-SRP mutual authentication
    ? #SSLSRPVerifierFile "/usr/local/apache2/conf/passwd.srpv"
    ? #定制化格式日志
    ? CustomLog "/usr/local/apache2/logs/ssl_request.log" \
    ? ? ? ? ? "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    ? #监听的路径和转发的路径,根据实际情况修改,需要输入https://和最后面的/
    ? ProxyRequests Off
    ? ProxyPass / https://ip:443/ ? ? ? ? ? ? ? ?
    ? ProxyPa***everse / https://ip:443/ ? ? ? ? ? ??
    </VirtualHost>

原文地址:http://blog.51cto.com/niming2008/2136413

时间: 2024-11-06 09:32:56

编译安装Apache HTTP Server 2.4.23 以及配置HTTP/HTTPS反向代理的相关文章

下载编译安装Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理

http://blog.csdn.net/gangchengzhong/article/details/52910225 [注意,在编译make时出现的错误并不是文章中说的openssl的版本问题,而是./configure的时候没有指定openssl的安装地址  --with-ssl=/usr/local/ssl] ===>    http://coolio.blog.51cto.com/680971/1400912

马哥Linux培训学习——编译安装Apache HTTP Server 2.4.10

目的:通过编译安装httpd, 掌握基于Linux环境下源代码编译安装程序的一般方法和步骤. 环境: 操作系统:CentOS 6.5 内核版本:2.6.32-431.el6.i686 软件版本:Apache HTTP Server 2.4.10 软件下载: 1.Apache HTTP Server 2.4.10 (httpd): http://apache.dataguru.cn//httpd/httpd-2.4.10.tar.bz2 2.Apache Portable Runtime 1.5.

使用本脚本可以自动批量完成中间节点环境的部署工作,包括:Nginx编译安装、添加程序管理脚本、设置开机启动、反向代理配置、证书分发、添加iptables规则等

使用本脚本可以自动批量完成中间节点环境的部署工作,包括:Nginx编译安装.添加程序管理脚本.设置开机启动.反向代理配置.证书分发.添加iptables规则等.脚本支持自定义nginx安装版本.设置编译模块.配置监听端口等. 1. Nginx Role规则说明 本脚本用于中间节点(Nginx反向代理)环境的自动化配置,主要内容包括: 安装基础依赖环境: 创建nginx启动用户(支持自定义用户): 下载nginx安装文件(可自定义nginx版本): 解压安装文件: 执行编译安装(可自定义编译参数和

【apache http server安装】CentOS上编译安装Aapche Http Server详细过程

下载apache httpd # wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.10.tar.gz 2. 解压 apache httpd # tar xzvf httpd-2.4.10.tar.gz 编译apache httpd [[email protected]]# ./configure checkingfor chosen layout... Apache checkingfor working mkdir -p... yes

Linux编译安装Apache的详细过程

LAMP 是 Linux Apache MySQL PHP 的简写,其实就是把 Apache,MySQL 以及 PHP安装在 Linux 系统上,组成一个环境来运行 PHP 的脚本语言.Apache 是最常用的 WEB 服务软件,所以安装Apache必不可少,其中编译安装Apache又尤为重要,接下来我一步步来编译安装Apache. 具体步骤: 1,准备工作:首先保证有Linux系统的PC或者服务器,我这里是CentOS6.8的64位的系统(最小化安装):然后得保证你系统能正常使用wget,因为

源码编译安装Apache

编译安装Apache 系统环境:centos 7.2 前提: 提供开发工具及开发环境 开发工具:make, gcc等 开发环境:开发库,头文件 glibc:标准库 方式: 通过"包组"提供开发组件 centos 6 [[email protected] ~]# yum groupinstall "Development Tools" [[email protected] ~]# yum groupinstall "Development tools&quo

Centos6.7 编译安装 Apache PHP

Centos6.7 编译安装 Apache PHP ##### Apache 编译安装 #### [[email protected] ~]# yum install gcc gcc-c++ make wget [[email protected] ~]# yum install zlib-devel openssl-devel [[email protected] ~]# yum install -y perl perl-devel 1) apr [[email protected] src]

Linux下编译安装Apache httpd 2.4

Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.当前Apache版本为2.4,本文主要描述基于CentOS 6.5以源码方式安装Apache httpd. 一.编译安装的优势 源码的编译安装一般由3个步骤组成: 配置(configure),通常依赖gcc编译器,binutils,glibc.配置软件特性,检查编译环境,生成 Makefile文件 编译(make) 安装(make ins

配置网络YUM源和第三方YUM源及编译安装Apache

配置网络YUM源和第三方YUM源及编译安装Apache 系统软硬件环境平台: VMware Workstation Pro 12.5.5 build-5234757 CentOS Linux release 7.3.1611 内核版本:3.10.0-514.el7.x86_64 测试时间:2017年6月13日 实验1:实现网络YUM源 1.准备相关系统光盘,搭建网络服务ftp或http [执行命令]#ls /mnt [执行命令]#mount | grep "/dev/sr0" [执行命