大鸟的学习乐园
路漫漫其修远兮,吾将上下而求索
posts - 26,comments - 27,trackbacks - 0

CentOS下安装Redmine的过程是一个痛苦的过程,其间遇到了很多问题,借助强大的网络才顺利完成了安装工作,在此记录一下安装的细节以备查阅。

环境信息:

  1. CentOS 5
  2. Ruby 1.8.7
  3. RubyGems 1.3.6
  4. Ruby on Rails 2.3.5
  5. Redmine 0.9.3
  6. Postgresql 8.4.2

 

一,安装Ruby1.8.7和Ruby on Rails2.3.5

1,使用CentOS的安装工具安装ruby:

yum install -y ruby
yum install -y ruby-devel ruby-docs ruby-ri ruby-irb ruby-rdoc

完成后检查Ruby版本:

ruby -v

发现版本是1.8.5,而不是所需要的1.8.7。只好下载源代码编译安装,下载解压

运行 [root@collaborative ruby-1.8.7-p248]# ./configure

报如下的错误:
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
checking target system type… i686-pc-linux-gnu
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.

这个错误是由于系统没有安装 gcc 的原因,运行如下命令安装gcc编译器:

yum install -y gcc

gcc编译器安装完成后再次运行配置,编译安装

[root@collaborative ruby-1.8.7-p248]# ./configure
[root@collaborative ruby-1.8.7-p248]# make&make install

ruby -v 再次检查ruby的版本

2,安装RubyGems1.3.6

下载RubyGems安装程序,并解压

运行 [root@collaborative rubygems-1.3.6]# ./setup.rb 安装

3,安装Ruby on Rails 2.3.5

通过RubyGems来安装Rails,运行命令:

gem install rails

 

二,安装数据库Postgresql 8.4.2

1,安装数据库系统

从官方网下载安装文件postgresql-8.4.2-1-linux.bin

修改文件为可执行:chmod +x postgresql-8.4.2-1-linux.bin

[root@collaborative u01]# ./postgresql-8.4.2-1-linux.bin 启动安装界面,提供安装目录和管理员密码,根据安装界面完成安装。

Postgresql数据库安装完成后, 安装Postgresql的Ruby插件:gem install postgres-pr

2,创建Redmine数据库和用户

psql -U postgres postgres
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD ‘aronezhang’ NOINHERIT VALID UNTIL ‘infinity’;
CREATE DATABASE redmine WITH ENCODING=’UTF8′ OWNER=redmine;

3,配置Redmine使用Postgresql数据库

下载Redmine0.9.3安装程序,解压到redmine-0.9.3目录,cd到此目录

拷贝config/database.yml.example 文件为 config/database.yml,配置production段的内容为:
production:
adapter: postgresql
database: redmine
host: localhost
username: postgres
password: “postgres”
encoding: utf8

4,运行redmine脚本

[root@collaborative redmine-0.9.3]# rake config/initializers/session_store.rb RAILS_ENV=”production”
[root@collaborative redmine-0.9.3]# rake generate_session_store

5,迁移数据库和数据

将数据库对象创建到Postgresql中

[root@collaborative redmine-0.9.3]# rake db:migrate RAILS_ENV=”production”

导入默认的配置信息

[root@collaborative redmine-0.9.3]# rake redmine:load_default_data RAILS_ENV=”production”

 

三,启动Redmine

运行命令启动Redmine

[root@collaborative redmine-0.9.3]# ruby script/server -e production

1,错误#1

启动报错,如下信息:

/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:777:in `report_activate_error’: Could not find RubyGem rack (~> 1.0.1) (Gem::LoadError)

看样子是rake的版本不够,Rails2.3.5中的rake版本是1.0.1的,重新安装Rails来升级rack

[root@collaborative ~]# gem install rails

2,错误#2

安装rails又报出如下的错误:

/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require’: no such file to load — zlib (LoadError)

是zlib库没有安装

解决方案:

yum install zlib-devel
进入目录/u01/ruby-1.8.7-p248/ext/zlib
运行 ruby extconf.rb
运行 make && make install

3,错误#3

再次启动Redmine,又报出如下错误:

./script/../config/../vendor/rails/railties/lib/initializer.rb:271:in `require_frameworks’: no such file to load — openssl (RuntimeError)

看来又缺少openssl库

解决方案:

从网上找到了解决方案http://netfork.javaeye.com/blog/432928

http://www.openssl.org/ 上下载:openssl-0.9.8m.tar.gz

tar -xvf openssl-0.9.8m.tar.gz 解压后,

执行make && make install

回到ruby源文件文件夹的/ext/openssl文件夹下,执行以下命令:

ruby extconf.rb –with-openssl-include=/usr/local/ssl/include/ –with-openssl-lib=/usr/local/ssl/lib

成功!!!

 

再次启动Redmine,没有错误信息,通过浏览器访问Redmine系统:
http://localhost:3000

使用admin/admin登录系统进行配置

posted on 2011-03-05 09:28 大鸟 阅读(680) 评论(2)  编辑  收藏 所属分类: linux

FeedBack:
# re: CentOS5下安装Redmine0.9.3
2011-03-05 14:41 | 大鸟
../depcomp: line 571: exec: g++: not found
make[1]: *** [my_new.o] 错误 127
make[1]: Leaving directory `/home/justme/software/mysql-5.1.30/mysys'
make: *** [all-recursive] 错误 1



解决 :


下载 安装 gcc-c++-4.1.2-33.i386.rpm(yum intall gcc-c++)   回复  更多评论
  
# re: CentOS5下安装Redmine0.9.3
2011-03-05 15:41 | 大鸟
java中的io与nio主要区别在于阻塞上
io采用的是阻塞
nio可自定义
阻塞与非阻塞到底有什么不同?其底层是怎么实现的呢?
从内核的角度来理解,就是进程的阻塞 运行状态的切换
阻塞实际上是进程在等待资源,而资源没有就绪(如网卡数据没到来),那么进程就进入阻塞状态。
这个进程什么时候再投入运行呢 ---- 等网卡数据到来时即可继续运行了

阻塞IO的缺点是占用了一个进程,却让这个进程在阻塞队列中睡大觉
好比我请了一个工人干活却因为水泥没到,只好让工人傻等着,还得管吃管住,白白浪费资源

阻塞式IO数量比较少的时候问题不明显,并发稍微大一些系统就吃不消了,如有1000个进程都在阻塞,那么你的机器估计什么都干不了了,资源全浪费了
那位大哥问了,浪费的是什么资源?
是这样的,系统能够创建的进程是有上限的 最大几千个吧
如果有1000个处在阻塞中是不是一种浪费呢
另外就是进程调度,这么多的阻塞进程参与进程调度,会浪费一些时间

======================================

非阻塞进程是怎么工作的呢?
非阻塞进程去读取网卡数据,如果数据没来 则立即返回而不是在那儿傻等
返回后进程可以继续干别的事情,等网卡的数据来了会主动通知进程的
这样就使进程化被动为主动了

非阻塞IO的威力在于作为Server端,接收客户端高并发请求时
只需要启动一个进程即可处理成千上万的客户端请求,充分利用了资源

======================================

网上很多人都说nio提高性能,我个人不太认同
nio只是数据读写的方式与以往不同,数据的传输速度没有任何变化,处理速度也没有变化
如有一个网络数据包在12:00到达网卡,那么它不会因为采用了IO或NIO而改变到达时间
这个数据包处理需要20ms,同样它不会因为采用了IO或NIO而缩短处理时间

NIO只是提高了资源的利用率
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: