Aix_bugzilla
原创作品,转载请注明出处!
Bugzilla在AIX上部署,网上看到的不多。我耗费了很长时间才算部署完,记录在这里,以防忘记了。
一、
下载安装文件或源代码
1、 下载Bugzilla 3.6.3
地址:http://www.bugzilla.org/download/
2、 下载perl源代码
因为AIX上自带的perl程序不是用gcc编译的,在后面安装必需的perl modules的时候会出错,提示找不到cc_r编译器。因此需要使用gcc重新编译perl。下载地址:hhttp://www.cpan.org/src/README.html
我下载的是 perl-5.8.9.tar.gz
3、
下载gcc
地址:http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.html
注意需要下载五个文件gcc-4.2.0-3.aix6.1.ppc.rpm、gcc-cplusplus-4.2.0-3.aix6.1.ppc.rpm、libgcc-4.2.0-3.aix6.1.ppc.rpm、libstdcplusplus-4.2.0-3.aix6.1.ppc.rpm、libstdcplusplus-devel-4.2.0-3.aix6.1.ppc.rpm。对perl的编译过程中,如果缺少文件在make test的时候会出错。
4、 下载mysql
地址:http://www.mysql.com/downloads/mysql/#downloads
我下载的是:mysql-5.1.53-aix5.3-powerpc-64bit.tar.gz
没有找到for
AIX6.1的。
下载完成后,将下载的文件传到服务器上,放在某个目录下。解压。比如解压mysql:进入mysql安装文件所在目录,然后执行如下命令:
gunzip mysql-5.1.53-aix5.3-powerpc-64bit.tar.gz
tar xvf
mysql-5.1.53-aix5.3-powerpc-64bit.tar
依次解压其他的文件。
二、
安装mysql
进入解压后的mysql安装目录,比如是
/tmp/ mysql-5.1.53-aix5.3-powerpc-64bit
下面有一个文件时INSTALL-BINARY,打开后里面有安装步骤,可以参考这些步骤进行操作。我的操作步骤如下:
Ø
创建group mysql
过程省略。(smitty
group)
Ø
创建user mysql
,用户mysql的primary group是mysql (smitty group)
Ø
cd /tmp/ mysql-5.1.53-aix5.3-powerpc-64bit
Ø
scripts/mysql_install_db --user=mysql(我执行过程中没有出错,也许还需要执行chown –R mysql .和chgrp –R mysql .)
Ø
su – mysql
Ø
将mysql安装目录下的bin添加到mysql用户环境变量的PATH下。也就是在/home/mysql/.profle的PATH=xxx下添加:PATH=mysql安装目录/bin:$PATH;
export PATH 然后重新登录。
Ø
然后尝试能否登录mysql
mysql –u root
如果出现mysql>提示符表示安装成功。
Ø
给Bugzilla创建用户和库
Create database bugs;
Grant all privileges on bugs.*
to ‘bugs’@’localhost’ identified by ‘123456’;
也就是Bugzilla将来要连接的数据库是bugs,用户名是bugs,密码是123456
关于mysql的操作,我也不熟悉。大家自己去下载相关手册。服务器重启之后mysql没有启动,执行“mysql –u root”会报/tmp/mysql.sock找不到。可以执行一下mysqld,然后再试试。
三、
安装gcc,重新编译perl
这是最艰难的一步。部署Bugzilla需要很多modules,下载了modules然后进行编译,报错:
/bin/sh: cc_r: not found
make: 1254-004 The error code from the
last command is 127。网上关于这个错误的解决很少,有一个网站好像提供了解决方案,但是要访问还要收费。其他的一般说是重新安装perl。
Ø
安装gcc-4.2.0-3.aix6.1.ppc.rpm
命令:rpm –ivh gcc-4.2.0-3.aix6.1.ppc.rpm
Ø
然后安装其他四个文件:gcc-cplusplus-4.2.0-3.aix6.1.ppc.rpm、libgcc-4.2.0-3.aix6.1.ppc.rpm、libstdcplusplus-4.2.0-3.aix6.1.ppc.rpm、libstdcplusplus-devel-4.2.0-3.aix6.1.ppc.rpm。命令相同,都是rpm –ivh xxxx. 它们之间是有依赖关系的,先装哪个后装哪个,我已经搞不清了,试试就能试出来,根据报错提示自己尝试吧。
Ø
编译perl
解压后的perl源文件目录中有README.aix,里面有如何编译。我用的AIX是64bit的(查看操作系统是否是64bit /usr/bin/getconf
HARDWARE_BITMODE),所以我的编译命令是:
rm -rf config.sh
./Configure \
-d
\
-Dcc='gcc -maix64' \
-Duseshrplib \
-Duse64bitall \
-Dprefix=/usr/opt/perl5_64
其中-Dprefix是安装目录,即将来perl程序就在这个位置。
Ø
安装perl 接下来执行:
make
make test
make install
如果不出现错误,perl就安装完成了。
Ø
ln -sf / usr/opt/perl5_64/perl /usr/bin/perl
Ø
执行perl –V查看是否已经成功安装。
四、
安装Apache http server
我使用的是WebSphere application
server安装介质中的his,所以没有从网上找apache http server。此过程省略。
五、
部署Bugzilla
将Bugzilla拷贝到Apache Http Server安装目录下,我的Http Server目录是/var/IBM/ihs。Bugzilla的目录是/var/IBM/ihs/bug3。
Ø
修改/var/IBM/ihs/conf/httpd.conf,修改内如如下:
l
去掉#AddHandler cgi-script .cgi的注释
l
Listen 9070 #修改默认的端口号。可以不改
l
User apache #修改原来的值
Group apache
l
ServerName localhost:9070
#修改原来的值
l
DocumentRoot "/var/IBM/ihs/bug3"
#修改原来的值
l
Options Indexes FollowSymLinks
ExecCGI #修改原来的值
l
DirectoryIndex index.html
index.html.var index.cgi #修改原来的值
l
<Directory
"/var/IBM/ihs/bug3"> #在文件最后添加
Options ExecCGI FollowSymLinks
AllowOverride Limit
DirectoryIndex index.cgi index.html
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
</Directory>
Ø
创建组apache和用户apache
Ø
cd /var/IBM/ihs/bug3
执行perl checksetup.pl
根据该命令的执行结果可以看到有很多modules缺少,需要安装。如何安装,请看下一步。
Ø
所有必需的modules安装完成后,执行perl checksetup.pl,在/var/IBM/ihs/bug3下会生成一个localconfig文件。
Ø
修改localconfig文件。修改如下内容:
$webservergroup =
'apache';
$db_driver = 'mysql';
$db_host = 'localhost';
#这个地方可能可以改成主机名,我没有试,用localhost成功了就懒得管了。
$db_name = 'bugs';
$db_user = 'bugs';
$db_pass = '123456';
$db_port = 3306; #mysql默认端口
$db_check = 1;
$index_html = 1;
Ø
再次执行perl checksetup.pl,如果能连上数据库,checksetup会创建表和约束等等。尤其是checksetup.pl会修改bug3里文件的属主。
Ø
执行用浏览器访问http://服务器IP:端口/应该能看到Bugzilla的登录页面。如果出现“you don’t have permission to access
…”这可能是bug3里文件的属性不对造成的,可以对其进行修改:
chown –R apache:apache
bug3 然后再试。
Ø
看到页面后测试一下。有时候点击主页面下方的Bugs,会出现
undef error – Cannot determine local time
zone
解决这个错误,可以查看http://www.djx1981.com/archives/245.html
这个帖子。修改 Bugzilla/Util.pm
use Date::Parse;
use Date::Format;
BEGIN { $ENV{TZ} = ‘Asia/Shanghai’;
} # 增加这一行
use DateTime;
use DateTime::TimeZone;
use Text::Wrap;
六、
安装modules
这是比较难的一步。
perl checksetup.pl命令执行中,如果必需的modules没有,会提示用perl install-module.pl --all安装。如果能给AIX服务器配上proxy,让程序自己去寻找所需要的modules,那会省去很多麻烦。不过我没这么幸运。我的设置没有成功。我设置的步骤如下:
#perl –MCPAN –e shell
cpan[1]> o conf
ftp_proxy=myproxy:port
cpan[2]> o conf
commit
cpan[3]> o conf
http_proxy=myproxy:port
cpan[4]> o conf
commit
然后执行perl install-module.pl --all
无效。谁知道为什么代理服务器配不上,请不吝告知,十分感谢。
因为我没有能给我的服务器配上代理服务器,所以我只好根据checksetup.pl的提示去下载所有需要的modules,然后手动安装。
下载网站:
http://www.cpan.org/modules/
Ø
点击all modules (a long
list),根据需要搜索需要的模块,然后下载,上传到服务器,解压,然后执行:
perl Makefile.PL
make
make test
make install
有的能直接安装成功,有的则提示缺少其他的模块,那么没办法,只能根据提示再去网站下载需要的模块,安装完后再安装这个模块。
Ø
有的模块可能过于陈旧了,在上面的链接里找不到,那就在http://www.cpan.org/modules/页面点击name链接,根据名字去找。
Ø
上面两步还没找到所需要的模块的话,那点击# CPAN Search,输入名字去查找。其中Return-Value-1.666001.tar.gz就是在这里找到的。
Ø
有的模块下载下来,里面没有Makefile.PL文件,只有Build,那就用如下的命令:
perl Build
./Build test
./Build install
不过,在进行Build test之前需要安装两个模块:ExtUtils-MakeMaker-6.56.tar.gz和ExtUtils-CBuilder-0.2703.tar.gz。下载下来安装上就可以了。
Ø
DateTime模块,Bugzilla需要DateTime-0.28,在网站上没有找到这么低的版本,安装了DateTime-0.66.tar.gz后成功了。当然还有 DateTime-TimeZone模块。
往往是一个模块的安装需要安装好几个其他的模块,比较费时间,而且安装过程中并不知道这样是否一定能成功。
七、
配置SMTP
AIX本身是带sendmail的,但是我没有配置成功。在网上找sendmail最新版本也没有找到符合AIX6.1的。下载了一个qmail,倒腾了两天,一无所获,对邮件服务器软件所知甚少。
http://hi.baidu.com/aigo1213/blog/item/87a0dff0c2319519b17ec574.html和http://www.7747.net/kf/201009/73848.html两个帖子帮忙很大。不过第一个帖子里修改的Bugzilla 2.22.2,在Bugzilla 3.6.3里MessageToMTA方法已经不再BugMail.pm中了。后来我在Bugzilla/Mailer.pm中找到了这个方法。根据第一个帖子做了修改,不过发送不能成功。后来发现,是$msg中如果有To:xxx From:xxx Subject:xx就发送不成功,后来就把$smtp->datasend($msg) 改成了$smtp->datasend($body),并在这一句之前加了$smtp->datasend($subject),以便于让收件人看到标题。$subject是在前面获取的:my $subject =
trim($headers->get('subject'));。
将原来的MessageToMTA方法改名,修改后的方法内容如下:
sub MessageToMTA {
my ($msg, $send_now) = (@_);
my $method =
Bugzilla->params->{'mail_delivery_method'};
return if $method eq 'None';
my ($header, $body) = $msg =~ /(.*?\n)\n(.*)/s ? ($1, $2) : ('',
$msg);
my $headers;
my
$utf8t=Bugzilla->params->{'utf8'};
if ($utf8t and (!is_7bit_clean($header) or !is_7bit_clean($body)))
{
($headers, $body) = encode_message($msg);
} else {
my @header_lines = split(/\n/, $header);
$headers = new Mail::Header \@header_lines, Modify
=> 0;
# print $headers; exit;
}
# Use trim to remove any whitespace (incl. newlines)
my $rcpt_to = trim($headers->get('to'));
my $subject =
trim($headers->get('subject'));
my $from = trim($headers->get('From'));
use Net::SMTP;
my $smtp_server = 'xxx.xxx.xxx';
my $smtp_user = 'xxx@xxx.xxxx';
my $smtp_pass =’xxxx’;
my $encode_smtpuser =trim(encode_base64($smtp_user));
my $encode_smtppass =trim(encode_base64($smtp_pass));
my $smtp = Net::SMTP->new($smtp_server,Timeout
=> 60) ||
die 'Cannot connect to smtp server';
my $result =
$smtp->command('AUTH','LOGIN');
my $answer = $smtp->getline();
# 334 VXNlcm5hbWU6
$result =
$smtp->command($encode_smtpuser);
$answer = $smtp->getline();
# 334 UGFzc3dvcmQ6
$result =
$smtp->command($encode_smtppass);
$answer = $smtp->getline();
# 235 Authentication successful
# or 535 Authentication failed
if ($answer =~ /535/i)
{print "Sorry,Authentication failed!n";exit;}
$smtp->mail($smtp_user);
$smtp->to($rcpt_to);
$smtp->data();
$smtp->datasend("Subject:
$subject \n");
$smtp->datasend($body);
#
$smtp->datasend($msg);
#print "test"; exit;
$smtp->dataend();
$smtp->quit;
}
修改完成后,在Bugzilla中不需要再配置sendmail或者smtp了,如果需要修改发送邮件的用户名和密码,需要直接修改这个文件了。
Aix_bugzilla的更多相关文章
随机推荐
- AprioriTID algorithm
What is AprioriTID? AprioriTID is an algorithm for discovering frequent itemsets (groups of items ap ...
- Centos安装webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 引用 wget htt ...
- 15 Tricks to Appear Smart in Emails(转)
英文原文:15 Tricks to Appear Smart in Emails 如果你不关心在邮件中表现聪明,就不要看本文了. 好吧,我们是孤独的. 在公司环境里,与电子通讯的肥沃土壤相比,没有什么 ...
- 【POJ 2823 Sliding Window】 单调队列
题目大意:给n个数,一个长度为k(k<n)的闭区间从0滑动到n,求滑动中区间的最大值序列和最小值序列. 最大值和最小值是类似的,在此以最大值为例分析. 数据结构要求:能保存最多k个元素,快速取得 ...
- virtualbox 复制多个虚拟机 (宿主机redhat)
我用VirtualBox做了一个winxp虚拟镜像. 想实现不重新安装而直接复制几个,也就是同时装载几个虚拟机. 但是直接复制已安装好机子的vdi文件,系统会报uuid已存在的错误. 所以,就需要修改 ...
- 使用ashx一般处理程序,读取不到Session的问题
一般的处理程序文件里面是用不了Session的,必须得实现Session接口才可以用. public class RandomCode : IHttpHandler, System.Web.Sessi ...
- Connect the Cities(prime)
Connect the Cities Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) ...
- JAVA学习第二十九课(经常使用对象API)- String类
多线程告一段落,開始经常使用对象API的涉及,背也要背下来!.! 日后开发,遇见最多的对象是文字,也就是字符串 String类 字符串是一个特殊对象 字符串一旦初始化就不能够被改变 一.特点 publ ...
- repeater 一个td多个div显示图片
<table class="table table-bordered table-responsive"> <tbody> <asp:Repeater ...
- asp.net mvc 生成条形码
using System; using System.Collections; using System.Collections.Generic; using System.Drawing; usin ...