Ubuntu 9.10下搭建基于PostgreSQL的Redmine
Redmine是最近非常流行Open Source类项目管理组件。它基于Ruby On Rails开发,并且支持MySQL,PostgreSQL和SQLite。除了项目管理的要素,它还内建新闻,Wiki,SVN的支持。
以上是我前几周在书店看到的关于Redmine的介绍,联想到现在身处的项目组那基于Excel和网络共享文件夹不太顺畅的管理,也许我们确实需要一个像样的项目管理规范和管理软件。当我发现Redmine的时候,我感觉这也许就是一个不错的解决方案。当然我不是项目管理人,不过这不妨碍我在自己的环境下尝试一下。当然,我不得不承认,我对Ruby和Rails的知识直接等于0。
我查询了安装Redmine必须的组件,并且打算把数据库建立在PostgreSQL上。同时还寻找了一些Ubuntu下安装Redmine的“经验谈”,接下来就开始了我痛苦的安装过程了。(如果你也想和我一样在Ubuntu 9.10下安装Redmine的话,请不要按照下面的步骤进行)
由于Ubuntu Document和Ubuntu Wiki并没有提供如何安装Redmine的指南,所以我按照Redmine.org的安装指南开始我的安装。
首先我下载了Redmine的安装包解压到~/目录,并生成了~/redmine-0.8.5,如果没有特别提到,接下来的一切操作都是在这个目录下进行的。
然后执行下面的命令安装Ruby和RubyGems。
sudo apt-get install ruby rubygems
接着我用下面的命令安装PostgreSQL。
sudo apt-get install postgresql
当PostgreSQL安装完成之后,系统会自动生成一个名叫postgres的数据库超级用户,而我们需要做的就是利用这个用户创建一个和它同等权限的自己的超级用户。
所以我键入下面的命令建立一个叫mrbear的用户。
sudo -u postgres createuser -P
Enter name of role to add: mrbear
Enter password for new role:
再次键入:
Shall the new role be a superuser? (y/n) y
同时,在PostgreSQL中每一个用户都应该有一个与用户名相同的数据库,所以我们必须手动建立这个数据库。
sudo -u postgres createdb mrbear
另外,我也许会想通过图形界面管理我的数据库,所以我安装了pgAdmin III。
sudo apt-get install pgadmin3
安装完毕后点选应用程序->系统工具->pgAdmin III就可以开始使用了。
接下来,我回到Redmine的配置。我登录到PostgreSQL为Redmine建立专用的数据库和用户名。
psql -U mrbear
psql (8.4.1)
Type "help" for help.
mrbear=#CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'mypassword' NOINHERIT VALID UNTIL 'infinity';
mrbear=#CREATE DATABASE redmine WITH ENCODING='utf8' OWNER=redmine;
注意:SQL语句必须在终端窗口的一行内输入完毕,如果需要换行,必须输入-#换行以连接下一行语句,否则SQL语句将不被执行。
最后按照Remine.org的安装指南修改我的config/database.yml就算完成了数据库的指向准备了。
完成数据库的准备之后,还需要安装Ruby的编译器rake。
sudo apt-get install rake
之后再安装libopenssl-ruby以备rake编译时使用。
sudo apt-get install libopenssl-ruby
到此为止一切都是顺利的,只留下最后一条编译并建立数据库的命令。
rake --trace db:migrate RAILS_ENV="production"
当我以为大功即将告成的时候,却不知从何处吃了一记重拳,导致我直接摔出场外。
Please install the postgresql adapter: gem install activerecord-postgresql-adapter (no such file to load — pg)
第一次看到这条错误时,我还是很冷静的,我知道Ruby on Rails默认没有绑定postgresql的驱动程序,所以我按照提示执行了
sudo gem install activerecord-postgresql-adapter
迎接我的却时gem根本不能找到所谓的activerecord-postgresql-adapter的错误。
上Google,Yahoo和Baidu搜索了一番,有人说可能需要把postgresql改成postgres,但是尝试的结果是错误依旧。
还有人说把gem库直接搞到本地,然后修改gem环境变量就安装成功,但是凭感觉就觉得很麻烦。
继续搜索,发现有不少人遇到和我同样的问题,rake报告需要activerecord-postgresql-adapter而gem告诉你根本就没有这个东西。
我甚至动用了我能使用的任何网络资源,语种涉及了英语,中文和日语,仅仅找到一条提示。
Ruby曾经使用postgres提供对PostgreSQL的支持,而现在postgres的开发已经停止,改用pg提供对PostgreSQL的访问。同时pg修复了postgres中出现的一些问题。
但是仅仅如此还不够解决我的问题,我尝试了用gem安装postgres和ps,但却都失败了。
甚至有人被这个问题折磨得不能忍受,被迫选择更换成MySQL的结局。