apache学习
来源:互联网 发布:seo图文教程 编辑:程序博客网 时间:2024/05/08 10:42
1 服务器基本配置:
ServerName 主机的名字。
ServerAdmin 在报错的时候,显示给站点使用者向开发者报告错误的信息。一般推荐设置为email 。
ServerRoot apache的安装目录。
DocumentRoot 网页文件的存储地址
Alias 给路径起个别名,可以用于隐藏真实文件的位置。
PidFile 记录apahe夫进程的进程号的文件。
Listen 监听的端口号
User 启动守护进程时的用户
Group 启动守护进程的用户所在的组
Timeout 一次链接的过期时间
KeepAlive 是否保持常连接
MaxKeepAliveRequests 一次常连接所接受的最大请求数(在KeepAlive设置为 on时有效)
KeepAliveTimeout 常连接的过期时间
MaxRequestsPerChild 每个子进程的最大请求数目
2 访问控制:
可以使用<Directory> <File> <Location>进行访问控制,
<Directory> 文件系统目录的访问权限控制
<File> 文件的访问控制
<Location> 网路路径(url)的访问控制。
常用的选项 Options Allow Deny
注意的是 这三个节点访问控制,支持perl的正则表达式。
3 虚拟主机: 在一个apache中同时启动多个网站的技术。
基于域名的:使用不同的域名区分不同的主机。不再推荐。(因为需要进行域名反解析,在解析失败时,服务将无法启动)
基于Ip的:分为但个ip的,多个ip的 ,单个端口的 多个端口的。最常用的为 基于单ip单端口支持。
配置:
NameVirtualHost:*.80
<VirtualHost:*.80>
DocumentRoot
ServerName www.chengsen.com
</VirtualHost>
4 代理与反向代理
apache可以作为web代理服务器和反向代理服务器使用。
代理服务器:即客户不直接访问某个地址,而是使用某台开启了 代理服务的 服务器,进行访问。
ProxyRequests On
<Proxy *>
Order allow,deny
Allow from all
Deny from 127.0.0.1
</Proxy>
这个配置说明,允许除了本机以外的服务器访问代理。
反向代理:发向本机的访问,有重新被发送到新的机器上,由其它机器进行请求的处理,处理完毕后,返回本机。
以前的方式 是使用 ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /test http://www.163.com/
ProxyPassReverse /test http://www.163.com/
Apache+jboss+jk集群配置(linux)
1准备安装软件
a :jdk1.6
b:apache2.2
c: mod_jk_1.2.31.so
d:jboss4
2安装和配置(ubuntu操作系统)
1:jdk安装,安装完成后记得配置环境变量(ubuntu下就用aget安装无需在配置)(这里不多说了你懂得)
这样就OK了
2: mod_jk_1.2.31.so去apache网站下载 http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/v1.2.1/bin/linux/i386/\\ 3:apache2.2 去apache官方网站下载安装(ubuntu下就用aget安装 安装后的文件目录在/etc/apache2)
修改主配置 增加下面两行
增加配置,如果apache目录下没有conf 可以新建一个目录
在新建一个文件workers.properties 和mod_jk.conf
workers.properties内容如下
# 定义request所要转发到的节点
worker.list=loadbalancer,status
# 定义节点 Node1
worker.node1.port=8009 # jboss默认ajp13端口(不是http端口)
worker.node1.host=192.168.128.130 #jboss主机ip
worker.node1.type=ajp13
worker.node1.lbfactor=1 #这个值越大分配到的请求越多
# 定义节点 Node2
worker.node2.port=8009
worker.node2.host=192.168.128.132
worker.node2.type=ajp13
worker.node2.lbfactor=1
# 负载配置
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=0 #代表request分配方式"0"按jboss性能分. "1"按用户分
worker.status.type=status
mod_jk.conf配置内容如下
# Load mod_jk module. Specify the filename
# of the mod_jk lib you?¡¥ve downloaded and
# installed in the previous section
LoadModule jk_module modules/mod_jk.so #新建一个目录modules再将下载下来的so文件重命名
# Where to find workers.properties
JkWorkersFile conf/workers.properties #刚刚上面的配置文件
# Where to put jk logs
JkLogFile logs/mod_jk.log #日志文件
# Set the jk log level [debug/error/info]
JkLogLevel info #日志等级
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer
4:jboss 下载 http://www.jboss.org/jbossas/downloads.html
修改server.xml文件
jvmRoute="node1" 代表节点 要和上面workers.properties节点对应
3启动
先启动两台jboss,完成后启动apache服务
查看我们上面配置好的mod_jk.log 文件
说明成功了
Apache配置过程遇到的问题
1. 编译参数
--prefix=/usr/alibaba/install/httpd22 --enable-so --with-included-apr --with-mpm=worker --disable-authn-file --disable-authn-default --disable-authz-groupfile --disable-authz-user --disable-authz-default --disable-auth-basic --disable-include --disable-filter --disable-status --disable-autoindex --disable-negotiation --disable-actions --disable-userdir --disable-version --disable-proxy-connect --disable-proxy-ftp --disable-proxy-scgi --disable-proxy-ajp --enable-modules='rewrite deflate headers expires proxy' --enable-mods-shared='cgid ssl include'
2. mod_deflate has been requested but can not be built due to prerequisite failures(ubuntu centent)
缺少:zlib1g-dev
安装:sudo apt-get install zlib1g-dev
3. No recognized SSL/TLS toolkit detected
缺少:openssl-devel
安装:sudo apt-get install openssl-devel
4. let not found
ubuntu用的是dash,而不是bash, 需将默认的shell改回bash
执行sudo dpkg-reconfigure dash后,选择no。
5. curl:找不到命令
缺少: curl
安装:sudo apt-get install curl
6. %w/cookie_log': Permission denied Unable to open logs
添加相关文件的执行权限
Apache Rewrite 规则跳转常见配置
1、Rewrite规则简介:
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。
基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。
2、举例说明:
例一.下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.alibaba.cn和70.40.213.183都跳转到主机前缀为http://www.alibaba.com,避免相同内容的网页有多个指向的域名,如http://alibaba.com。
NameVirtualHost
70.40
.
213.183
:
80
ServerAdmin duanxf@ alibaba.com
DocumentRoot
"/web"
ServerName alibaba.com
RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} \!^www.alibaba.com \[NC\] #声明Client请求的主机中前缀不是www.alibaba.com,其中 \[NC\] 的意思是忽略大小写
RewriteCond %{HTTP_HOST}\!^
70.40
.
213.183
\[NC\] #声明Client请求的主机中前缀不是
70.40
.
213.183
,其中 \[NC\] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} \!^$ #声明Client请求的主机中前缀不为空
RewriteRule \^(.*) http:
//www.alibaba.com/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.alibaba.com/,[L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.\*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的(.*)字符。
3.Apache mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost\[:thisport\]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量
URL重定向
例子一:
同时达到下面两个要求:
1.用http://www.alibaba.com/home.html 来访问 http://www.alibaba.com/home/
2.用http://powercctv.alibaba.com 来访问 http://www.aliaba.com/user.html?username=powercctv 的功能
RewriteEngine On
RewriteCond %{HTTP_HOST}
^www.alibaba.com
RewriteCond %{REQUEST_URI} !^home.html$
RewriteCond %{REQUEST_URI}.html$
RewriteRule (.*).html$ [http:
//www.alibaba.com/$1/] [R]
RewriteCond %{HTTP_HOST} !^www.alibaba.com
RewriteRule ^(.+) %{HTTP_HOST}[C]
RewriteRule ^([^.]+).aliaba.com [http:
//www.alibaba.com/user.html?username=$1]
例子2:
冒号问题。
假如:我们的url有冒号,这就比较痛苦了。通常的url跳转整个匹配遇到冒号是会有问题的。因为我们的url含有冒号开头。这个时候就需要采用rewritecond进行匹配。
RewriteCond %{QUERY_STRING} ^action=mcweb\:(.*)
RewriteRule \^/mcweb/contact.htm(.*)$ ${message_alibaba_com}/msgsend/contact.htm?action=%
1
[L,R,NE]
Apache的跳转如果不加任何说明他会把匹配到的字符串后面的参数全部加到新跳转的URL上面。比如上面,所有跳转到mcweb/contact.htm这个链接问号后面的参数和
RewriteCond %{QUERY_STRING} ^action=mcweb\:-( .*)
进行匹配,如果发现雷同,则跳转到message.alibaba.com/msgsend/contact.htm?action= 的后面%1就是匹配到的之后相同的字符串。如果有多个则多来几个(.*) %n就可以了
Apache的rewrite跳转还有先后顺序,如果我想^/mcweb/contact.htm(.*)$包含mcweb在内的所有访问contact.htm全部跳转到/msgsend/contact.htm 同时所有的action=mcweb: 这样的url也都跳转到
message.alibaba.com/msgsend/contact.htm?action= 这个url,那么需要在这个配置后面加一行:
RewriteRule ^/mcweb/contact.htm ${message_alibaba_com}/msgsend/contact.htm [L,R,NE]
如果我们匹配的时候只需要匹配冒号:那就比较简单了
RewriteRule ^wiki/(.*:.*) wiki/index.php?title=$
1
[L]
apache启动失败,找不到.so及解决方法
- 搭建news的时候, apache启动不了,报找不到某一个.so文件,看了一下http.conf,还写着很多需要的.so,因为news此时还是32位的,用的apache2.0,而我的开发环境是2.2.
- 为了解决,到别人机器上拷贝了一份2.0,重新启动,又报另一个错误:
/usr/ali/apache2/bin/httpd: error
while
loading shared libraries: libaprutil-
0
.so.
0
:
cannot open shared object file: No such file or directory
- google了一下,出现这个错误的原因是:动态链接库中没有添加apache2.0的库的路径,所以编译器只会使用/lib和/usr/lib这两个目录下的库文件。
- 解决方法:把apache2.0的库目录加入到动态链接库中。具体做法是:
- 将apache的lib路径加入到/etc/ld.so.conf文件
- 执行ldconfig
- ldconfig是什么?
作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用
因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig
使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的
通过apache服务器引用本地的JS以及CSS文件
一.概述
在tpolps中会引入一些JS以及CSS文件,这写文件都是通过URL的方式引入的,通过URL的方式来访问线上的JSS和CSS文件,本次项目中需要对这些CSS以及JS进行修改,这就说明我们不能在引入线上的CSS以及JS文件了,需要引入本地修改后的CSS以及JS文件,这需要Apache服务器的支持,把CSS以及JS文件放在本地,在本地配置apache服务器,然后在apache服务器上配置JS以及CSS文件的路径,启动apache就可以访问相应的文件了。
二.apache服务器的安装
sudo apt-get install apache2
然后查找一下apache2的安装路径:whereis apache2,我的路径显示为/etc/apache2
三.apache服务器的配置
进入apache的安装目录:cd /etc/apache2
然后编辑 httpd.conf文件的内容(如果没有就创建一个):
<VirtualHost *:80>
ServerName style.china.alibaba.com
DocumentRoot /home/yangbolin/workspace/EC/style_bp
RewriteEngine On
RewriteRule ^/app/bp(.*) /home/yangbolin/workspace/EC/style_bp$1 L
RewriteRule ^(.*)$ http:\/\/172\.22\.35\.70$1
</VirtualHost>
/home/yangbolin/workspace/EC/style_bp为CSS以及JS文件的路径
接下来需要在本地进行绑定:127.0.0.1 style.china.alibaba.com
四.启动/停止apache服务器
sudo a2enmod rewrite
sudo service apache2 start
sudo service apache2 stop
Apache Rewrite
今天学习了一下httpd文件下面的配置文件,发现脚本里好多东西都看不懂,如下:
<VirtualHost *>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(levit\.china\.alibaba\.com:?[
0
-
9
]*)$ [NC]
#access / or index.html, then jump to china site.
RewriteRule ^/(index.html?)?$ http:
//china.alibaba.com [L,R=301,QSA]
RewriteCond %{HTTP_HOST} ^(trust\.china\.alibaba\.com:?[
0
-
9
]*)$ [NC]
#access / or index.html, then jump to china site.
RewriteRule ^/(index.html?)?$ http:
//china.alibaba.com [L,R=301,QSA]
</VirtualHost>
不过上网查查发现里面的语法还是比较简单的,以后对脚本有看不懂的多问问身边的同事,多上网查查,你就不会觉得他们陌生了。
这里记一下RewriteEngine、RewriteRule、RewriteCond的用法,日后参考:
RewriteCond 重写规则执行条件
- 语法: RewriteCond TestString CondPattern
- 生效域: server config, virtual host, directory, .htaccess
特别的上面的 TestString, 可提供反向引用. 引用模式为: %N 其中N为(0 <= N <=9), 引用当前若干RewriteCond条件中最后符合的条件中的分组成分, 也就是括号里的内容.不过用到的不多. 反向应用多在RewriteRule里常用.
RewriteCond 语法中的 TestStrng 为要被检查的内容, CondPattern 是进行匹配的规则, 它是一个兼容Perl风格的正则表达式和一些其他的特有字符属性. 这里介绍一下.
第一个: ! (感叹号) 表示否的意思. 比如一个条件: 判断访问此页面的上一页URL是否包含 sex 字符的话可以用这样: RewriteCond %{HTTP_REFERER} !(sex)
第二个: < 就是小于的意思, TestString < CondPattern.
第三个: > 就是大于于的意思, TestString < CondPattern.
第四个: = 相等的意思. <, >, = 三个和通常程序语言使用的 <, >, = 功能类似.
第五个: -d 是否是一个目录. 判断TestString是否不是一个目录可以这样: !-d
第六个: -f 是否是一个文件. 判断TestString是否不是一个文件可以这样: !-f
第七个: -s 是否是一个正常的有大小的文件. 判断TestString是否不是一个正常的有大小的文件可以这样: !-s
第八个: -l 是否是一个快捷方式文件. 判断TestString是否不是一个快捷方式文件可以这样: !-l
第九个: -x 是否是一个文件并且又执行权限. 判断TestString是否不是一个文件并且又执行权限可以这样: !-x
第十个: -F 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
第十一个: -U 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能.
另外: RewriteCond 指令后面可带 Flag, 现在只要2个可用, 一个是 NC|nocase, 不区分大小写的意思. 一个是 OR|ornext 表示连接下一个条件的意思.
RewriteCond 实际需要使用情况比如要判断一个条件成真的时候才执行相关的重写操作. 紧接着它下面的 RewriteRule 总是在RewriteCond 条件判断为真的时候才被执行.
看下面的一个例子:
#开启服务器重写模式
RewriteEngine on
#来自 www.test.cn 的连接访问本站时都只能访问 test.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
#来自 www.test.com 的连接访问本站时都只能访问 newTest.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.com)
RewriteRule (.*)$ newTest.php
Apache,autoconfig,mod_jk,Jboss配置参数学习
从apache的配置文件参数开始,学习apache, jboss, mod_jk, jvm,log4j的配置,具体到每一个配置项内容。
之前也有学习,但局限与学习他们的功能和作用,这里深入学习到配置的每一个参数。
- Apache RewriteRule
在magellan代码的virtualhost模块(irtualhost.conf.vm)中为每一个应用的component定义了一系列的重定向规则,比如产品搜索:
## Product关键词搜索页面,新静态参数类型url
RewriteRule ^/products/F0/([
2012
-
08
-
09
Apache,autoconfig,mod_jk,Jboss配置参数学习^/]+)/([
2012
-
08
-
09
Apache,autoconfig,mod_jk,Jboss配置参数学习^/]+)/([
0
-
9
]*).html$ http:
//$tmp_target_url/product/productKeyword.vhtml?&staticParam=$2&SearchText=$1&page=$3&isF0Pattern=Y [L,P,QSA]
RewriteRule ^/products/F0/([
2012
-
08
-
09
Apache,autoconfig,mod_jk,Jboss配置参数学习^/]+)/([
0
-
9
]+).html$ http:
//$tmp_target_url/product/productKeyword.vhtml?&staticParam=&SearchText=$1&page=$2&isF0Pattern=Y [L,P,QSA]
RewriteRule ^/products/F0/([
2012
-
08
-
09
Apache,autoconfig,mod_jk,Jboss配置参数学习^/]+)/([
2012
-
08
-
09
Apache,autoconfig,mod_jk,Jboss配置参数学习^/]+).html$ http:
//$tmp_target_url/product/productKeyword.vhtml?&staticParam=$2&SearchText=$1&page=1&isF0Pattern=Y [L,P,QSA]
RewriteRule ^/products/F0/([
2012
-
08
-
09
Apache,autoconfig,mod_jk,Jboss配置参数学习^/]+).html$ http:
//$tmp_target_url/product/productKeyword.vhtml?&staticParam=&SearchText=$1&page=1&isF0Pattern=Y [L,P,QSA]
他们按照严格的perl正则表达式的方式进行URL的匹配。特别注意的是
- 右边的$1,$2,分别表示左边括号()中匹配的内容,分别按照顺序表示第一个()和第二个()中匹配的内容,以此类推。
- 右边方括号中的L, P, QSA的意义。方括号[]内的标志表示匹配整条规则之后的动作。这里分别说明这三个标记位的意思,更多详细内容可以查看Apache Rewrite Flags
标签 内容 LLast,表示停止,当匹配了当前规则之后,跳过下面的所有规则,不再进行匹配PProxy,表示代理,当前的规则将由匹配之后右边的URL对应的服务器来代理处理,这是一个反向代理QSAQsappend,参数拼接,也就是拼接完成之后,依然能够把原先的?key=value的结果保持到新的重定向的内容后面
- autoconfig
- 参数传递过程. antx.properties -> autoconfig/*.vm -> config/*.conf
这样在运行maven install的时候就可以制动生成对应的.conf文件。这其中在第一步转化中,需要注意的一点是:- 在antx.properties的变量中,变量名中包含“.”的时候,在autoconfig/*.vm中或者该变量的时候要把“.”替换成“_”。(这是antx中的规定)。
- antx运行过程中,默认就会去个人home目录下寻找antx.properties文件
- 在maven中配置antx插件
在pom.xml中告诉maven使用antx来build工程。(下面省略了部分不重要xml内容)<
groupId
>com.alibaba.maven.plugins</
groupId
>
<
artifactId
>maven-autoconf-plugin</
artifactId
>
<
configuration
>
<
destFiles
>
<
destFile
>${project.basedir}</
destFile
>
</
destFiles
>
<
includeDescriptorPatterns
>
<
includeDescriptorPattern
>**/autoconf/auto-config.xml</
includeDescriptorPattern
>
</
includeDescriptorPatterns
>
</
configuration
>
其中,在 <includeDescriptorPattern>**/autoconf/auto-config.xml</includeDescriptorPattern>中需要定义好这些配置文件.vm与.conf的对应关系,
<
generate
template
=
"virtualhost.conf.vm"
destfile
=
"conf/virtualhost.conf"
charset
=
"UTF-8"
/>
- 参数传递过程. antx.properties -> autoconfig/*.vm -> config/*.conf
- mod_jk配置
mod_jk在之前有的学习中也已经进行了学习,了解了mod_jk是负载均衡的重要模块。其中mod_jk的配置文件需要在httpd.conf中要进行配置,指定mod_jk的配置文件mod_jk.conf的位置:Include ${alibaba_intl_magellan_deploy}/conf/mod-jk.conf
其中${alibaba_intl_magellan_deploy}就是在antx.properties中的变量alibaba.intl.magellan.deploy的值。
在mod-jk.conf的文件中需要说明需要分发到的工作节点的个数,这些节点的信息配置在:JkWorkersFile ${alibaba_intl_magellan_deploy}/conf/workers.properties
mod-jk.conf中的配置信息都比较好理解,详细的配置参数可以参考work with mod_jk.
- JBoss配置
Jboss的主要配置没有其他配置复杂,修改的动态参数也不多,主要是一些classpath以及根目录的设置。主要的设置在下面的XML文件的标签中:<
mbean
code
=
"org.jboss.web.WebService"
name
=
"jboss:service=WebService"
>
其中为了能够在antx参数动态注入之后,还能够在jboss启动的同时也保留动态参数的设置,因此在jboss的.vm中经常出现:
#set ($dollar=
"$"
)
<attribute name=
"Host"
>${dollar}{jboss.bind.address}</attribute>
<attribute name=
"BindAddress"
>${dollar}{jboss.bind.address}</attribute>
这点的确比较有意思。为了能够在最后生成的.conf文件中出现$符号,这里先set一个变量为$。不知道是否可以直接使用velocity的转义字符直接对$进行转义。
- 体会
通过看antx的参数,再看.vm的配置文件,再看.conf,可以很清楚地知道,哪些参数是我们自己设置的,哪些是系统自身就有的,的确能够节省不少时间。
- apache学习
- apache学习
- apache学习
- Apache学习笔记
- Apache学习笔记
- Apache学习笔记
- Apache学习笔记
- apache学习笔记
- Apache学习笔记 车东
- Apache学习笔记
- Apache学习资料
- Apache学习小结
- Apache的Mod_rewrite学习
- Apache学习笔记
- Apache的Mod_rewrite学习
- [转载]apache学习笔记
- apache重新安装,并学习
- Apache Log4j 学习笔记
- 我的.NET学习日记(8)
- 使用visio画状态图(Statechart)的几点注意事项
- Win8 Metro 文件的读写操作
- git使用小结
- swf文件格式(结构)
- apache学习
- JAVA 实现压缩与解压缩 rar和zip格式的文件
- EM算法
- LeetCode: Generate Parentheses
- 成为高效程序员的搜索技巧(转)
- C#在Windows7下的UAC控制
- 关于JAX-RS的导引阅读
- 通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
- centos一些