重点内容这些天一直在弄这个环境变量终于弄好了 简直坑啊
之前也写了一个 做了一些具体的说明这里就不说了 不过有点小碧油鸡 所以重写一下 看这个的时候没有注释的地方可以参考下
http://blog.csdn.net/u011685720/article/details/48437677
其实我就是偷懒不想重写下啦啦啦啦啦啦
———————-我是卖萌的分割线
1.软件版本
apache-tomcat-7.0.64
ActivePerl_5.16.2.3010812913
Apache_HTTP_Server_2.4.12_JiSuXia
Win64OpenSSL-1_0_0s
jdk-7u79-windows-i586
perl的话可能会有一些命令类库要用到 或者还有vc2008 其实都是在输入命令不存在或者是各种dll错误的
2.apache配置
首先定义一个本机的主机名 timoRun 然后来加一个域名作为servername使用timoRun.com.cn
于是httpd.conf中的配置文件就可以这样写
@主机名 监听80端口 当然这个是全家的变量
ServerName auth-server.master.nttdata.co.jp:80
这是文件地址的配置
@有错误时email这个地址 基本不用
ServerAdmin admin@auth-server.master.nttdata.co.jp.com
@这个地址是apache发布web工程的文件夹 把他指向tomcat下的web工程文件夹
DocumentRoot "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\webapps"
@这个是对于文件目录的各种请求的全局权限 在设立虚拟主机时会用到
<Directory "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\webapps">
Options Indexes FollowSymLinks
AllowOverride all
@允许各种请求 具体可以看文档说明
Require all granted
</Directory>
这里有一个很好玩的地方
<Directory />
AllowOverride none
Require all denied
</Directory>
根据apache文档的说明
说明 封装一组指令,使之仅对文件空间中的某个目录及其子目录生效
语法 <Directory directory-path> ... </Directory>
作用域 server config, virtual host
状态 核心(C)
模块 core
说明
<Directory>和</Directory>用于封装一组指令,使之仅对某个目录及其子目
录生效。任何可以在"directory"作用域中使用的指令都可以使用。
Directory-path可以是一个目录的完整路径,或是包含了Unix shell匹配语
法的通配符字符串。在通配符字符串中,"?"匹配任何单个的字符,"*"匹配
任何字符序列。您也可以使用"[]"来确定字符范围。以上通配符都不能匹
配"/"字符。所以 “<Directory /*/public_html>”将无法匹
配/home/user/public_html ,但<Directory /home/*/public_html>能
够正确匹配。比如说:
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
</Directory>
使用directory-path参数的时候要注意:它们必须与Apache用于访问文件的文件
系统路径保持一致。赋予特定<Directory>的指令将无法对通过不同路径指向的同
一个目录文件生效,比如说通过另外一个符号连接生成的路径。
扩展的正则表达式也可以通过附加一个"~"字符来使用。比如说:
<Directory ~ "^/www/(.+/)*[0-9]{3}">
将匹配/www/下所有由3个数字组成的目录。
如果那么说不明白 说白了就是圈起来一块代码块 然后对代码块生效各种配
置属性
于是那么问题来 当几个这样的 <Directory></Directory>
重复出现 同
时之间所圈定的目录有交叉或者没有交叉的情况如何做呢
于是有下面的操作
如果有多个(非正则表达式)<Directory>配置段符合包含某文档的目录(或其父目
录),那么指令将以短目录优先的规则进行应用。并包含.htaccess文件中的指令。
比如说在
<Directory />
AllowOverride None
</Directory>
<Directory "/home/">
AllowOverride FileInfo
</Directory>
中,访问文档/home/web/dir/doc.html的步骤如下:
* 应用指令AllowOverride None(禁用.htaccess文件)。
* 应用指令AllowOverride FileInfo(针对/home目录)。
* 按顺序应用所有/home/.htaccess 、/home/web/.htaccess 、/home/web/dir/.htaccess中的FileInfo组指令。
正则表达式将在所有普通配置段之后予以考虑。所有的正则表达式将根据它们出现在
配置文件中的顺序进行应用。比如说,以下配置:
<Directory ~ abc$>
# ......
</Directory>
正则表达式配置段将在所有普通的<Directory>和.htaccess文件应用之后才予以
考虑。所以正则表达式将匹配/home/abc/public_html/abc并予以应用。
请注意:Apache对<Directory />的默认访问权限为"Allow from All"。这意
味着Apache将伺服任何通过URL映射的文件。我们建议您将这个配置做如下屏蔽:
<Directory />
Order Deny,Allow
Deny from All
</Directory>
然后在您想要使之被访问的目录中覆盖此配置。参阅安全提示以获取更多详情。
一般来说<Directory>指令只会出现在httpd.conf文件中,但它们也可能出现在
任何其它配置文件中。<Directory>指令不可被嵌套使用,也不能出现在<Limit>
或<LimitExcept>配置段中。
所以在httpd.conf下可以看到默认有两个这样的代码块
<Directory />
AllowOverride none
Require all denied
</Directory>
//和
<Directory "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\webapps">
Options Indexes FollowSymLinks
Options Indexes FollowSymLinks
Require all granted
</Directory>
//那么上述的顺序就是先全局否定一切连接请求 之后再在webapps下设定可以请求
与否的权限
//于是可以这样设置一个小技巧
@否定一切请求
<Directory "/var/www/html/secret">
AllowOverride none
Require all denied
</Directory>
@在httpd-ssl中设置那些请求通过加密访问 那些只是通过普通的80端口访问
<Directory "/var/www/html/secret">
Allow from ALL
</Directory>
//弄清楚了这个关键配置之后似乎调教httpd.conf有点意思了
这之后再来配置连接tomcat的mod_jk.so 至于怎么放置看上一篇 这里只是总结一下 这个本来就是笔记
LoadModule jk_module modules/mod_jk.so
JKWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
<VirtualHost *>
@这里有一个很有意思的地方 就是<VirtualHost *>我写成了
<VirtualHost auth-server.master.nttdata.co.jp :80>或者
<VirtualHost *:80> 这样其实在hosts中绑定域名之后都是可以的 但是在其他
电脑访问这台主机的时候localhost加密却是访问apache manager的根目录 所
以暂时没有好的解决办法的情况下 还是中规中矩的写吧
ServerName auth-server.master.nttdata.co.jp
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Tomcat 7.0/webapps"
DirectoryIndex index.html index.htm index.jsp index.action
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
@当然有强迫症的孩子可以这样定义文档输出格式
-------------- ----------
LogFormat "{method:\"%m\",state:\"%s\",protocol:\"%H\",url:\"%U\",time:\
Agent}i\",query:\"%q\",refer:\"%{Referer}i\",server:\"%V\"}"
seo
CustomLog "|/usr/sbin/rotatelogs logs/seo_%Y%m%d.log 86400 480" seo
</VirtualHost>
------------------------
JkMount /*WEB-INF tomcat
JkMount /*j_spring_security_check tomcat
JkMount /*.action tomcat
JkMount /servlet/* tomcat
JkMount /*.jsp tomcat
JkMount /*.do tomcat
JkMount /*.action tomcat
JkMount /jkstatus status
JkMount /*.servlet tomcat
@其实关键在这里 这里有一个小问题 就是当apache指向tomcat的默认界面之后
不会解析jsp页面的图片 那么就把这些图片一起交给tomcat好了 当然也许会有
更好的方法 只是我现在还没有发现 先这么写吧 同时要注意这里和
DocumentRoot所代表的地址构成的相对路径
JkMount /*.gif tomcat
JkMount /*.jpg tomcat
JkMount /*.png tomcat
JkMount /*.css tomcat
JkMount /*.js tomcat
JkMount /*.htm tomcat
JkMount /*.html tomcat
</VirtualHost>
接下来是mod_jk.so的配置文件 上面只是提到了加载那个模块以及模块的配置文件在哪 其实向上述的虚拟主机设置可以单独建一个例如system.conf 然后使用include命令来加载 具体的可以百度下 只是我觉得那样很烦人 没有那么处理 同时还有一点就是下面这个配置文件放在tomcat下或者apache下都没有问题 只要你在配置文件中将它的位置说明就可以了
把这个配置文件定义为workers.properties
workers.tomcat_home=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0
workers.java_home=C:\Program Files (x86)\Java\jre7
ps=/
worker.list=tomcat
worker.tomcat.type=ajp13 //这个ajp13 是协议不要弄错了
worker.tomcat.host=localhost
worker.tomcat.port=8009
worker.tomcat.socket_keepalive=1
worker.tomcat.socket_timeout=300
worker.tomcat.lbfactor=1
worker.list = status
worker.status.type=status
//在上面里面多添加了几句话 应用到的是如下的模块 这个是apache自己的jkstatus的模块 用来监听各个服务器和端口的
//workers.properties 配置文件中加入 下面两行
worker.list = status
worker.status.type=status
//mod_jk.conf 配置文件中加入下面一行
JkMount /jkstatus status
//之后http://localhost/jkstatus 就可以访问了
//当然这个是没有密码访问的情况的 如果受虐心态比较重 你也可以这样来加密
//如下三种方法
//1 禁制其他访问,只限制部分ip的访问
//通过一下设置,注意别写反了,关于deny和allow见http://www.blogjava.net/freeman1984/archive/2011/10/31/362372.html
<Location /jkstatus>
Order deny,allow
Deny from all
Allow from 某个ip
</Location>
//或者全部不让访问
<Location /jkstatus>
Order deny,allow
Deny from all
</Location>
//2 不在worker里面配置status的worker。这样有可能默认交给了tomcat处
//理,最后也许看到的就是可爱的404界面。
//3 添加密码通过配置(有几种方式,basic,digest 其他?),这个就basic介
//绍一下
<Location /jkstatus>
Order deny,allow
AuthType Basic
AuthName “验证中心” #弹出框的提示
AuthUserFile conf/jk_passwd
require valid-user
</Location>
//生成密码文件的方式如下(以windows为例:htpasswd -bc 文件路径 用户名 密码):
d:\Apache2.4\bin>htpasswd -bc "d:\Apache2.4\conf\jk_passwd" name passwd
//然后生成d:\Apache2.4\conf\jk_passwd这个密码文件
3.tomcat的配置文件
其实到上面的地方已经完成了 但是如果还有很多各种小bug 那么加点多余的东西也许可以
环境变量配置 CATALINA_BASE D:\Apache2.4
CATALINA_HOME D:\Apache2.4
CLASS_PATH %CATALINA_HOME%\lib\servlet-api.jar
恩 这里也有一个很好玩的地方
C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\conf
下的server.xml文件 最后结尾添加上这句话 这句话的意思就是不在默认跳
转tomcat 的默认界面而是直接跳转apache下的htdoc文件夹
<Context docBase="C:\Apache24\htdocs" crossContext="true" path="" reloadable="true" />
4.ssl 协议
先来说配置文件
httpd.conf 下 取消注释LoadModule ssl_module modules/mod_ssl.so
和这句Include conf/extra/httpd-ssl.conf
下面的放置私钥和证明书的地方
SSLCertificateFile "D:/tools/httpd/cert/server.crt"
SSLCertificateKeyFile "D:/tools/httpd/cert/server.key"
C:\Apache24\conf\extra httpd-ssl.conf
Listen auth-server.master.nttdata.co.jp:443
-----------------------
<VirtualHost _default_:443> // 因为如果在这
//写了servername和端口 下面的servername和端口是不用重复写的
General setup for the virtual host
DocumentRoot "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\webapps"
ServerName auth-server.master.nttdata.co.jp:443
ServerAdmin admin@auth-server.master.nttdata.co.jp.com
--------------------------
上面哪里是最开始的地方 但是我忽略的这个也是个虚拟机 重新处理之后如下
---------------------------
<VirtualHost auth-server.master.nttdata.co.jp:443>
DocumentRoot "C:\Program Files (x86)\Apache Software
Foundation\Tomcat 7.0\webapps"
#ServerName auth-server.master.nttdata.co.jp
ServerAdmin admin@auth-server.master.nttdata.co.jp.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
SSLEngine on
//重点的是下面
DirectoryIndex index.html index.htm index.jsp index.action
JkMount /*WEB-INF tomcat
JkMount /*j_spring_security_check tomcat
JkMount /*.action tomcat
JkMount /servlet/* tomcat
JkMount /*.jsp tomcat
JkMount /*.do tomcat
JkMount /*.action tomcat
JkMount /jkstatus status
JkMount /*.servlet tomcat
JkMount /*.gif tomcat
JkMount /*.jpg tomcat
JkMount /*.png tomcat
JkMount /*.css tomcat
JkMount /*.js tomcat
JkMount /*.htm tomcat
JkMount /*.html tomcat
加入上述语句就完美解决了https进入默认的变态猫界面会是根目录了 因为 之前根本没有处理!
--------------------------
以上配置就完了
下面是制作方法
http://blog.csdn.net/u011685720/article/details/48347099
虽然我们安装了openssl 但是在apache2.4下已经兼容了openssl 所以直接在cmd界面下进入apache的bin目录来执行各种代码就好了 以为我发现也可以为tomcat添加ssl协议已经制作专门登陆用的ssl界面 其他的界面则是通过普通的url方法 所以这里偷个懒 等那个整合到一起之后再写吧 其实写了也没人看 啦啦啦啦啦
附录一下host修改
172.16.170.203(虚拟机ip) vim-ap.ccav.co.jp web-server.ccav.co.jp auth-server.slave.ccav.co.jp auth-server.master.ccav.co.jp
127.0.0.1 auth-server.ccav.co.jp auth-server
-----------
(实体主机的hosts)
127.0.0.1 localhost
172.16.170.203 vim-ap.ccav.co.jp web-server.ccav.co.jp auth-server.slave.ccav.co.jp auth-server.master.ccav.co.jp
其实本机ip localhost 域名什么的 都是一个东西
如下
localhost 域名 主机名
127.0.0.1 auth-server.ccav.co.jp auth-server