LJAMP: November 2007 Archives

一般来说,给tomcat添加虚拟主机是需要域名的,但是在测试过程或者特殊情况下,是没有配置域名解析的。
那么,想通过域名访问的话怎么办呢?
首先要在host下创建相关的context条目,比如uc3和uc3client。

<Context path="/uc3" reloadable="true" docBase="/usr/local/Apps/htdocs/uc3" />
<Context path="/uc3client" reloadable="true" docBase="/usr/local/Apps/htdocs/uc3client/uc3client" />

但是如果想把uc3放置在"/'下的话,直接修改path为"/'是不行的,默认情况下会转向到webapps的ROOT下
此时,把webapps的ROOT移除或者改名即可....

subversion 1.4.3
运行于RHEL4U3上
在subversion.tigris.org上下载1.4.3版X86_64.rpm安装
部分附加软件需要gcc3.4.6版本
本机器上gcc为3.4.5,不升级

安装
apr-0.9.12-2.x86_64.rpm           
mod_dav_svn-1.4.3-1.rhel4.x86_64.rpm
apr-debuginfo-0.9.12-2.x86_64.rpm 
subversion-1.4.3-1.rhel4.x86_64.rpm
apr-util-0.9.12-1.x86_64.rpm      
subversion-perl-1.4.3-1.rhel4.x86_64.rpm

安装后svnserve  --version 测试显示为ver1.4.3
安装成功

$: svnadmin create --fs-type fsfs /svn
$: chown -R svn:svn /svn
$: su svn
$: cd /svn; vi conf/svnserve.conf

 添加
 anon-access = none #匿名用户无访问权限
 auth-access = write #认证用户写权限
 password-db = passwd #认证db指向,默认为同目录下passwd文件
$: :wq #保存并退出vi
$: vi passwd
 添加用户名密码,格式为 username = password
 示例: suchasplus = suchasplus
$: :wq
$: killall svnserve
$: svnadmin --version #查看svnserve是否启动
$: lsof -i :3690 #查看svnserve是否正常监听

TortoiseSVN 1.4.3 Build 8645
安装于windows上,加装中文语言包
采用默认设置
具体请参考TortoiseSVN手册

系统为RHEL4 Update3 X86_64
Apache和MySQL都是系统默认安装
Apache 2.0.52
MySQL 4.1.12
bugzilla版本2.20
中文包2.20-cn
在bugzilla.sf.net下载
解压缩到/var/www/cgi-bin/
运行./checksetup.pl
验证perl环境
按照提示来下载所需要的包
方式有两种:
perl -MCPAN -e 'install "MODULE:NAME"'
这种方式第一次安装需要设定下载地点
第二种:
http://search.cpan.org下载相应的包
然后
perl Makefile.PL
make
make test
make install

然后成功完成./checksetup.pl
编辑./localconfig
设定
server'host 
database name 
MySQL username 
Password for MySQL

保存退出

因为cgi-bin目录的权限问题,需要在Apache conf中设置Alias /bugzilla /var/www/cgi-bin/bugzilla
否则css和js无法调用,同时显式声明

<Directory "/bugzilla">
Options Indexes FollowSylinks
Options +ExecCGI
AllowOverride Limit
Allow from from all
</Directory>

同时添加AddHandler cgi-script .cgi .pl
将Directory修改DirectoryIndex index.html index.htm index.php index.cgi
保存退出
apachectl -t测试Syntax
然后apachectl restart

测试http://localhost/bugzilla即可

中文化问题:
没有启用中文包的时候,MySQL编码是utf8-general-ci,浏览器编码为utf-8,插入中文偶有乱码,但是基本正常
按照中文包中manual设定,将Bugzilla/CGI.pm中第55行更改为:$self->charset('UTF-8')
结果为启用cn-utf8包时,界面正常,新建中文bug显示为乱码
启用cn-gb2312包时,界面乱码,新建中文bug显示正常
解决办法:
将CGI.pm中第55行更改为:$self->charset('GB2312')

/**
更改输出编码为GB2312
*/
更改MySQL数据库编码为:gb2312-general-ci
在bugzilla目录下执行: perl -pi -e "s/Content-Type\: text\/html/Content-Type\: text\/html\; charset=gb2312/i" *.cgi

*.pl
/***


/var/www/bugzilla目录下执行,它的作用是对当前目录下的所有cgi,perl程序中的
Content-Type: text/html
都替换为:
Content-Type: text/html; charset=gb2312
在bugzilla系统设置(parameters)中设定语言(languages)为cn_gb2312

1.把windows-based MySQL转换为Linux-Based
2.测试兼容性
3.设定监控脚本

第一条的问题在于,当时在运营服务器上测试漏洞,我绕过安全机制插入了几条数据,结果格式不规范...直接从windows2linux会失败,先dump出来再dump进去也不行,如果全程使用navicat也就失去了linux的意义,而且在数据量很大的情况下,远程使用navicat执行insert操作也是很让人崩溃的一件事情。
当然关键还是大小写转换...
第二条兼容性貌似也要算上大小写吧...windows应用环境不区分大小写,但是Linux是区分的。
转换脚本有两个

  • strupper.sed
  • transform.sh

修改/etc/my.cnf

在[mysqld]下添加一条 bind_address = 127.0.0.1 保存重启mysql即可

如果把skip-networking取消注释了..就只能通过Unix socket或者 Named pipes来访问了

上篇文章说了如何配置动态域名解析

但是貌似这个比基本的CDN还是差了很远,实际运营的话就差的没边了。

现在来说说局限性:

客戶端通過DNS解析出來的我們網站的IP,不是由客戶端所在IP段決定,而是由其設定的DNS所決定的。

 

下面說說原因:

也可以说是架构根据clientIP自动解析不同的IP的DNS服务器
鄙人参考了几位大牛的建议和网上的文档,总结出来的
废话少说:
硬件环境: Dell Poweredge 2950 XEON 5110 @1.60GHZ  双核x2  2.00GBmem 73GB (说实话拿DELL跑NameServer很是令人不放心,而且大才小用,我宁愿给我个IBM的老机器来跑FreeBSD)
软件环境: Debian Etch 4.0r1, Bind 9.3.4
NameServer: NS已经在国内上注册了,但是由于伟大的GFW,NSrecord没法在Internic上面查到。
实现方式:Bind的VIEW功能
前提条件:bind安装OK,在此掠过不提,不懂者请直接apt-get install bind9
目标:因为网站的域名解析已经到了自己的手里,那么自然由我们自己的NS来解析。我们对web和p2p root& tracker进行镜像,通过分析client来访的IP来源,向其返回最快的镜像,以期获得最快的速度。
下面开始详细的说说实现过程:

当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server during query
不论是直接命令行连接还是通过Navicat来连接,都会出现此问题。
MySQL版本是5.0.45,自行编译安装。
Google之后查的解决方案:

关于这个存档

This page is a archive of entries in the LJAMP category from November 2007.

LJAMP: October 2007 is the previous archive.

LJAMP: December 2007 is the next archive.

Find recent content on the main index or look in the archives to find all content.