windows上bugzilla服务器的迁移

来源:互联网 发布:linux上svn命令 编辑:程序博客网 时间:2024/05/17 06:57

windows上bugzilla服务器的迁移


       转载请注明出处:http://blog.csdn.net/drivelinux/article/details/8754756

  由于之前的服务器到期,需要将bugzilla移到新的服务器上。因此,漫长的bugzilla迁移之路就开始了。讲如何搭建bugzilla服务器的帖子网上有很多,但由于迁移环境稍有变化,而且迁移和重新装也有所不同,还是费了很长时间和精力。现将我迁移bugzilla到新环境的方法做如下记录。

老服务器配置:windows server 2003<64位>,bugzilla+MySQL+Perl+IIS
新服务器配置:windows server 2003<32位>,bugzilla+MySQL+Perl+apache

主要的操作步骤如下。

一、备份数据

1.备份bugzilla

将C盘下的bugzilla目录压缩并拷贝到新机器里。

2.备份bugzilla的数据库,也就是备份MySQL数据库

mysql备份数据库命令:
mysqldump -u root -p bugs > ./bugs.sql
该命令的意思是将MySQL中bugs数据库的数据导出到文件bugs.sql中。
导入数据库命令:
mysql -u root -p bugs < ./bugs.sql
  在新机器上安装好数据库之后,就可以利用导入数据库的命令,将之前导出的bugs.sql数据库导入到新的环境。为了简单,上述两条命令中bugs.sql的路径都写成了当前路径,在实际运行命令时可以根据文件存放的具体路径做适当修改。

3.备份perl目录

  压缩C盘下的Perl目录,并备份到新机器。备份该目录的目的是利用老机器里已经下载好的module,在安装好perl后就不用自己再去重新安装了。另外,我还用了老机器上使用的perl的安装程序。

  经过上述操作之后,需要备份的数据就备份完毕了。接下来便可以在新服务器上搭建bugzilla服务了。

二、在新机器上安装bugzilla

1.将从老机器备份的bugzilla压缩包直接解压到C盘根目录下

2.安装mysql

因为保存了老机器所用的mysql的安装程序,所以就用同一版本的mysql装在了新机器中,在安装过程中,要记住root用户的密码。然后进入命令行模式,依次执行下列命令建立名为bugs的数据库。
A.以root的身份登陆数据库,需要输入之前填写的root密码;
mysql -u root -p
B.登陆后,建立名为bugs的数据库;
create database bugs;
C.设置bugs用户和对应的密码,若不设置密码,则密码为空,也就是默认的YES;
grant all privileges on bugs.* to 'bugs'@'localhost' identified by '123123';
D.刷新权限
flush privileges
E.退出
quit
  注意上述命令中,有的命令后是有分号的。执行完上述操作后,便建立了一个bugs数据库,该数据库有一个用户bugs,密码为123123。如果新建立的用户名bugs和密码123123与老机器中的数据库的用户名和密码不同的话,需要将新的用户名和密码填写到bugzilla的配置文件中,否则,在后面执行perl checksetup.pl时,会出现错误提示。打开bugzilla目录下的localconfig文件,按照新的数据库名,数据库对应的用户和密码给下列变量正确的赋值。
# 数据库名
$db_name = 'bugs';
# 数据库的用户名
$db_user = 'bugs';
# 密码,若没有设置密码,则此处应为空
$db_pass = '123123';

3.安装Perl

  用安装程序进行Perl的安装,和老机器一样,安装到C盘根目录下。安装好之后,用之前备份的perl目录覆盖安装目录,这样,在老机器上下载好的模块就直接可以用了,不用再去一步步下载模块。并且能够省去很多其它的配置过程。但前提是新老机器用的是同一版本的perl,这种方法虽然很暴力,但是还是比较方便的。

4.验证环境是否正常

  进入命令行,执行perl c:\bugzilla\checksetup.pl,检查bugzilla环境是否正确。因为是从老机器迁移过来的,因此只要上述localconfig文件中的$db_user和$db_pass都设置正确的话,一般不会有什么问题。

5.安装web服务器

  我用IIS配置了很久,居然没有任何反应,我配置的没有问题,所以怀疑由于服务器是虚拟系统而导致一些服务不能正常运行的缘故。具体原因我也不知道,对这些东西没什么研究。总之,我改用了apache。安装完apache之后,在电脑的IE浏览器输入http://localhost/,会显示出It works,表明apache安装正常。之后,按照网上的说明进行httpd.conf配置文件的修改即可。修改完成之后,restart apache。再访问http://localhost/,应该就能看到bugzilla的页面了。

三、迁移过程中出现的主要问题

  虽然装完apache后就能访问到bugzilla的主界面了,但是这个时候bugzilla却不能使用。这个和具体的配置有关系,反正我是遇到了很多问题,这些问题深深的困扰了我,所以一定要记下来。

1.错误:Access denied for user 'bugs'@'localhost'(using password: YES)

  在执行perl checksetup.pl时,出现上述错误,原因就是没有正确设置bugzilla根目录下localconfig文件中的$db_user和$db_pass。

2.bugzilla服务器地址设置

  由于换了新的服务器,IP地址肯定要变。那么怎么改变或者设置bugzilla服务器的地址呢?

在bugzilla/data/params文件中的urlbase对应的就是服务器的地址。只要将该项修改为对应的服务器的地址即可。如下:

'urlbase' => 'http://42.121.105.156/'

3.错误:client denied by server configuration: C:/bugzilla/Bugzilla/index.cgi

  环境搭建完成之后,本机访问http://localhost/和http://localhost/index.cgi都可以进入bugzilla的主页,但是通过http://localhost/bugzilla/index.cgi却不可以。apache的error.log文件显示:

client denied by server configuration: C:/bugzilla/Bugzilla/index.cgi

并且浏览器中显示如下信息。

Forbidden
You don't have permission to access /bugzilla/index.cgi on this server.

开始以为是权限的问题,但是我修改了以下三个文件夹的权限后问题依然存在。
    * C:/Bugzilla/data
    * C:/Program Files/Apache Group/Apache2/logs
    * C:/Temp

  经过不断修改可疑的地方,最后得出结论,是上面提到的urlbase设置有问题。因为之前的服务器中采用IIS作为web服务器,而现在改用apache做为web服务器,所以关于访问路径的设置上有些不同。之前的urlbase为如下格式:

'urlbase' => 'http://xxx.xxx.xxx.xxx/bugzilla'

我将其后的bugzilla去掉之,改为'urlbase' => 'http://xxx.xxx.xxx.xxx'之后,forbidden的问题得到解决。

4.bugzilla不能保持登陆状态,登陆后经常(每操作一步)需要输入账号和密码

 这个主要是cookie的问题,在文件bugzilla/data/params中有如下定义:
'cookiedomain' => '',
'cookiepath' => '/bugzilla/',
    将其修改为:
'cookiedomain' => '42.121.105.183',
'cookiepath' => '',

  我的理解是这样的,在我的配置中,http://42.121.105.156/已经映射为c:\bugzilla,如果'cookiepath' 设置为'/bugzilla/',相当于cookie的保存路径为c:\bugzilla\bugzilla,这与原意不符。因此,bugzilla无法保存cookie,导致错误发生无法保存密码,因此不能保存登陆状态,每操作一步就要求输入密码。我想,出现Forbidden:You don't have permission to access /bugzilla/index.cgi on this server.提示的原因可能也是因为路径设置上的问题。


四、bugzilla的维护

1.正常使用过程中出现如下错误, '.\bugs\bugs_fulltext' is marked as crashed and should be repaired...

myisamchk -c -r bugs_fulltext.MYI

myisamchk -of bugs_fulltext.MYI      //第一步   

myisamchk -r bugs_fulltext.MYI       //第二步  

myisamchk bugs_fulltext.MYI         //第三步 

之后再Mysql的命令行窗口执行如下命令:

repair table bugs_fulltext.MYI

2.mysql升级系统表的方法

mysql -u root -p mysql

输入密码,之后执行如下命令:
SOURCE C:\Mysql\share\mysql_fix_privilege_tables.sql








原创粉丝点击