西单大悦城apple售后:CentOS下redmine、apache、svn配置安装心得

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 10:12:51

CentOS下redmine、apache、svn配置安装心得

來源:http://xuplus.com/article/2011/01/a221.html

CentOS默认开启了SELinux,安装Redmine、apache、svn之类的还是蛮复杂的,经过几次折腾之后,终于顺利将redmine折腾成功了,有些心得记录下来备查:

集成方案大体为:

a) svn和apache集成,通过http协议访问svnsvn使用域名svn.test.com,仓库访问路径为:http://svn.test.com/XXXX

b) svn通过Perl和redmine的数据库集成提供身份和权限认证,仓库访问用户名和密码由redmine中创建的用户和密码访问,可访问项目仓库受redmine控制

c) redmine用mongrel_rails 运行于3000端口

d) apache使用proxy模块将pms.image-pro.com.cn的80端口反向代理到redmine的3000端口

e) 每5分钟通过cron的形式将redmine中项目信息同步到svn

1、不要使用passenger集成Apache,使用反向代理方式集成Apache

官方指南中使用passenger来和Apache集成,但是passenger跟SELinux集成是很困难正常运行的,解决办法需要将SELinux更改为permissive模式(编辑

/etc/sysconfig/selinux文件修改为SELINUX=permissive),然而使用Apache的反向代理向rails转发却简单得多。

这种方式需要开启redmine的“启用用于版本库管理的Web Service”功能,设置方式为安装完成之后,用admin账号登陆redmine,进入“管理”->“配置”->“版本库”设置页面开启“启用用于版本库管理的Web Service”选项,并生成一个API Key,这个API key有用。

相关virtualhost配置节点如下:

ServerAdmin bbs@test.comDocumentRoot "/var/www/redmine"ServerName pms.test.comErrorLog "logs/pms.test.com-error.log"CustomLog "logs/pms.test.com-access.log" combinedOrder deny,allowAllow from 127.0.0.1Deny from allProxyPass / http://localhost:3000/ProxyPassReverse / http://localhost:3000/

注意:如果/etc/hosts文件中没有解析相关域名到127.0.0.1的话,最好在Allow from后面添加一行让服务器ip可以正常访问。

2、使用两个virtualhost,分别安装redminesvn,并使用一个location配置svn

这样的好处是明显的,svn单独访问也足够间接,不使用svnsvn-private两个Location配置来分别供给SVN客户端和redmine使用。

相关virtualhost配置节点如下:

ServerAdmin svn@test.comServerName svn.test.comErrorLog "logs/dummy-svn.test.com-error.log"CustomLog "logs/dummy-svn.test.com-access.log" combinedPerlLoadModule Apache2::RedmineDAV svnSVNParentPath "/var/svn"Order deny,allowDeny from allSatisfy anyPerlAccessHandler Apache::Authn::Redmine::access_handlerPerlAuthenHandler Apache::Authn::Redmine::authen_handlerAuthType BasicAuthName "Redmine SVN Repository"#read-only accessRequire valid-userAllow from 127.0.0.1# Allow from another-ipSatisfy any# write accessRequire valid-user## for mysqlRedmineDSN "DBI:mysql:database=redmine;host=localhost"RedmineDbUser "redmine"RedmineDbPass "password"

这里Allow from跟上面说的一样,最好添加服务器的ip通过,这样一个Location节点即可完成SVN设置,保证redmine中看到的svn仓库地址和SVN客户端(例如:TortoiseSVN)中使用的svn仓库地址一致(都是http://svn.test.com/XXXXX,而不是一个/svn-private/XXX,一个/svn/XXXX),而且svn仓库地址也够简洁。

3、如果邮件使用GMail的服务,则需要使用ruby 1.8.7,rails要求2.3.5

如果默认安装的是ruby 1.8.6则发送邮件的时候会报错,要求先自行starttls命令。必须升级到1.8.7

相关命令:

ftp ftp.ruby-lang.orgcd /pub/rubyget ruby-1.8.7.pXXX.tar.gztar zxvf ruby-1.8.7.pXXX.tar.gz ruby-1.8.7.pXXXcd ruby-1.8.7.pXXX./configure --prefix=/usrmakemake installruby -vwhich rubycd ..

这里XXX是对应的发布版本号,当前是330,需要注意的是有些版本不一定能够正常编译通过,我在测试的时候p160编译就通过不了。

4、相关SELinux权限设置

执行以下命令赋予相关目录正确的SELinux属性:

chcon -u system_u -R -t httpd_log_t /var/www/redmine/logchcon -u system_u -R -t httpd_tmpfs_t /var/www/redmine/tmpchcon -u system_u -R -t httpd_sys_script_rw_t /var/www/redmine/fileschcon -u system_u -R -t httpd_sys_script_rw_t /var/www/redmine/public/plugin_assets

由于svn版本库的SELinux设置比较复杂,可以通过以下命令直接处理完毕

chcon -u system_u -R -h -t httpd_sys_script_rw_t /var/svn

5、redminesvn之间有关版本库通过可以通过cron来完成

cron执行内容如下:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/ruby /var/www/redmine/extra/svn/reposman.rb --redmine pms.test.com -k apikey --svn-dir /var/svn --owner apache --url http://svn.test.com/ >> /var/log/reposman.log

其中apikey内容为redmine后台生成的API key,这样每5分钟都会将redmine中的版本库信息同步到svn中(自动创建版本库)

6、redmine使用mongrel自启动

安装mongrel之后,使用cron来确保在启动时候自动启动mongrel_rails来启动redmine

cron执行内容如下:

@reboot cd /var/www/redmine; rm -f log/mongrel.pid; /usr/bin/mongrel_rails start -p 3000 -d -e production

7、使用ImageMagick绘制甘特图,需要rMagick 1.5.17版本

执行以下命令:

yum install ImageMagick -yyum install ImageMagick-devel -yyum install freetype -yyum install gd-devel -ywget http://www.osresources.com/files/centos-windows-fonts/msfonts.tbzmkdir /usr/share/fonts/default/TrueTypetar xvjpf msfonts.tbz -C /usr/share/fonts/default/TrueType/gem install rmagick -v=1.15.17

8、Redmine.pm存放文字需要根据实际情况来定

x64位操作系统perl库文件位置是/usr/lib64/perl5下,perl5.10版本库位置不再是/perl5.8.8,最后位置也不一定是Apache目录,例如:我机器上就是复制到/usr/lib64/perl5/Apache2目录下,所以具体目录应该根据实际情况决定,拷贝完毕之后Apache的相关VirtualHost配置加载的模块语句就有变化了(如上我的变成了Apache::Redmine)。

 

整体来说,安装过程需要仔细,特别是SELinux在某种程度上来说是设置的羁绊,但RedHat等公司开发它肯定有他的安全必要性,所以我们还是完成SELinux环境下安装比较好。

相关可参考官方资源和文档:

Installing Redminehttp://www.redmine.org/projects/redmine/wiki/RedmineInstall

How To Automate repository creation:http://www.redmine.org/projects/redmine/wiki/HowTo_Automate_repository_creation

Repositories access control with apache, mod_dav_svn and mod_perl:http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Redmine_for_advanced_Subversion_integration

Email Configuration:http://www.redmine.org/projects/redmine/wiki/EmailConfiguration

SELinux, Subversion and mod_svn:http://ejohansson.se/archives/2007/11/04/selinux-subversion-and-mod_svn/

 

  • 另外,还要更改 管理->配置->一般 选项卡中的主机名称为pms.test.com,这样发送的邮件中的连接就正常了。