大鳥的學習樂園
          路漫漫其修遠兮,吾將上下而求索
          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 大鳥 閱讀(698) 評論(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只是提高了資源的利用率
            回復  更多評論
            
          主站蜘蛛池模板: 颍上县| 岳普湖县| 利辛县| 和政县| 龙岩市| 施秉县| 大方县| 静安区| 乌拉特前旗| 中阳县| 沅江市| 鲜城| 紫金县| 社会| 和顺县| 永康市| 将乐县| 云安县| 文昌市| 万州区| 精河县| 奇台县| 色达县| 雷山县| 雷州市| 盐源县| 砀山县| 四平市| 定西市| 石渠县| 铅山县| 沧州市| 天祝| 楚雄市| 嵊泗县| 韶山市| 包头市| 泉州市| 鲁山县| 通渭县| 新巴尔虎右旗|