代理服务squid+squidGuard的安装

[不指定 2005/12/13 22:48 | by ipaddr ]
参考SkyUranus的《Linux下的代理服务器设置》ipaddr整理

前言:
本文主要介绍了在linux使用squid和squidGuard配置代理服务器,以www代理服务为例介绍如何过滤有害站点和限制用户对internet

的访问。

一. 介绍
Squid是Linux下最为流行的代理服务器软件,它功能强大,支持对HTTP,FTP,Gopher,SSL和WAIS等协议的代理;设置简单,只需对

配置文件中稍稍改动就可使代理服务器运转起来。而且Squid具有页面缓存功能,它接收用户的下载申请,并自动处理所下载的数据

。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主

页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度

相当快。
squidGuard则是作为squid的辅助软件,完成过滤、重定向和访问控制的功能。它是一个自由软件,功能强,便于安装、易于配置、

而且处理速度快。功能主要包括:根据web服务器或URLs列表限制一些用户的访问;阻塞某些用户对黑名单上的web服务器和URLs的访

问;阻塞某些用户对正则表达式匹配的URLs的访问;在URL路径加强了使用域名访问而禁止用IP访问;重定向阻塞的URLs到一个智能

CGI的信息页;重定向非授权用户到一个注册页面;具有基于日期、每周、每天具体时间的访问规则;对不同用户组有不同的规则。

但是不能过滤、检查文档中的文本以及HTML中的JavaScript或Vbscript脚本语言。

二. 安装
1。安装squid:
从www.squid-cache.org下载squid-2.5.STABLE12.tar.gz存在本地/usr/local/squid/src下。
在编译Squid之前,建立一个专门运行Squid的用户和组,这里建立了名为squid的组和用户,用户目录设为/usr/local/squid
#su squid
$cd /usr/local/squid/src
$tar xvzf squid-2.5.STABLE12.tar.gz
$ cd squid-2.5.STABLE12
$./configure
$make
$make install
(默认安装到/usr/local/squid目录下)
//默认RH系统里有squid用户和组

2。安装Berkeley DB 2.x:
从http://www.sleepycat.com 下载db-2.7.7.tar.gz并存在/usr/local/squidGuard/src/目录下
$su
#cd /usr/local/squidGuard/src/
#tar xvzf db-2.7.7.tar.gz
#cd db-2.7.7
#cd build_unix
//不能在根目录直接configure,必须先进入build_unix,再../dist/configure
#../dist/configure
#make
#make install
(默认安装到/usr/local/BerkeleyDB目录下)
注意:squidGuard不支持Berkeley DB 3.x,4.x版本

3。安装squidGuard
官方网站:http://www.squidguard.org
从http://ftp.ost.eltele.no/pub/www/proxy/squidGuard/squidGuard-1.2.0.tar.gz下载软件包并存于本

地/usr/local/squidGuard/src/
#cd /usr/local/squidGuard/src/
#tar xvzf squidGuard-1.2.0.tar.gz
#cd squidGuard-1.2.0
#./configure --prefix=/usr/local/squidGuard
#make
#make test //测试ok,即可进行下一步安装
#make install

三. 配置
1.配置squid:
修改squid的配置文件/usr/local/squid/etc/squid.conf:
http_port 8080
#squid的代理端口,使用1024以下的端口,squid必须以root身份运行,一般以3128端口运行,开了防火墙的话,注意要打开

iptables的端口限制。
http_access allow all
#允许所有的用户通过代理进行http访问

#squid启用squidGuard进行过滤和转发
#/usr/local/squid/bin/squidGuard是squidGuard的执行路径,后面-c是配置文件的路径
redirect_program /usr/local/squid/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf
#派生5个squidGuard进程
redirect_children =5


其它参数:
#cache_mem:设置代理服务使用的内存大小,一般推荐为物理内存的三分之一
cache_mem 16 m
#cache_dir:设定缓存的位置、大小。一般格式如下:
cache_dir /usr/local/squid/cache 100 16 256
#/usr/local/squid/cache代表缓存的位置;100代表缓存最大为100M;16和256代表一级和二级目录数。
#cache_effective_user:设定使用缓存的有效用户。缺省为用户nobody,如果系统中没有用户nobody,最好建一个或以非root用户

运行Squid。这里是以squid身份运行的
cache_effective_user squid
#cache_effective_group:设定使用缓存的有效用户组。缺省组为nogroup,如果系统中没有组nogroup,最好建一个组。这里是

squid组。
cache_effective_group squid
(其余参数用默认值即可!)

2.配置squidGuard:
修改squidGuard的配置文件/usr/local/squidGuard/squidGuard.conf文件:

logdir /usr/local/squidGuard/logs #日志目录定义
dbhome /usr/local/squidGuard/db #db目录定义

#目标组定义
dest ipaddr {
domainlist ipaddr/domains
urllist ipaddr/urls
expressionlist ipaddr/expressions
}

#访问规则定义
acl {
default {
pass !ipaddr all
redirect http://192.168.0.1/error
(
#也可以重定向到一个含有一些信息的cgi页面,如下:
http://192.168.0.1/cgi/blocked?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
#也可以重定向到www.google.com
)
}
}

# vi db/ipaddr/domains
(域列表文件:主要是阻塞一些定义的站点)
co.za
sex.com
(如上,可以阻塞如hack.co.za、sex.com、www.sex.com、whatever.sex.com,但是不同于.*[^.]sex.com,不匹配ssex.com)

# vi db/ipaddr/urls
(url列表文件,主要是阻塞一些站点及其一些栏目)
qihui.com/sex
valen.sohu.com/album
(如上可阻塞http://qihui.com/sex、http://qihui.com/sex/whatever、ftp://qihui.com/sex、http://www.qihui.com/sex等)

# vi db/ipaddr/expressions
(表达式列表文件,主要是阻塞一些与表达式匹配的URL访问)
(^│[\?+=/])(.*)(girl)(.*)([\?+=/]│$)
(上面的正则表达式可以阻塞URL中包括girl站点的访问,如:www.girlzine.com、girl.huabao.net、www.huayu.net/girl、

www.universiti.com/girl等 )

注意:squidGuard对配置文件的语法要求很严,如果配置文件语法有误,squidGuard仍能运行,但是squidGuard已进入应急模式,此

时代理服务不具有任何阻塞作用,所有通过该代理的访问都可通过,可以查看logs/squidGuard的日志文件,即可发现错误,例如:
2001-12-20 17:08:44 [2430] parse error in configfile /usr/local/squidGuard/squidGuard.conf line 8
2001-12-20 17:08:44 [2430] going into emergency mode
…….
其中配置文件第8行有误,squidGuard进入应急模式。
配置的具体说明详见http://www.squidguard.org/

---------日志的存放----------------
squidGuard的日志是检查配置是否正确的工具。如果日志里出现了going into emergency mode,说明配置不成功。
默认squidGuard的日志存放[--prefix]/squidGuard/log/squidGuard.log,我们安装时--prefix=/usr/local/squidGuard,所以,还

需要:
mkdir /usr/local/squidGuard/squidGuard
mkdir /usr/local/squidGuard/squidGuard/log
chown squid.squid mkdir /usr/local/squidGuard/squidGuard
启动后,日志存放在/usr/local/squidGuard/squidGuard/log/squidGuard.log
此外,也可以在squidGuard的./configure时指定默认的日志文件
---------日志的存放----------------
#squidGuard的更多配置的安装,在squidGuard的安装包squidGuard-1.2.0.tar.gz有详细介绍。


四. 运行:
$ chmod 777 /usr/local/squid/logs
(设置logs对所有用户为可写。这样,不特定的squid代理客户才能正常访问代理服务器,并能在logs目录、产生access.log、

cache.log等文件。)
$ /usr/local/squid/bin/squid -z
(手工建立squid的缓存目录/usr/local/squid/cache。)
(cache有时默认是/usr/local/squid/var/cache)
(设置了cache_effective_user和cache_effective_group为squid时,还需要chown squid.squid -R /usr/local/squid/cache)
#/usr/local/squid/bin/squid
(后台执行squid。如果想前台执行squid:如果你想前台执行Squid执行命令:
  $/usr/local/squid/bin/squid -NCd1
  该命令正式启动Squid。如果一切正常,你会看到一行输出:
  Ready to serve requests )
# ps ax│grep squid
20198 ? S 0:00 /usr/local/squid/bin/squid
20200 ? S 0:27 (squid)
20310 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20311 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20312 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20313 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20314 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
(此时squidGuard也已启用,每次修改配置后squid -k reconfigure重新起用即可,要杀掉squid执行squid -k kill)
查看squidGuard日志文件:
init domainlist /usr/local/squidGuard/db/ipaddr/domains
2001-12-20 16:14:43 [2270] init domainlist /usr/local/squidGuard/db/ipaddr/domains
2001-12-20 16:14:43 [2270] init urllist /usr/local/squidGuard/db/ipaddr/urls
2001-12-20 16:14:43 [2270] init expressionlist /usr/local/squidGuard/db/porn/expressions
2001-12-20 16:14:43 [2270] squidGuard 1.1.4 started (1008836083.022)
2001-12-20 16:14:43 [2270] recalculating alarm in 917 seconds
2001-12-20 16:14:43 [2270] squidGuard ready for requests (1008836083.044)
表示squidGuard已正常启动

五. 测试:
配置客户端,然后测试代理服务:
在另一台win2k上,(以Internet Explore5.0为例)运行IE,单击"工具",接着单击"Internet选项",再单击"连接"选项卡,单击"

局域网设置";在"局域网设置"窗口中,在"地址"处填上squid服务器的IP地址192.168.100.16,在"端口"处填上"8080"(修改后

squid代理使用的端口号,也就是squid.conf中的http_port,默认值为3128),确定后退出。
接下来,先把IP改成192.168.100.20,浏览一些网站,如sohu,163等,然后再试试domains和urls中定义的,如hack.co.za、qihui.com/sex,会发现主页被重定向到http://www.google.com。然后再试试浏览有关girl的网站,去不了了:(;在sohu中搜girl

也被重定向了;用IP试试(有些代理程序对IP不做限制,用IP可以绕过代理的限制访问一些禁止的站点),可惜不行!(因为

squidGuard配置文件中使用了!in_addr,所以可以强迫用户使用域名访问而不能使用ip访问)
再下来,把IP改成192.168.100.18,然后时间改为testtime外的时间,浏览网页,试试结果,然后再将时间改为testtime内浏览网页


最后,把IP改成192.168.100.30,浏览网页测试。
(可以查看logs下的access.log和cache.log,看看是否代理运行正常以及访问的站点记录)

总结:
由上可见,用squid和squidGuard建立的代理服务器,配置比较简单,而且功能强大,可以有效的限制一些用户对internet的访问并

过滤一些黑名单列出的站点(如色情站点等)。
这里只简单的介绍了关于http代理的例子,其它的应用和功能大家可以自己试试。


DNS查询利器

[不指定 2005/11/23 22:49 | by ipaddr ]
发现一个好东东,不敢独享,发来给大家。

http://www.dnsstuff.com/

查DNS的,

想查什么记录查什么记录。

查MX只需在DNS Timing里填上域名,选择MX就OK了。

例如查ipaddr.com的mx记录。

在DNS Timing里输入ipaddr.com,再选mx,再lookup,就出来了。

了解Linux的时钟

[不指定 2005/11/09 22:50 | by ipaddr ]
 由于Linux时钟和Windows时钟从概念的分类、使用到设置都有很大的不同,所以,搞清楚Linux时钟的工作方式与设置操作,不仅对于Linux初学者有着重大意义,而且对于使用Linux服务器的用户来说尤为重要。

   Linux时钟的分类

   Windows时钟大家可能十分熟悉了,Linux时钟在概念上类似Windows时钟显示当前系统时间,但在时钟分类和设置上却和Windows大相径庭。和Windows不同的是,Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。

   既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。

   从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此,系统时钟和硬件时钟还可以采用异步方式,见图1所示,即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大,但对于Linux网络管理员却有很大的用处。例如,要将一个很大的网络中(跨越若干时区)的服务器同步,假如位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间,如要将北京服务器上的时间设置为纽约时间,两台服务器完成文件的同步后,再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。

  设置Linux的时钟

   在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。由于目前绝大多数用户使用x86硬件体系,所以可以视这两个命令为一个命令来学习。

   1.在虚拟终端中使用date命令来查看和设置系统时间
   查看系统时钟的操作:
   # date

   设置系统时钟的操作:
   # date 091713272003.30

   通用的设置格式:
   # date 月日时分年.秒

   2.使用hwclock或clock命令查看和设置硬件时钟
   查看硬件时钟的操作:
   # hwclock --show 或
   # clock --show
   2003年09月17日 星期三 13时24分11秒 -0.482735 seconds

   设置硬件时钟的操作:
   # hwclock --set --date="09/17/2003 13:26:00"

   或者
   # clock --set --date="09/17/2003 13:26:00"

   通用的设置格式:hwclock/clock --set --date=“月/日/年 时:分:秒”。

   3.同步系统时钟和硬件时钟

   Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。

   硬件时钟与系统时钟同步:
   # hwclock --hctosys

   或者
   # clock --hctosys

   上面命令中,--hctosys表示Hardware Clock to SYStem clock。

   系统时钟和硬件时钟同步:
   # hwclock --systohc

   或者
   # clock --systohc

   使用图形化系统设置工具设置时间

   对于初学者来,笔者推荐使用图形化的时钟设置工具,如Red Hat 8.0中的日期与时间设置工具,可以在虚拟终端中键“redhat-config-time”命令,或者选择“K选单/系统设置/日期与时间”来启动日期时间设置工具。使用该工具不必考虑系统时间和硬件时间,只需从该对话框中设置日期时间,可同时设置、修改系统时钟和硬件时钟。

   Internet同步时钟设置

   在Windows XP日期与时间设置中有一项与Internet同步的功能,有了这项功能只要上网便可得到十分准确的时间。Red Hat 8.0也提供了这样的功能,在日期与时间设置工具对话框中的下部,有一个“启用网络时间协议”的选项,将该项选中就可以使用网络时间协议来同步Linux 系统时钟。选中该项后,其下面的服务器下拉列表框就变为可用状态,可从中选择一个时间服务器作为远程时间服务器。然后单击确定按钮,便可连接所设定的时间服务器,并与之同步时间。


PHPMyVisites安装

[不指定 2005/11/03 22:53 | by ipaddr ]
PHPMyVisites安装

phpMyVisites是一个用PHP/MySQL技术开发,采用Gnu GPL.方式发布的关于网站访问量统计的开

源软件.(ipaddr,bcomcn一直漂原创笔记,转载请注明)

访问统计通常可以分为两类,一类是通过访问日志做统计,另外一类,是实时在线统计。phpMyV

isites属于第二类。

phpMyVisites是一个用PHP/MySQL技术开发,所以,安装PHPMyVisites前,你必须要有一个支持P

HP的WEB服务器,以及安装Mysql数据库。

假设你已安装好PHP+Mysql+WEBServer,接下来安装phpMyVities

a.下载
phpmyvisites的官方网站是:http://www.phpmyvisites.net/
从官方网站下载最新版的PHHMyVisites

b.上传
将phpMyvities解压,上传到服务器的WEB目录,假设放在/phpmyvities目录中

c.设置目录权限
phpmyvities安装过程中,需要新建几个文件,所以,安装前要设置好目录属性,以便PHP能访问

和修改文件系统。主要是需要以下几种属性
/phpmyvities 安装目录,需要有写权限,PHPMyVities会在这目录新建几个配置文件。
/phpmyvities/langdispos.php 语言设置需要修改这个文件
/phpmyvities/lang/* 语言设置可以需要上传语言或删除语言
/phpmyvities/graphs/maps 会修改这些图片
在Linux下,可以将这些目录或文件的属主设为apache。

d.配置好MYSQL数据库
设置好用户和权限,建好数据库

e.安装
http://domain/phpmyvities/
按提示安装。安装过程会建几个配置文件。

f.使用
安装完成后,首先需要建一个站点,建好站点后,再获取javascript代码,将javascript代码到

需要统计的网站的页面。一般是放在网站的统一的页脚里面。


附:PHPMyVities中的JPGRAPH乱码解决方案
PHPMyVities使用jpgraph绘图,jpgraph使用GD库绘图,所以,你的PHP要支持GD库。
默认情况下,jpgraph对中文支持得不好,可以按如下方法修改:
1.首先,从Windows的fonts下面将simhei.ttf,simsun.ttc两处字体拷到[PHPMYVISTI]/graphs/f

onts下面,这个字体路径在graphs/jpgraph.php里面定义了,如果在这个文件没有定义TTF_DIR

常量,那么,将这两个字体文件,Linux下拷到/usr/X11R6/lib/X11/fonts/truetype/,Windows

下拷到fonts下面。

2.
将graphs/config_graph.inc.php里的所有FF_VERDANA字体,改为FF_SIMSUN字体
由于座标也有可能是汉字,所以,座标字体也要改成FF_SIMSUN,将$axey_font,$axex_font设置

为FF_SIMSUN(也就是把所有FF_FONT1改为FF_SIMSUN)

3.由于phpMyVistes的语言包本身就是uft8编码,所以,不需要在程序里进行gb2312->uft8的转

码。需要将程序中转码的部分去除。
找到graphs/jpgraph.php里的LanguageConv类的Convert函数(约660行),

elseif( $aFF === FF_SIMSUN ) {
后面,加入一行,
return $aTxt;
不转码直接返回。(注释掉原来{}里的程序段)
注意,此处是因为PHHMyVistes的语言包就是uft8编码的,所以不需要转为utf8编码,PHP用GD库

绘中文汉字时,需要将gb2312编码转为utf8编码。Jpgraph需要转码时,可以用Jpgraph自带的一

个类转,也可以直接用iconv转,iconv("GB2312","UTF-8",$aTxt)。(iconv需要在安装PHP里带

上相关选项。)

jpgraph中文乱码一般可以按这几步解决
1.copy字体到对应目录
2.绘图时,指定字体为FF_SIMSUN
3.所绘字符串需要必须是utf8编码

Apache+Tomcat整合防止目录泄露

[不指定 2005/11/01 22:54 | by ipaddr ]
Apache+Tomcat防止目录泄露
(ipaddr,bcomcn笔记,转载请注明)
Apache+Tomcat整合后,两者的主目录指向了同一目录,比如/website/app,因为Tomcat需要在主目录或context下建一个WEB-INF文件夹,对于Tomcat来说,通过Tomcat的8080端口,是无法访问这个目录的,但是,对于apache来说,默认情况下,对这个目录有访问权,用户可以直接访问http://localhost/WEB-INF/web.xml之类的来访问WEB-INF里面的配置,类和库。
需要在apache里配置一下,阻止用户访问WEB-INF之类的文件。
常用方法有:
1.
<Directory ~ "/WEB-INF/">
Order allow,deny
Deny from all
</Directory>


2.
RewriteEngine on
RewriteRule /WEB-INF/ / [R]


一.安装Apache2
下载地址:http://www.apache.org
下载installer的安装版本,直接根据提示安装完成。
配置httpd.conf
(ipaddr,bcomcn一直漂原创笔记,转载请注明)

二.安装PHP
下载地址:http://www.php.net
下载Windows的ZIP包,解压到c:\php
1.将c:\php加入到系统环境变量PATH
如果不加入环境变量,很多库需要拷到系统目录,我觉得还是加环境变量方便
2.将c:\php\php4ts.dll文件拷到c:\windows(2000是c:\winnt)
此步不可省略
3.修改php.ini-recommand为php.ini,修改php.ini,移动到c:\windows
注:如果php.ini不拷到c:\windows,则需要在httpd.conf里配置PHPInDir="C:\php"
配置PHP的选项:
doc_root = c:\website\htdocs
extension_dir = c:\php\extensions
session.save_path = c:\php\temp

4.修改httpd.conf
加入:
LoadModule php4_module "c:/php/sapi/php4apache2.dll"
#注:网上很多文章此处有错误,误写成"c:/php/php4apache2.dll"
AddType application/x-httpd-php .php
DirectoryIndex .... index.php (在索引页中,加入index.php,支持JSP后,加入index.jsp)
修改DocumentRoot指向网站根目录.

三.安装Mysql
直接到www.mysql.org下载For Windows版的,根据提示安装即可。

四.安装phpmyadmin
到www.phpmyadmin.net下载最新版的phpmyadmin
解压到网站根目录的/mysql中
将config.inc.php里的auth_type改为http
如果是4.1版本以上的Mysql,需要将认证密码改一下:
登录Mysql:
use mysql
update user set Password=old_password('zhoutang');
flush privileges;

五.安装Tomcat
三步安装Tomcat
在Wind2000系统上都已经成功安装Tomcat,只需要三步:

第一步:

下载准备必备文件:
1.jakarta-tomcat-5.0.28.exe (安装文件) http://jakarta.apache.org/tomcat/index.html
(Tomcat4.1是老版本,支持的JSP和Serverlet版本低一点,Tomcat5.0是新版稳定版本,5.5是开发版本.)
2.j2sdk-1_4_2_09-windows-i586-p.exe (Jdk1.4) http://java.sun.com/j2se/1.4/download.html
3.mysql-connector-java-3.1.10.zip (支持数据库) http://www.mysql.com/downloads/api-jdbc.html

第二步:
运行j2sdk-1_4_2_09-windows-i586-p.exe,安装在c:\program files\jsdk

在windows2000的控制面板 中 选择 '系统',在'高级'页 选择'环境变量'
新增:

JAVA_HOME=c:\program files\jsdk
CLASSPATH=.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(PATH是加在原PATH后面)

第一行是设置Windows下JAVA_HOME环境变量,是必须设定的,后面两行主要对Windows下命令窗口起作用(DOS窗口)。注意CLASSPATH的第一个参数是“.”,如果这个不设置,使用java hello.helloWorld 会报Exception in thread "main" java.lang.NoClassDefFoundError
此步完成后,进入DOS模式,可以运行java -version查看Java版本就表示JDK安装成功.

第三步:

运行jakarta-tomcat-5.0.28.exe,并且,将Tomcat安装为Windows的服务运行。
解压mysql-connector-java-3.1.10.zip,我们需要里面的mysql-connector-java-3.1.10-bin.jar文件,拷贝这个文件到tomcat的安装目录的common/lib下面

启动Tomcat,只需启动Windows服务里的Tomcat就行

在浏览器键入http://localhost:8080/ 看到Tomcat的启动页面.


测试:
Tomcat+JDK+mySQL完整测试:
a.在tomcat/webapps下建立子目录test
b.复制目录(注意是整个目录)tomcat/webapps/ROOT/WEB-INF到新建的test目录下
c.在test目录下新建index.jsp文件:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html><title测试JSP连接Mysql页面</title><body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=&useUnicode=true&characterEncoding=GB2312";
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from user";
ResultSet rs=stmt.executeQuery(sql); %>
<table><tr><td>您的第一个字段内容为:</td>
<td>您的第二个字段内容为:</td>
</tr>
<%while(rs.next()) {%>
<tr><td>
<%=rs.getString(1)%> </td><td>
<%=rs.getString(2)%> </td></tr>
<%}%>
</table>
<%out.print("Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功(ipaddr)!");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
d.在浏览器中输入:http://localhost:8080/test,若出现“Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!”,则说明你的Tomcat+JDK+mySQL整体配置成功。

六.整合Tomcat和Apache.
在http://jakarta.apache.org/下载mod_jk-1.2.14-apache-2.0.54.so
将mod_jk-1.2.14-apache-2.0.54.so改名为mod_jk.so放到Apache的Modules目录下.(mod_jk2已不被官方支持)
a.在Apache的配置文件httpd.conf里加入:(httpd.conf中的相对路径指相对httpd.conf里的ServerRoot)
#------------------------------------
#Tomcat Config
#----------
# Load mod_jk module
LoadModule jk_module modules/mod_jk.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
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
#------------------------------------
#JkMount指示,将哪些请求发到Tomcat,如果在其它目录也有servlet,也需在这里映射,
#比如,如果/axis/下面有很几个servlet,可以分别映射,也可以JkMount /axis ajp13全部映射,所有/axis下的访问,都交给tomcat.
#另外,如果要用tomcat的admin管理,还需要JkMount /admin/* ajp13
#注意,JkMount后面的ajp13是Worker名,应该在下面的workers.properties中定义.
b.在apache的CONF目录下,新建一个workers.properties文件,内容如下:
#指定Tomcat的主目录以及JDK
workers.tomcat_home=C:\Program Files\Apache Software Foundation\Tomcat
workers.java_home=C:\Program Files\jsdk

ps=/
#Worker列表
worker.list=ajp12, ajp13

worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1


worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1

c.修改Tomcat主目录下的conf/server.xml
在</Host前面,加上主目录>
<Context path="" docBase="D:\website\apache" debug="0" reloadable="true" > </Context>

注意,这里的docBase应该与httpd.conf里的DocumentRoot一致.才能叫整合;path="",不能写成path="/".

#或者,修改<Host>中的appBase指定网站根目录.

d.如果开了防火墙,logs/mod_jk.log里面会有好多错误,提示连接Localhost:8009失败的,打开防火墙的这个端口.

e.如果不需要通过8080端口访问,刚可以在conf/server.xml中,注释掉8080端口的connector

配置完成,测试成功.


Javascript远程调用其它页面

[不指定 2005/10/09 22:55 | by ipaddr ]
1.

<script language="javascript">
function getHttp()
{
  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.Open("GET", "http://www.xxxx.com/port.jsp", false);
  xmlhttp.Send();
  alert(xmlhttp.responseText);
}
</script>

2.
下面是126.com邮箱申请的用户名检测。
if (window.XMLHttpRequest)
{
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
document.getElementById( "content" ).innerHTML = ".......正在验证,请稍候.........";
req.onreadystatechange = processChech;
req.open( "get", "./checkusername.jsp?username="+username, false );
req.send();

3.
以前看到很多网友问,自己有两台服务器,如何这两台服务器上的mdb数据库数据的互访。今天作了个远程的接口,以xml形式返回mdb中的数据。用的主要思想是通过recordset对象的save方法将数据填充到一个xml dom里,但是,这种方法产生的XML不够简洁,自动产生的XML包含了schema信息,它描述这个XML里允许有什么节点和属性以及采用何种数据类型,而且数据节点也增加了名称空间。schema信息在需要数据验证的地方或进行更复杂的处理或许很有用,但是,大多数情况下,我们使用的是瘦客户机,我们不需要schema信息。我们可以利用XSLT来分离出我们想要的信息,去掉多余的信息。

代码如下:
<%
'生成xsl样式
str = chr(13)&chr(10)&chr(9)
xslt="<?xml version=""1.0""?>" & chr(13)&chr(10) & "<xsl:stylesheet version=""1.0"""_
     &" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"""_
     &" xmlns:s=""uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"""_
     &" xmlns:dt=""uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"""_
     &" xmlns:rs=""urn:schemas-microsoft-com:rowset"""_
     &" xmlns:z=""#RowsetSchema"">"& str_
& "<xsl:output omit-xml-declaration=""yes""/>"&str_
&  "<xsl:template match=""/"">"& str&chr(9)_
    & "<xsl:element name=""xml"">"& str&chr(9)&chr(9)_
         &"<xsl:for-each select=""/xml/rs:data/z:row"">"& str&chr(9)&chr(9)&chr(9)_
             &"<xsl:element name=""row"">"& str&chr(9)&chr(9)&chr(9)&chr(9)_
                 &"<xsl:for-each select=""@*"">"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                    & "<xsl:element name=""{name()}"">"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                        & "<xsl:value-of select="".""/>"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                     &"</xsl:element>"& str&chr(9)&chr(9)&chr(9)&chr(9)_
                & "</xsl:for-each>"& str&chr(9)&chr(9)&chr(9)_
            & "</xsl:element>"& str&chr(9)&chr(9)_
         &"</xsl:for-each>"& str&chr(9)_
     &"</xsl:element>"& str_
 &"</xsl:template>"& chr(13)&chr(10)_
&"</xsl:stylesheet>"

'读取数据库
curDir = Server.MapPath("data.mdb")
set conn=server.createobject("adodb.connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir
set rs=conn.Execute("select * from admins")
Dim objXMLDOM
Set objXMLDOM = Server.CreateObject("MSXML2.DOMDocument.3.0")
'将recordset对象保存到dom里
rs.save objXMLDOM, 1
Set rs = Nothing
Dim strCleanXML, objXMLDOM_XSLT
Set objXMLDOM_XSLT = CreateObject("MSXML2.DOMDocument")
objXMLDOM_XSLT.loadXml(xslt)
'用xsl格式化数据
strCleanXML = objXMLDOM.transformNode(objXMLDOM_XSLT)
 
Set objXMLDOM = Nothing
Set objXMLDOM_XSLT = Nothing
'输出数据
Response.Write strCleanXML
%>

      因为xml是跨平台的,所以呢不论是asp还是jsp或者客户端都可以通过该接口获得数据,然后用自己的样式来显示数据。比如,在客户端我们可以使用javascript操作xmlhttp来获得www.xxxx.com上某个mdb的数据:
<script language="javascript">
function req(){
  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.Open("GET", "http://www.xxxx.com/mdb_inerface.asp", false);
  'mdb_interface.asp既为放在www.xxxx.com上的mdb接口文件
  xmlhttp.Send();
  alert(xmlhttp.responseText);
}
</script>
</HEAD>
<body>
<input type="button" onclick="req();" value=" 获 取 " /></br>

4.服务器端,可以使用SOAP,客户端,用javascript存取。

Linux下Apache-Tomcat整合安装

[不指定 2005/09/20 22:58 | by ipaddr ]
Apache-Tomcat整合安装

1.安装PHP+Mysql+Apache2
...
注意,Apache要带上--enable-so

ipaddr(aspbiz)原创,转载请注明


2.安装JDK环境
到Java网站下载:
j2sdk-1_4_2_07-linux-i586.bin

#chmod a+x j2sdk-1_4_2_07-linux-i586.bin
#./j2sdk-1_4_2_07-linux-i586.bin
#mv j2sdk-1_4_2_07 /usr/local/jdk
#vi /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
如果是RHEL3的话,还需要删除原来的空Java环境
#rm -f /usr/bin/java
#rm -f /usr/bin/javac
#rm -f /etc/alternatives/java
#rm -f /etc/alternatives/javac

重新登录

#java -version
查看是否正确.

3.安装Tomcat
到Apache的网站上下载:
jakarta-tomcat-5.0.30.tar.gz
#tar xzvf jakarta-tomcat-5.0.30.tar.gz
#mv jakarta-tomcat-5.0.30 /usr/local/tomcat

运行/usr/local/tomcat/bin/startup.sh启动Tomcat,
http://IP:8080/查看是否安装成功.

4.安装mod_jk2
下载:
jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz

#tar zxvf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
#cd jakarta-tomcat-connectors-jk2-2.0.4-src/
#cd jk/native2
#./configure --with-apxs2=/usr/local/apache2/bin/apxs  
#make
#cp ../build/jk2/apache2/mod_jk2.so /usr/local/apache2/modules
(如果不成功,有提示错误的话,请安装libtool的高版本:
http://www.gnu.org/software/libtool/
tar zxvf libtool-1.5.14.tar.gz
cd libtool-1.5.14
./configure
make
make install
)

5.配置
a.httpd.conf(/usr/local/apache2/conf/)
不让/WEB-INF下的文档暴露

   Order allow,deny
   Deny from all

加载jk2模块
LoadModule jk2_module modules/mod_jk2.so

b.workers2.properties(/usr/local/apache2/conf/此文件为新建)
[logger.apache2]
 level=info       #日志级别

[shm]
 file=/var/logs/httpd/shm.log
 size=1048576    #这个不知道干什么的??

[channel.socket:localhost:8009]
 port=8009  #apache和tomcat的通讯端口
 host=127.0.0.1

[ajp13:localhost:8009]
 channel=channel.socket:localhost:8009

[uri:/*.jsp]  
 worker=ajp13:localhost:8009

[uri:/servlet/*]
 worker=ajp13:localhost:8009

c./usr/local/tomcat/conf/server.xml
在前面加上:


6.启动测试
启动Tomcat和Apache测试.

7.启动脚本
可以在/etc/init.d/下面,按照httpd格式建一个启动脚本,

/usr/local/tomcat/bin/startup.sh启动
/usr/local/tomcat/bin/shutdown.sh停止
注意,脚本前要加上/etc/profile里的环境变量.

chkconfig --add tomcat
chkconfig tomcat on

8.参考:
http://ms.mblogger.cn/andijo/posts/8534.aspx
http://chinaunix.net/jh/13/306170.html


http://blogger.org.cn/blog/more.asp?name=sixsun&id=1027
http://www.jmyes.com/viewthread.php?tid=9952&extra=page%3D1

[来源:http://laozei.blogchina.com]

VHCS现在已完全是一个可以立即投入商业用途的成熟程序。

VHCS2.2版的时候还不是很成熟,很多功能没有,但现在,随着2.4版的推出(2005.5.16发布稳定版),它已经成长并成熟起来了。

以下是对其部分功能的描述:

1.多级管理:分管理员,代理商,最终用户三个级别
2.虚拟主机管理(基于主机名和基于IP)
3.多个顶级域名绑定,无限级二级域名
4.DNS管理
5.FTP用户管理
6.EMAIL帐号及EMAIL服务管理(有WEBMAIL)
7.CGI,PHP,SSI支持的配置及管理
8.支持MYSQL数据库创建与管理
9.硬盘空间限制
10.(服务器)IP地址管理
11.备份与恢复
12.SSL支持
13.页面或目录的密码保护(通过.htaccess实现)
14.自定义错误页面(401, 403, 404 和500)
15.流量统计
16.多国语言支持(已经有中文语言包)
17.可换肤
18.。。。

程序构成:
1.VHCS的WEB管理界面是基于PHP的
2.VHCS的核心部分是用C和PERL写的

下面是VHCS的工作关系示意图


怎么样,够成熟吧?

去看一下它的演示,你会发现更多功能,可以说是免费版的CPANEL。

如果你想卖HTML,PHP或CGI空间,可以立马用它来做了。

由于是国外开发的程序,而在国外(西方国家)服务器大多是按流量来收费的,所以程序中对流量的限制进行了控制,没有对并发连接数或CPU利用率进行控制,可能这一点对于国内的虚拟主机商来说不是太合适。可以找程序员把这个功能加上去,那就完美了。


官方站:http://vhcs.net/new/
在线演示:http://vhcs.net/new/modules/wfchannel/index.php?pagenum=7
(分别有管理员,代理商,域名用户即最终用户,WEBMAIL,文件管理这几项在线演示)
下载:http://vhcs.net/new/modules/PDdownloads/viewcat.php?cid=2

安装需求:


SuSE Linux 7.x 8.x and 9.x

Red Hat Linux 7.x and 9.0

Debian Linux sid, woody and sarge

Fedora Core1, Core2 and Core 3
分别有对应以上操作系统的安装包。


FreeBSD和Solaris平台的版本正在制作中


各版本的安装问题和其它问题可以去官方论坛查找或求助

Zimbra是一个开源的邮件系统,其操作界面和 Gmail 类似,Zimbra 把 Ajax 运用得淋漓尽致,甚至有过之而无不及。它还运用了 Javascript 的 Prototype ,诸如 drag and drop 也用上了(移动邮件到其他目录的操作)

别的不多说,其官方站:http://www.zimbra.com/index.html

源码,二进制码,文档,一应具全。
分页: 16/20 第一页 上页 11 12 13 14 15 16 17 18 19 20 下页 最后页 [ 显示模式: 摘要 | 列表 ]