大鳥的學習樂園
          路漫漫其修遠兮,吾將上下而求索
          posts - 26,comments - 27,trackbacks - 0

          CentOS下安裝Redmine的過程是一個痛苦的過程,其間遇到了很多問題,借助強大的網(wǎng)絡(luò)才順利完成了安裝工作,在此記錄一下安裝的細節(jié)以備查閱。

          環(huán)境信息:

          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

          發(fā)現(xiàn)版本是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.

          這個錯誤是由于系統(tǒng)沒有安裝 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

           

          二,安裝數(shù)據(jù)庫Postgresql 8.4.2

          1,安裝數(shù)據(jù)庫系統(tǒng)

          從官方網(wǎng)下載安裝文件postgresql-8.4.2-1-linux.bin

          修改文件為可執(zhí)行:chmod +x postgresql-8.4.2-1-linux.bin

          [root@collaborative u01]# ./postgresql-8.4.2-1-linux.bin 啟動安裝界面,提供安裝目錄和管理員密碼,根據(jù)安裝界面完成安裝。

          Postgresql數(shù)據(jù)庫安裝完成后, 安裝Postgresql的Ruby插件:gem install postgres-pr

          2,創(chuàng)建Redmine數(shù)據(jù)庫和用戶

          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數(shù)據(jù)庫

          下載Redmine0.9.3安裝程序,解壓到redmine-0.9.3目錄,cd到此目錄

          拷貝config/database.yml.example 文件為 config/database.yml,配置production段的內(nèi)容為:
          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,遷移數(shù)據(jù)庫和數(shù)據(jù)

          將數(shù)據(jù)庫對象創(chuàng)建到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庫

          解決方案:

          從網(wǎng)上找到了解決方案http://netfork.javaeye.com/blog/432928

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

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

          執(zhí)行make && make install

          回到ruby源文件文件夾的/ext/openssl文件夾下,執(zhí)行以下命令:

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

          成功!!!

           

          再次啟動Redmine,沒有錯誤信息,通過瀏覽器訪問Redmine系統(tǒng):
          http://localhost:3000

          使用admin/admin登錄系統(tǒng)進行配置

          posted on 2011-03-05 09:28 大鳥 閱讀(697) 評論(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主要區(qū)別在于阻塞上
          io采用的是阻塞
          nio可自定義
          阻塞與非阻塞到底有什么不同?其底層是怎么實現(xiàn)的呢?
          從內(nèi)核的角度來理解,就是進程的阻塞 運行狀態(tài)的切換
          阻塞實際上是進程在等待資源,而資源沒有就緒(如網(wǎng)卡數(shù)據(jù)沒到來),那么進程就進入阻塞狀態(tài)。
          這個進程什么時候再投入運行呢 ---- 等網(wǎng)卡數(shù)據(jù)到來時即可繼續(xù)運行了

          阻塞IO的缺點是占用了一個進程,卻讓這個進程在阻塞隊列中睡大覺
          好比我請了一個工人干活卻因為水泥沒到,只好讓工人傻等著,還得管吃管住,白白浪費資源

          阻塞式IO數(shù)量比較少的時候問題不明顯,并發(fā)稍微大一些系統(tǒng)就吃不消了,如有1000個進程都在阻塞,那么你的機器估計什么都干不了了,資源全浪費了
          那位大哥問了,浪費的是什么資源?
          是這樣的,系統(tǒng)能夠創(chuàng)建的進程是有上限的 最大幾千個吧
          如果有1000個處在阻塞中是不是一種浪費呢
          另外就是進程調(diào)度,這么多的阻塞進程參與進程調(diào)度,會浪費一些時間

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

          非阻塞進程是怎么工作的呢?
          非阻塞進程去讀取網(wǎng)卡數(shù)據(jù),如果數(shù)據(jù)沒來 則立即返回而不是在那兒傻等
          返回后進程可以繼續(xù)干別的事情,等網(wǎng)卡的數(shù)據(jù)來了會主動通知進程的
          這樣就使進程化被動為主動了

          非阻塞IO的威力在于作為Server端,接收客戶端高并發(fā)請求時
          只需要啟動一個進程即可處理成千上萬的客戶端請求,充分利用了資源

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

          網(wǎng)上很多人都說nio提高性能,我個人不太認同
          nio只是數(shù)據(jù)讀寫的方式與以往不同,數(shù)據(jù)的傳輸速度沒有任何變化,處理速度也沒有變化
          如有一個網(wǎng)絡(luò)數(shù)據(jù)包在12:00到達網(wǎng)卡,那么它不會因為采用了IO或NIO而改變到達時間
          這個數(shù)據(jù)包處理需要20ms,同樣它不會因為采用了IO或NIO而縮短處理時間

          NIO只是提高了資源的利用率
            回復  更多評論
            
          主站蜘蛛池模板: 八宿县| 嫩江县| 通化市| 安乡县| 唐河县| 淅川县| 宜良县| 新巴尔虎左旗| 湘潭市| 凤冈县| 临潭县| 肃宁县| 突泉县| 江都市| 方正县| 门源| 浪卡子县| 宣威市| 遂昌县| 刚察县| 荆门市| 怀仁县| 台北市| 武汉市| 尉氏县| 泽州县| 澄迈县| 昌黎县| 桦南县| 海口市| 阿勒泰市| 齐河县| 祁连县| 晋江市| 茶陵县| 嘉黎县| 沧源| 东港市| 溧水县| 栖霞市| 滨海县|