把bugzilla 2.18rc2服务器迁移了

由于公司扩大,机器不够用了,原来的bugzilla服务器腾出来供新同事开发,于是只好把bugzilla迁移到项目的服务器上。迁移中间遇到了一些不大不小的问题折腾了半天,都记在这里。

1 原来的服务器是windows2000server,默认带了IIS,新服务器是windows2003enterprise。在装IIS的时候与2000下面有一点小小的不同:

  在2000下面是在“控制面板--添加或删除程序--添加/删除windows组件”里面直接在IIS的选择框中打钩,在2003下IIS组件的位置转为“控制面板--添加或删除程序--添加/删除windows组件--应用程序服务器--详细信息”。放安装盘,打上钩,顺利过关。如果没有可用的smtp服务器的话还可用同时安装smtp服务。

2 安装mysql。一开始是在2003下面安装4.1.7正式版,结果有时是服务发起失败,有时是应用安全策略失败,装成功后perl checksetup.pl也一直连不上数据库,这一步浪费的时间最多,回想起来可能因为安装了服务器实例造成的吧,这个版本的mysql运行在一太计算机上安装多个mysql服务的实例,那么连接数据库的时候应该是要指定服务器地址和实例名的,没有心情再回头去尝试了。最后卸载了4.1,并从注册表中清理掉所有的mysql项目后重新安装了4.0.22版才配置成功(4.0没有提示安装实例,大概不支持吧?)。装好后配了bugs用户名和密码已经bugs数据库。

3 安装activeperl。没有去网上找最新版,因为之前用5.8版一直很稳定,多一事不如少一事。

4 把原来的bugzilla目录拷贝到新服务器下。因为原来自己做了一些汉化和本地化的工作,所以没有重新去解下载包而是拷贝原来旧的发布目录。

5 perl checksetup.pl,安装各种ppm。从前折腾的最厉害的一步,现在已经简单多了。根据运行后的提示去找到 http://landfill.bugzilla.org/ppm,把所有的ppd文件都下载到本地,再把x86目录下面的gz包全部下载到本地的x86目录下(保持ppd和gz文件的相对位置不变就对了),然后逐个 ppm install ***.ppd。不过当时GDGraph.ppd下载后没有安装成功,是用了 ppm install http://landfill.bugzilla.org/ppm/GDGraph.ppd 才安上的。

  下载到本地在安装主要是快,用flashget或者netants来下和用ppm来慢慢下的速度当然是天上地下了。如果下到候光敏搜集的perlmodules包也可以用,但是其中的DBI版本太旧了还是要去下新的,GD等图表用到的包如果要用也要自己下。

6 配localconfig和checksetup.pl,老红宝书上说的$mysql_binaries = "D://mysql//bin//mysql"; 和

$mysqlpath = "D://mysql//bin" 项已经过时很久了,新DBI自己能连到mysql,不用去调mysql命令。所以其实只要配localconfig中的数据库地址、用户名和密码就行了。我用了localhost/bugs/bugs。然后改了

$index_html = 1。$webservergroup好像忘了改,可是也跑的挺欢,可能有默认值吧?配成功后perl

checksetup.pl会自动创建表。等它创建完了我把mysql服务停掉,把data目录下的bugs目录删调,拷贝原

来的mysql上的data目录下的bugs目录过来,再开mysql服务,于是新服务就用上了老数据了。

7 修改perl文件这一步在老服务器上做了,只是确认了一下直接拷贝过来的cgi文件都是改好了的。

8 配置IIS,参见红宝书。配完后发现无法访问bugzilla虚拟目录。进一步研究发现其实bugzilla目录下

的两个图片都可以发布,js文件也能下载,因此问题出在perl命令没有被执行。重新检查IIS后发现

windows2003下的IIS有个“服务器扩展”项目,默认所有的CGI功能包括perl和asp都是禁止的。启用了与

perl相关的两项后bugzilla正常运行。

9 配置邮件。其实http://www.bugzilla.org/docs/2.18/html/os-specific.html上说的很清楚了


open(SENDMAIL, "|/usr/lib/sendmail $sendmailparam -t -i") ||
  die "Can't open sendmail";

print SENDMAIL trim($msg) . "/n";
close SENDMAIL;
       
改成

use Net::SMTP;
my $smtp_server = 'smtp.mycompany.com';  # change this

# Use die on error, so that the mail will be in the 'unsent mails' and
# can be sent from the sanity check page.
my $smtp = Net::SMTP->new($smtp_server) ||
  die 'Cannot connect to server /'$smtp_server/'';

$smtp->mail('bugzilla-daemon@mycompany.com');  # change this
$smtp->to($person);
$smtp->data();
$smtp->datasend($msg);
$smtp->dataend();
$smtp->quit;
       
我是配置了自己公司的smtp服务器。

 


 

posted @ 2004-12-08 18:34  emu  阅读(173)  评论(0编辑  收藏  举报