西单大悦城apple售后:CentOS下redmine、apache、svn配置安装心得
来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 10:12:51
CentOS下redmine、apache、svn配置安装心得
來源:http://xuplus.com/article/2011/01/a221.htmlCentOS默认开启了SELinux,安装Redmine、apache、svn之类的还是蛮复杂的,经过几次折腾之后,终于顺利将redmine折腾成功了,有些心得记录下来备查:
集成方案大体为:
a) svn和apache集成,通过http协议访问svn,svn使用域名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" combined Order deny,allowAllow from 127.0.0.1Deny from all ProxyPass / http://localhost:3000/ProxyPassReverse / http://localhost:3000/
注意:如果/etc/hosts文件中没有解析相关域名到127.0.0.1的话,最好在Allow from后面添加一行让服务器ip可以正常访问。
2、使用两个virtualhost,分别安装redmine和svn,并使用一个location配置svn
这样的好处是明显的,svn单独访问也足够间接,不使用svn和svn-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::Redmine DAV 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 access Require 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、redmine跟svn之间有关版本库通过可以通过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 Redmine:http://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,这样发送的邮件中的连接就正常了。