一、 apache安装
1. apache安装
1) httpd-2.2.23版本编译命令:
./configure --prefix=/usr/local/apache2 (安装目录参数后面可以不加任何参数,直接安装即可)
make
make install
2) httpd-2.4.4版本编译命令:
./configure--prefix=/usr/local/apache2 --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre (除了指定Apache的安装目录外,还要安装apr、apr-util、pcre,并指定参数)
make
make install
在编译Apache(在安装httpd-2.4.3时遇到的问题)时分别出现了aprnot found、APR-util not found、pcre-config for libpcre not found的问题,下面就httpd-2.4.3的这些问题解决来实际操作一把。安装遇到问题
2. 安装apache ssl
1.1的apache安装方法安装的apache 是不带任何扩展模块的,因此如需要重定向、代理等服务,而ssl服务模块却不能通过加载模块的形式进行加载因此,采用下面的方式进行安装。而在安装的时候发现部分apache源码安装包中自带的apr 和apr-util默认安装有问题以及在不同的linux系统中对应的openssl的版本不同而1.0e之前的openssl版本对https服务的tsl支持较差因此下面是对应指定apr apr-util openssl三个的apache全量model模块的安装
1) 安装APR
[root@web1 httpd-2.2.19]# cd srclib/apr
[root@web1 apr]# ./configure--prefix=/usr/local/apr
[root@web1 apr]# make
[root@web1 apr]# make install
2) 安装APR-util
[root@web1 httpd-2.2.19]# cd srclib/apr-util
[root@web1 httpd-2.2.19]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@web1 httpd-2.2.19]# make && makeinstall
3) 安装openssl
openssl编译:
./config --prefix=/usr/local/apache/openssl -fPIC no-gost no-shared no-zlib
make depend
make install
4) 安装apache
Httpd-2.2.31版本的安装:
./configure --prefix=/apache/apache2--with-ssl=/apache/openssl --with-apr=/apache/apr --with-apr-util=/apache/apr-util--enable-ssl --enable-modules=all --enable-so --enable-mods-shared=all
make
make install
apache模块加载:
Httpd-2.4.4版本的安装:
2.4以上的版本安装需要pcre依赖库
所以安装的时候需要提前安装pcre
./configure --prefix=/apache/apache2441--with-ssl=/apache/openssl101t --with-apr=/apache/apr--with-apr-util=/apache/apr-util --with-pcre=/apache/pcre --enable-ssl--enable-modules=all --enable-so --enable-mods-shared=all
二、 apache部署应用
1. apache启停
检测系统默认apache是否开启
ps –ef| grep httpd
然后可以到指定目录下停止原有服务
然后切到apache的bin目录下
启动命令: /apache/apache2/bin/apachectlstart
停止命令: /apache/apache2/bin/apachectlstop
重启命令: /apache/apache2/bin/apachectlrestart
网站放在/apache/apache2/htdocs目录下
在IE中通过http://localhost:80,如果看到页面中显示“It works!”字样,则代表Apache验证通过。如果网站的index后缀是PHP格式的,则要修改httpd.conf配置文件(/apache/apache2/conf),在DirectoryIndex增加 index.php。
2. apache模块加载
进入Apache源码包,添加所需的模块
# cd httpd-2.2.18/modules
# /apache/apache2/bin/apxs -c -i -a proxy/mod_proxy.c proxy/proxy_util.c
# /apache/apache2/bin/apxs -c -i -a proxy/mod_proxy_http.c
# /apache/apache2/bin/apxs -c -i -a proxy/mod_proxy_connect.c
# /apache/apache2/bin/apxs -c -i -a proxy/mod_proxy_ajp.c
# /apache/apache2/bin/apxs -c -i -a proxy/mod_proxy_balancer.c
# /apache/apache2/bin/apxs -c -i -a generators/mod_status.c
添加完成后,在httpd.conf中可以看到以下配置:
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so
然后在启动apache的时候可能会遇到模块不存在的问题(如:mod_proxy_ajp.so)用不到的模块 注释掉即可
3. apache配置
1) 代理配置
进入apache安装目录的conf下 # cd /apache/apache2/conf/
创建 mod_proxy 主配置文件
vimextra/httpd-proxy.conf
ProxyRequestsOn
ProxyPreserveHostOn
ProxyPassMatch /*.gif$ ! #过滤gif
ProxyPassMatch /*.jpg$ ! #过滤jpg
ProxyPassMatch /*.png$ ! #过滤png
ProxyPassMatch /*.css$ ! #过滤css
ProxyPassMatch /*.js$ ! #过滤js
ProxyPassMatch /*.htm$ ! #过滤htm
ProxyPassMatch /*.html$ ! #过滤html
ProxyPassMatch /*.json$ ! #过滤 json
ProxyPassMatch /*.exe$ ! #过滤 exe
ProxyPassMatch /*.cab$ ! #过滤cab
ProxyPass /appa http://100.100.12.117:6001/appa
ProxyPass /appb http://100.100.12.117:6005/appb
SetEnv force-proxy-request-1.0.1
SetEnv proxy-nokeepalive 1
vimhttpd.conf修改Apache主配置文件,使其关联mod_proxy主配置文件
Includeconf/extra/httpd-proxy.conf
重新启动Apache
/apache/apache2/bin/apachectl restart
2) 重定向配置
进入apache安装目录的conf下在主配置文件 http.conf中引用重定向模块
LoadModule rewrite_modulemodules/mod_rewrite.so
然后在代理配置文件httpd-proxy.conf加上
RewriteEngineOn #打开重定向开关
RewriteRule^/corporbank$ /corporbank/login.html [R=301,L] #设定重定向规则
3) 虚机配置
进入apache安装目录的conf下在主配置文件 http.conf中引用虚机模块
LoadModulerewrite_module modules/…
简单虚机配置
<VirtualHost*:80>
DocumentRoot"/phpstudy/www/qdjxWebSite" #网站根目录
ServerName www.qdjxbank.com #网站访问域名
ServerAlias qdjx.net qdjx.cn #网站访问别名 可以设置多个 空格分割
<Directory"/phpstudy/www/qdjxWebSite">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny #禁止访问
Allow from all #允许访问
Require all granted
</Directory>
</VirtualHost>
4) https配置
https的配置是基于虚机的,进入apache安装目录的conf下在主配置文件 http.conf中引用ssl模块
LoadModulerewrite_module modules/…
https服务的搭建需要提前准备https的站点证书,然后进行下面的配置
NameVirtualHost*:6008 #监听端口 默认是443
NameVirtualHost*:443
<VirtualHost*:6008>
DocumentRoot"/apache/apache2/htdocs"
ServerName*
ErrorLog"/apache/apache2/logs/error_log"
TransferLog"/apache/apache2/logs/access_log"
<Directory"/apache/apache2/htdocs">
# Options None
# Options Indexes FollowSymLinks
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Location/>
Order Allow,Deny
Deny from all
</Location>
SSLEngineon
SSLProtocolall -SSLv2 TLSv1
SSLCipherSuiteHIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile"/apache/apache2/conf/deny/deny.crt"
SSLCertificateKeyFile"/apache/apache2/conf/deny/deny.key"
SSLCertificateChainFile"/apache/apache2/conf/deny/ca.crt"
</VirtualHost>
代理配置和重定向的配置是可以放到虚机的配置中 如下:
<VirtualHost*:6008>
DocumentRoot"/apache/apache2/htdocs"
serverName a.bank1.top
ErrorLog "/apache/apache2/logs/error_log"
TransferLog"/apache/apache2/logs/access_log"
SSLEngine on
SSLProtocol all -SSLv2 TLSv1
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile"/apache/apache2/conf/huxian/server.crt"
SSLCertificateKeyFile"/apache/apache2/conf/huxian/server.key"
SSLCertificateChainFile"/apache/apache2/conf/huxian/cfca.crt"
ProxyRequestsOff
ProxyPreserveHost On
RewriteEngine On
ProxyPassMatch ^/$ !
ProxyPassMatch ^(/.*\.gif)$ !
ProxyPassMatch ^(/.*\.jpg)$ !
ProxyPassMatch ^(/.*\.png)$ !
ProxyPassMatch ^(/.*\.css)$ !
ProxyPassMatch ^(/.*\.ico)$ !
ProxyPassMatch ^(/.*\.js)$ !
ProxyPassMatch ^(/.*\.htm)$ !
ProxyPassMatch ^(/.*\.html)$ !
ProxyPassMatch ^(/.*\.json)$!
ProxyPassMatch ^(/.*\.exe)$ !
ProxyPassMatch ^(/.*\.cab)$ !
RewriteRule ^/perbank$/perbank/index.html [R=301,L]
ProxyPass /perbankhttp://100.100.12.117:8124/perbank
ProxyPassReverse /perbank http://100.100.12.117:8124/perbank
RewriteRule ^/corporbank$/corporbank/login.html [R=301,L]
ProxyPass /corporbankhttp://100.100.12.117:8124/corporbank
ProxyPassReverse /corporbankhttp://100.100.12.117:8124/corporbank
SetEnv force-proxy-request-1.0.1
SetEnv proxy-nokeepalive 1
</VirtualHost>
三、 安装遇到问题
1. 解决apr not found问题
[root@localhost bin]# tar -zxfapr-1.4.5.tar.gz
[root@localhost apr-1.4.5]# ./configure--prefix=/usr/local/apr
[root@localhost apr-1.4.5]# make
[root@localhost apr-1.4.5]# make install
2. 解决APR-util not found问题
[root@localhost bin]# tar -zxfapr-util-1.3.12.tar.gz
[root@localhost apr-util-1.3.12]# ./configure--prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config
[root@localhost apr-util-1.3.12]# make
[root@localhost apr-util-1.3.12]# make install
3. 解决pcre-config for libpcre not found问题
[root@localhost ~]# unzip pcre-8.31.zip
[root@localhost ~]# cd pcre-8.31
[root@localhost pcre-8.31]# ./configure--prefix=/usr/local/pcre
[root@localhost pcre-8.31]#make[root@localhost pcre-8.31]# make install
在make pcre的时候如果出现libtool: line 990:g++: command not found错误,则说明没有安装gcc+,装上gcc+就可以编译过去
安装命令:yum install gcc gcc-c++
4. 解决https启动时报错算法命令问题
启动时需要打开模块:
LoadModulessl_module modules/mod_ssl.so
LoadModulesocache_shmcb_module modules/mod_socache_shmcb.so