Archive for the ‘Web Server’ Category

linux下apache支持中文名的解决方法

原日文网址:http://www.seya.org/mt/archives/2003/10/31_webdav2.html
1、下载相关文件并解压
WebDAV Resources JP有Apache2对应的mod_encoding的最新版本下载
# wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
# wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616
# tar zxfv mod_encoding-20021209.tar.gz
# cp mod_encoding.c.apache2.20020616 mod_encoding-20021209/mod_encoding.c
2、iconv_hook编译和安装
安装mod_encoding前首先需要安装iconv_hook。
$ cd mod_encoding-20021209/lib
$ ./configure
$ make
# make install
完成上面操作后,iconv_hook相关so文件放到/usr/local/lib下面。
打开/etc/ld.so.conf文件,添加一行指向iconv_book的所在路径,即”/usr/local/lib”
# vi /etc/ld.so.conf
添加/usr/local/lib
# ldconfig
3、 mod_encoding模块的编译
进入mod_encoding-20021209.tar.gz的解压目录,即mod_encoding-20021209
–with-iconv-hook[=DIR]  use iconv.h from iconv_hook in DIR
(default is /usr/local/include/iconv_hook)
# ./configure –with-apxs=/usr/sbin/apxs –with-iconv-hook=/usr/local/include
# make
我在执行make命令编译时,会报如下错误:
/usr/local/apache2/bin/apxs -c -I/usr/local/include -liconv_hook mod_encoding.c
/usr/local/apache2/build/libtool –silent –mode=compile gcc -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/local/apache2/include -I/usr/local/apache2/include   -I/usr/local/apache2/include -I/usr/local/include -c [...]

Read the rest of this entry »

一次怪异的Ucenter头像无法上传问题

LAMP系统
Discuz    access denied for agent changed 错误
为了解决中文路径以及中文文件名下载问题,安装了mod_encoding模块
过了一段时间后才发现ucenter上传头像图片出现莫名的access denied for agent changed错误,查遍了所有的官方以及非官方的资料,都没有找到正确的解决方法。
咨询官方技术人员,给后台权限他们查看配置等,无果。
后来在网上发现有同样的问题。说是安装了mod_encoding后出现的问题。想起也曾经安装过这个模块。赶紧注释掉,发现一切都ok了。
最终发现,将mod_encoding取消后,所有症状消失。想其原因有可能是该模块将url编码转换,导致ucenter无法获取到正确的user- agent值,出现错误。。。不过疑问是,,为什么这个问题属于间歇性问题,也就是说,有时候出现,有时候不出现。。
目前办法:取消该模块的使用

Read the rest of this entry »

Apache支持perl在web的应用

apache支持perl在web的应用
1、安装apache
如apache安装在/usr/local/apache2/
2、安装perl
perl默认在linux系统里是自带的,
PS:要注意安装版本的差异,版本过低会报错
Can’t locate Apache/Response.pm in @INC …
Found this issue in Aurora SPARC Linux 2.0 (Fedora Core 3 for SPARC) when trying to install… turns out that after installing all the modules for rt, I still had an ancient verion of CGI.pm, which was not intended to correctly detect the mod_perl2 modules vs. regular mod_perl. Upgrading CGI [...]

Read the rest of this entry »

apache rewrite转nginx–对大括号(花括号)的支持

在nginx中这样写规则
rewrite [\w]{5,20} /index.php last; 是无法启动的
解决的办法是加上两个双引号
rewrite “[\w]{5,20}” /index.php last; 这样就OK了
应该可以说是完全兼容apache的语法的,只需要改下RewriteRule为Rewrite,后面的
的这样对应改
[R] -> redirect;
[P] -> last;
[R,L] -> redirect;
[P,L] -> last;
[PT,L] -> last;
nginx rewrite中支持4种类型的转向:
跳转型的
redirect:302跳转到rewrite后的地址
permanent:301永久定向到rewrite后的地址,对搜索引擎更友好
代理型的
last:重新将rewrite后的地址在server标签中执行
break:将rewrite后的地址在当前location标签中执行

Read the rest of this entry »

SCWS-1.0.4 php分词模块安装

scws   php分词模块
以 Linux(FreeBSD) 操作系统为例
1. 取得 scws-1.0.4 的代码
wget http://www.ftphp.com/scws/down/scws-1.0.4.tar.bz2
2. 解开压缩包
tar jxvf scws-1.0.4.tar.bz2
3. 进入目录执行配置脚本和编译
cd scws-1.0.4
./configure –prefix=/usr/local/scws
make
make install
注:这里和通用的 GNU 软件安装方式一样,具体选项参数执行 ./configure –help 查看。
常用的三个选项为:
–prefix=<scws的安装目录>
–disable-mmap     <这表示禁用 MMAP 来读取 xdb,在 debian, ubuntu 的部分 Linux 中建议关闭 mmap>
–enable-developer <这表示以开发者模式编译,主要是用于调试编译时加入了 -g 选项及部分标准输出的信息>
4. 正常的话已经编译并安装成功到 /usr/local/scws 中了,执行下面命令看看文件是否存在
ls -al /usr/local/scws/lib/libscws.la
5. 试试执行 scws-cli 文件
/usr/local/scws/bin/scws -h
scws (scws-cli/1.0.4)
Simple Chinese Word Segmentation – Command line usage.
Copyright (C)2007 by hightman.

6 用 wget [...]

Read the rest of this entry »

duplicate MIME type “text/html” in nginx.conf

把nginx升级到最新以后,发现用原来的配置启动的时候会提示:
Starting nginx: [warn]: duplicate MIME type “text/html” in /usr/local/nginx/conf/nginx.conf:23
那一行的配置类似的是:
gzip_types  text/plain text/html  text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
实际上,text/html根本就不需要写的,gzip默认就会压缩它的,只不过以前的nginx版本不提示这个警告而已,新版本的会出这个警告,所以解决办法很简单:
把text/html从你的配置中拿开,呵呵。

Read the rest of this entry »

Apache上安装MOD_SSL,配置HTTPS服务器(2)

Apache2上配置https,实现客户端CA证书认证
第一步实现传统的http,
第二步要实现https, 这里重复一些:
主要是这个文件
$PATH/apache2/conf/extra/ssl.conf:
SSLCertficateFile $PATH/apache2/conf/server.crt
SSLCertificateKeyFile $PATH/apache2/conf/server.key
这两行要打开.
怎么产生server.crt 和 server.key, 用法如下:
cd $PATH/apache2/conf/
openssl genrsa -des3 -out server.key 1024 ##记好server.key的密码(重启apache需要此密码)
openssl req -new -key server.key -out server.csr ##输入server.key的密码
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt ##输入server.key的密码
然后需要输入下列信息:
Country Name: cn 两个字母的国家代号
State or Province Name: shanghai 省份名称
Locality Name: shanghai 城市名称
Organization Name: xxxooo 公司名称
Organizational Unit Name: SA 管理主机部门名称
Common Name: [...]

Read the rest of this entry »

Apache上安装MOD_SSL,配置HTTPS服务器(1)

apache的mod_ssl只能静态编译进去,不能动态加载上去
编译参数 –enable-ssl
编译安装时要安装openssl
手工签署证书的方法
虽然在安装MOD_SSL时已经使用 make certificate 命令建立了服务器
的证书签名,但是有时你可能需要改变它。
当然有很多自动的脚本可以实现它,但是最可靠的方法是手工签署
证书。
首先我假定你已经安装好了openssl和MOD_SSL,如果你的openssl安装时的prefix设置为/usr/local/openssl,那么把/usr/local/openssl/bin加入执行文件查找路径。
第一步:先建立一个 CA 的证书
1、首先为 CA 创建一个 RSA 私用密钥
openssl genrsa -des3 -out ca.key 1024
##系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。
## -des3 加参数有提示输入密码,无此参数无需输入密码.此密码做重启apache时使用,保证安全 ###
chmod 400 ca.key
##生成 ca.key 文件,将文件属性改为400,并放在安全的地方。
openssl rsa -noout -text -in ca.key
##你可以用下列命令查看它的内容,
1、利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构)
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
##然后需要输入下列信息:
Country Name: cn 两个字母的国家代号
State or Province Name: An Hui 省份名称
Locality [...]

Read the rest of this entry »

lighttpd,thttpd,shttpd – 轻量级webserver介绍

国内绝大部分的web server不是IIS就是Apache,而论市场占有率,Apache是大赢家了,至少是占据了半壁江山。
但除了IIS/Apache外,其实我们有很多选择,对于高负载/大并发的网站而言,高性能、轻量级的web server是一剂良药。
这里介绍一下这些可选的对象:
lighttpd | thttpd | shttpd
lighttpd
官方主页:www.lighttpd.net
Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。
lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题。
实用起来lighttpd确实非常不错,曾今做过下载网站的web server,很烂的机器上,连接多,apache一跑就要死机的机器改用lighttpd居然跑的很好。
上文提到的apache overload的问题,用lighttpd就完全解决了。apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。
利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!
thttpd
官方网站:http://www.acme.com/software/thttpd/
thttpd 是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他web server(如Apache, Zeus等)的对比图+Benchmark,可以参考参考。此外,thttpd 也类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。
Thttpd支持多种平台,如FreeBSD, SunOS, Solaris, BSD, Linux, OSF等。对于小型web server而言,速度快似乎是一个代名词,通过官方站提供的Benchmark,可以这样认为:thttpd至少和主流的web server一样快,在高负载下更快,因为其资源占用小的缘故。
Thttpd还有一个较为引人注目的特点:基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的。象Apache就必须使用插件实现,效率较thttpd低。
shttpd
官方网站:http://shttpd.sourceforge.net/Shttpd是另一个轻量级的web server,具有比thttpd更丰富的功能特性,支持CGI, SSL, cookie, MD5认证, 还能嵌入(embedded)到现有的软件里。最有意思的是不需要配置文件!
由于shttpd可以嵌入其他软件,因此可以非常容易的开发嵌入式系统的web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。以下是其特点:
Stand-alone server, or embeddable into existing C/C++ program
GET, POST, PUT, DELETE methods
CGI
SSL
Digest (MD5) authorization
Multiple (and user defineable) index files
Directory [...]

Read the rest of this entry »

Apache URL 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。

Read the rest of this entry »