{"id":415,"date":"2011-08-18T12:18:35","date_gmt":"2011-08-18T12:18:35","guid":{"rendered":"http:\/\/hgtas.com\/?p=415"},"modified":"2011-08-18T12:18:35","modified_gmt":"2011-08-18T12:18:35","slug":"centos-5-5-redmine-built-under-project-management-software","status":"publish","type":"post","link":"https:\/\/508.me\/?p=415","title":{"rendered":"Centos 5.5\u4e0b\u642d\u5efaredmine\u9879\u76ee\u7ba1\u7406\u8f6f\u4ef6"},"content":{"rendered":"<p>  Redmine\u662f\u4e00\u4e2a\u57fa\u4e8eweb\u7684\u9879\u76ee\u7ba1\u7406\u8f6f\u4ef6\uff0c\u7528Ruby\u5f00\u53d1\u3002\u5b83\u901a\u8fc7\u201c\u9879\u76ee\uff08Project\uff09\u201d\u7684\u5f62\u5f0f\u628a\u6210\u5458\u3001\u4efb\u52a1\uff08\u95ee\u9898\uff09\u3001\u6587\u6863\u3001\u8ba8\u8bba\u4ee5\u53ca\u5404\u79cd\u5f62\u5f0f\u7684\u8d44\u6e90\u7ec4\u7ec7\u5728\u4e00\u8d77\uff0c\u5927\u5bb6\u53c2\u4e0e\u66f4\u65b0\u4efb\u52a1\u3001\u6587\u6863\u7b49\u5185\u5bb9\u6765\u63a8\u52a8\u9879\u76ee\u7684\u8fdb\u5ea6\uff0c\u540c\u65f6\u7cfb\u7edf\u5229\u7528\u65f6\u95f4\u7ebf\u7d22\uff08Timeline\uff09\u548c\u5404\u79cd\u52a8\u6001\u7684\u62a5\u8868\uff08Report\uff09\u5f62\u5f0f\u6765\u81ea\u52a8\u7ed9\u6210\u5458\u6c47\u62a5\u9879\u76ee\u8fdb\u5ea6\u3002<\/p>\n<p>       Redmine\u529f\u80fd\u53ef\u4ee5\u8bf4\u662f\u975e\u5e38\u5f3a\u5927\u4e86\uff1a<\/p>\n<p>\u3000\u3000\u25cf \u591a\u9879\u76ee\u548c\u5b50\u9879\u76ee\u652f\u6301<\/p>\n<p>\u3000\u3000\u25cf \u91cc\u7a0b\u7891\u7248\u672c\u8ddf\u8e2a<\/p>\n<p>\u3000\u3000\u25cf \u53ef\u914d\u7f6e\u7684\u7528\u6237\u89d2\u8272\u63a7\u5236<\/p>\n<p>\u3000\u3000\u25cf \u53ef\u914d\u7f6e\u7684\u95ee\u9898\u8ffd\u8e2a\u7cfb\u7edf<\/p>\n<p>\u3000\u3000\u25cf \u81ea\u52a8\u65e5\u5386\u548c\u7518\u7279\u56fe\u7ed8\u5236<\/p>\n<p>\u3000\u3000\u25cf \u652f\u6301 Blog \u5f62\u5f0f\u7684\u65b0\u95fb\u53d1\u5e03\u3001Wiki \u5f62\u5f0f\u7684\u6587\u6863\u64b0\u5199\u548c\u6587\u4ef6\u7ba1\u7406<\/p>\n<p>\u3000\u3000\u25cf RSS \u8f93\u51fa\u548c\u90ae\u4ef6\u901a\u77e5<\/p>\n<p>\u3000\u3000\u25cf \u6bcf\u4e2a\u9879\u76ee\u53ef\u4ee5\u914d\u7f6e\u72ec\u7acb\u7684 Wiki \u548c\u8bba\u575b\u6a21\u5757<\/p>\n<p>\u3000\u3000\u25cf \u7b80\u5355\u7684\u4efb\u52a1\u65f6\u95f4\u8ddf\u8e2a\u673a\u5236<\/p>\n<p>\u3000\u3000\u25cf \u7528\u6237\u3001\u9879\u76ee\u3001\u95ee\u9898\u652f\u6301\u81ea\u5b9a\u4e49\u5c5e\u6027<\/p>\n<p>\u3000\u3000\u25cf \u652f\u6301\u591a\u79cd\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u7684\u7ed1\u5b9a\uff08SVN\u3001CVS\u3001Git\u3001Mercurial \u548c Darcs\uff09<\/p>\n<p>\u3000\u3000\u25cf \u652f\u6301\u591a LDAP \u7528\u6237\u8ba4\u8bc1<\/p>\n<p>\u3000\u3000\u25cf \u652f\u6301\u7528\u6237\u81ea\u6ce8\u518c\u548c\u7528\u6237\u6fc0\u6d3b<\/p>\n<p>\u3000\u3000\u25cf \u591a\u8bed\u8a00\u652f\u6301\uff08\u5df2\u7ecf\u5185\u7f6e\u4e86zh\u7b80\u4f53\u4e2d\u6587\uff09<\/p>\n<p>\u3000\u3000\u25cf \u591a\u6570\u636e\u5e93\u652f\u6301\uff08MySQL\u3001SQLite\u3001PostgreSQL\uff09<\/p>\n<p>\u3000\u3000\u25cf \u5916\u89c2\u6a21\u7248\u5316\u5b9a\u5236\uff08\u53ef\u4ee5\u4f7f\u7528 Basecamp \u3001Ruby\u5b89\u88c5\uff09<\/p>\n<p>\u4e0b\u9762\u4ecb\u7ecd\u4e00\u4e0b\u5728Centos 5.5\u4e0b\u7684\u5b89\u88c5\uff0c\u4ee5\u53ca\u548cnginx\u7ed3\u5408\u7684\u95ee\u9898\u3002<\/p>\n<p>1. \u5148\u5b89\u88c5\u4e00\u4e9b\u76f8\u5173\u5e93<\/p>\n<p>yum groupinstall &#8220;Development Tools&#8221;<br \/>\nyum install zlib-devel wget openssl-devel pcre pcre-devel make gcc gcc-c++ curl-devel<\/p>\n<p>2. \u65e2\u7136\u662fruby\u5199\u7684\uff0cruby\u603b\u662f\u8981\u5b89\u88c5\u7684\u4e86\uff0cruby\u6700\u65b0\u7684\u662f1.9.x\u7248\u4e86\uff0c\u4f46\u662f\u6700\u65b0\u7684redmine 1.1\u7248\u4e5f\u53ea\u662f\u652f\u6301ruby1.8\u7248\uff0c\u6240\u4ee5\u8981\u5b89\u88c5ruby 1.8.x<br \/>\nwget ftp:\/\/ftp.ruby-lang.org\/\/pub\/ruby\/ruby-1.8.7-p334.tar.gz<br \/>\ntar -xvzf ruby-1.8.7-p334.tar.gz<br \/>\ncd ruby-1.8.7-p334<br \/>\nmake -j3<br \/>\nmake install<\/p>\n<p>3. \u5b89\u88c5rubygems\uff0c\u8fd9\u4e2a\u4e1c\u4e1c\u5e94\u8be5\u7c7b\u4f3cperl\u7684module\u4e86\uff0c\u6211\u662f\u8fd9\u4e48\u7406\u89e3\u7684\u3002<\/p>\n<p>wget http:\/\/production.cf.rubygems.org\/rubygems\/rubygems-1.5.1.tgz<br \/>\ntar -zxvf rubygems-1.5.1.tgz<br \/>\ncd rubygems-1.5.1\/<br \/>\nruby setup.rb<\/p>\n<p>4. \u7528gem\u5b89\u88c5\u4e00\u4e9bredmine\u8fd0\u884c\u6240\u9700\u7684\u5e93<br \/>\ngem install rails<br \/>\ngem update &#8211;system<br \/>\ngem install rake rack<br \/>\ngem install i18n<br \/>\ngem install RedCloth<br \/>\ngem install fastthread &#8211;no-rdoc &#8211;no-ri<br \/>\ngem install mysql &#8211;no-rdoc &#8211;no-ri &#8212; &#8211;with-mysql-dir=\/usr\/bin &#8211;with-mysql-lib=\/usr\/lib\/mysql &#8211;with-mysql-include=\/usr\/include\/mysql<\/p>\n<p>5. \u5b89\u88c5passenger\uff0cpassenger\u662fapache\u6216nginx\u7684\u4e00\u4e2a\u6a21\u5757\uff0c\u53ef\u4ee5\u7406\u89e3\u4e3a\u7528\u4e8eapache\u6216nginx\u548crails\u7684\u4ea4\u4e92\u7684\u4e00\u4e2aproxy\u3002<br \/>\ngem install passenger<br \/>\npassenger-install-nginx-module<\/p>\n<p>6. \u4e0b\u8f7dredmine<\/p>\n<p>svn co http:\/\/redmine.rubyforge.org\/svn\/branches\/1.1-stable redmine-1.1<br \/>\ncp -rf redmine-1.1 \/home\/httpd\/redmine<\/p>\n<p>7. \u5efa\u7acb\u6570\u636e\u5e93\uff0c\u6211\u662f\u7528\u7684mysql,redmine\u8fd8\u652f\u6301\u5176\u5b83\u7684\u6570\u636e\u5e93\u3002<br \/>\nmysql -h192.168.1.24 -uroot -p<br \/>\nEnter password:<br \/>\nWelcome to the MySQL monitor.  Commands end with ; or \\g.<br \/>\nYour MySQL connection id is 169105<br \/>\nServer version: 5.0.77 Source distribution<\/p>\n<p>Type &#8216;help;&#8217; or &#8216;\\h&#8217; for help. Type &#8216;\\c&#8217; to clear the buffer.<\/p>\n<p>mysql> create database redmine character set utf8;<br \/>\nQuery OK, 1 row affected (0.03 sec)<\/p>\n<p>mysql> quit<br \/>\nBye<\/p>\n<p>8. \u914d\u7f6eredmine<br \/>\ncd \/home\/httpd\/redmine\/<br \/>\ncp database.yml.example database.yml<\/p>\n<p>\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\uff1a<br \/>\nvi database.yml<\/p>\n<p>production:<br \/>\n  adapter: mysql<br \/>\n  database: redmine<br \/>\n  host: 192.168.1.24<br \/>\n  username: root<br \/>\n  password: password<br \/>\n  encoding: utf8<\/p>\n<p>\u7136\u540e\u8dd1\u4e0b\uff1a<\/p>\n<p>cd ..<\/p>\n<p>rake generate_session_store<br \/>\nrake db:migrate RAILS_ENV=&#8221;production&#8221;<\/p>\n<p>\u5982\u679c\u63d0\u793a\u54ea\u4e9b\u4e1c\u897f\u7684\u7248\u672c\u4e0d\u5bf9\uff0c\u5c31\u5b89\u88c5\u54ea\u4e9b\uff1a<\/p>\n<p>gem install -v=0.4.2 i18n<br \/>\ngem install -v=2.3.5 rails<\/p>\n<p>\u7136\u540e\u518d\u8dd1\uff1a<br \/>\nRAILS_ENV=production rake db:migrate<\/p>\n<p>\u5982\u679c\u63d0\u793a\uff1a<br \/>\nrake aborted!<br \/>\nundefined local variable or method `version_requirements&#8217; for #<Rails::GemDependency:0x7f1bdb0f24d8><\/p>\n<p>\u5c31\uff1a<br \/>\nvi \/home\/httpd\/redmine\/config\/environment.rb<br \/>\n\u5728\u5f00\u5934\u52a0\u5165\uff1a<br \/>\nif Gem::VERSION >= &#8220;1.3.6&#8221;<br \/>\n    module Rails<br \/>\n        class GemDependency<br \/>\n            def requirement<br \/>\n                r = super<br \/>\n                (r == Gem::Requirement.default) ? nil : r<br \/>\n            end<br \/>\n        end<br \/>\n    end<br \/>\nend<\/p>\n<p>\u542f\u52a8redmine\uff1a<br \/>\nruby script\/server webrick -e production &#038;<\/p>\n<p>\u7136\u540e\u53ef\u4ee5\u5728\u6d4f\u89c8\u5668\u5185\u901a\u8fc7http:\/\/ip:3000\u8bbf\u95eeredmine\uff0credmine\u5b89\u88c5\u5c31\u5b8c\u6210\u4e86\u3002<\/p>\n<p>9. \u7528nginx\u8fd0\u884credmine<\/p>\n<p>\u867d\u7136\u4e0a\u9762\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u8fd0\u884credmine,\u4f46\u662f\u975e\u5e38\u6162\uff0c\u7ecf\u5206\u6790\u4e3b\u8981\u662f\u6162\u5728http\u5904\u7406\u8fd9\u5757\uff0c\u4ece\u4e0a\u9762\u7684\u8fd0\u884c\u547d\u4ee4\u5c31\u53ef\u4ee5\u770b\u51fa\u6765\uff0credmine\u76f8\u5f53\u4e8e\u662f\u8fd0\u884c\u5728\u4e00\u4e2a\u7528ruby\u5199\u7684web server\u4e0a\u3002\u80fd\u4e0d\u6162\u561b\u3002\u3002\u3002<\/p>\n<p>\u6240\u4ee5\u5c31\u9700\u8981\u7528nginx\u8fd0\u884credmine\uff0c\u914d\u7f6e\u4e5f\u5f88\u7b80\u5355\uff1a<\/p>\n<p>vim nginx.conf<\/p>\n<p>\u5728http\u8fd9\u5757\u52a0\u5165\uff1a<\/p>\n<p>  http {<br \/>\n      &#8230;<br \/>\n      passenger_root \/usr\/local\/lib\/ruby\/gems\/1.8\/gems\/passenger-3.0.2;<br \/>\n      passenger_ruby \/usr\/bin\/ruby;<br \/>\n      &#8230;<br \/>\n  }<\/p>\n<p>\u7136\u540e\u52a0\u4e00\u865a\u62df\u4e3b\u673a\uff1a<\/p>\n<p>    server {<br \/>\n      listen 80;<br \/>\n      server_name www.yourhost.com;<br \/>\n      root \/home\/http\/redmine\/public;   # \u6ce8\u610f\u8fd9\u8fb9\u8981\u914d\u7f6eredmine\u76ee\u5f55\u4e0b\u7684public\u76ee\u5f55<br \/>\n      passenger_enabled on;<br \/>\n   }<\/p>\n<p>\u91cd\u542fnginx\uff0c\u5c31\u53ef\u4ee5\u901a\u8fc7\u57df\u540d\u8bbf\u95eeredmine\u4e86\u3002<\/p>\n<p>http:\/\/apps.hi.baidu.com\/share\/detail\/30235554<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redmine\u662f\u4e00\u4e2a\u57fa\u4e8eweb\u7684\u9879\u76ee\u7ba1\u7406\u8f6f\u4ef6\uff0c\u7528Ruby\u5f00\u53d1\u3002\u5b83\u901a\u8fc7\u201c\u9879\u76ee\uff08Project\uff09\u201d\u7684\u5f62\u5f0f\u628a\u6210\u5458\u3001\u4efb [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[64],"tags":[118,66],"_links":{"self":[{"href":"https:\/\/508.me\/index.php?rest_route=\/wp\/v2\/posts\/415"}],"collection":[{"href":"https:\/\/508.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/508.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/508.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/508.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=415"}],"version-history":[{"count":1,"href":"https:\/\/508.me\/index.php?rest_route=\/wp\/v2\/posts\/415\/revisions"}],"predecessor-version":[{"id":416,"href":"https:\/\/508.me\/index.php?rest_route=\/wp\/v2\/posts\/415\/revisions\/416"}],"wp:attachment":[{"href":"https:\/\/508.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/508.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/508.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}