linux(Centos)上memcacheq成功安裝及使用

來源:互聯網
上載者:User

標籤:ruby   分布式   centos   memcacheq   libevent   

一:安裝memcached

1.下載memcached包
    :http://www.memcached.org (最新包就在首頁,點擊下載就OK)
    解壓包:# tar -zxvf memcached-1.4.13.tar.gz (根據自身的情況解壓到目錄)
    進入目錄:# cd memcached-1.4.13

2.安裝libevent    
    檢查一下有沒有安裝libevent: ls -al /usr/lib |grep libevent
    如果沒有就安裝libevent ,:http://www.libevent.org (首頁 Download–Stable releases)
    解壓:# tar -zxvf libevent-***-.tar.gz
          #cd libevent-***-
          #./configure --prefix=/usr
          #make && make install
    安裝完檢測下  ls -al /usr/lib |grep libevent
    lrwxrwxrwx   1 root root        21 02-06 20:26 libevent-1.4.so.2 -> libevent-1.4.so.2.1.3
    .................................
    -rw-r--r--   1 root root     11838 04-13 14:03 libevent_pthreads.a    
    -rwxr-xr-x   1 root root       996 04-13 14:03 libevent_pthreads.la
    lrwxrwxrwx   1 root root        30 04-13 14:03 libevent_pthreads.so -> libevent_pthreads-2.0.so.5.1.6
    lrwxrwxrwx   1 root root        21 04-13 14:03 libevent.so -> libevent-2.0.so.5.1.6
    
3.安裝memcached
    預先安裝:#./configure --prefix=/usr/local/memcached --with-libevent=/usr
        注意:在沒有安裝libevent的情況下,會報錯( If it‘s already installed, specify its path using --with-libevent=/dir/);
    編譯並且安裝:# make && make install
    OK安裝成功.
    
    啟動memcached:
            # /usr/local/memcached/bin/memcached -l 192.168.1.144 -d -p 11211 -u nobody -m 1024
            說明:上面的命令中-d表示用 daemon 的方式啟動 memcached,-l和-p組合表示監聽在 192.168.1.144 的 11212 連接埠上(如果不用-p指定連接埠號碼,則memcached將運行在11211連接埠    上),-u表示運行使用者為 nobody,-m表示為其分配1024MB 的記憶體。
    
    串連 memcached: # telnet 192.168.1.144 11211
    到這裡 memcached就已經安裝好了。

增加到開機啟動
    # vi /etc/rc.local
        增加:
            /usr/local/memcached/bin/memcached -l 192.168.1.144 -d -p 11211 -u nobody -m 1024

二:安裝memcacheq
1.下載memcacheq包
    :http://code.google.com/p/memcacheq/downloads/list
    解壓包:# tar -zxvf memcacheq.0.2.tar.gz (根據自身的情況解壓到目錄)
    進入目錄:# cd memcacheq-0.2.0
    
2.安裝 BerkeleyDB
    :http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html

請求:wget wget http://download.oracle.com/berkeley-db/db-5.3.15.tar.gz  (成功)


    解壓包:# tar -zxvf db-5.3.15.tar.gz (根據自身的情況解壓到目錄)
    進入目錄:# cd db-5.3.15
              # cd build_unix
              #../dist/configure --prefix=/usr/local/BerkeleyDB.5.3
              # make && make install
              #vi /etc/ld.so.conf
                增加:
                /usr/local/lib
                /usr/local/BerkeleyDB.5.3/lib
              #vi /etc/profile
                增加
                export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/BerkeleyDB.5.3/lib

3.安裝memcacheq (註: 下文中的5.3是berkeleyDB的版本  請根據實際情況操作)
    預先安裝:./configure --prefix=/usr/local/memcacheq --enable-threads --with-libevent=/usr/local/libevent
        注意:在沒有安裝BerkeleyDB的情況下,會報錯( configure: error: cannot find libdb.so in /usr/local/BerkeleyDB.5.3/lib);


我的提示configure: error: cannot find libdb.so in /usr/local/BerkeleyDB.5.3/lib報錯,我的解決方案:
    裝berkeley-db
wget http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz
tar zxf db-4.7.25.tar.gz
cd db-4.7.25/build_unix/
../dist/configure
make
make install




#編譯完成,將Berkeley Db運行庫的路徑添加到系統配置裡面
echo "/usr/local/BerkeleyDB.4.7/lib/" >> /etc/ld.so.conf
ldconfig




    測試:/usr/local/memcacheq/bin/memcachq -h
            運行報:
            memcacheq: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
        解決方案:ln -s /usr/local/BerkeleyDB.5.3/lib/libdb-5.3.so /usr/lib/libdb-5.3.so


     串連:/usr/local/memcacheq/bin/memcacheq  -d -r -uroot -p12002 -H /var/mcq/data -N -R -v -L 1024 -B 1024 > /var/mcq/logs/mq_error.log 2>&1


其中過程遇到了很多問題,例如動態庫位置,環境變數


inux上啟動Memcache報錯:

Shell代碼  
  1. [[email protected] memcached]# ./bin/memcached -d -m 2048 -p 11211 -u root  
  2. ./bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory  

原因一般有兩個, 一個是作業系統裡確實沒有包含該共用庫(lib*.so.*檔案)或者共用庫版本不對, 遇到這種情況那就去網上下載並安裝上即可.

另外一個原因就是已經安裝了該共用庫, 但執行需要調用該共用庫的程式的時候, 程式按照預設共用庫路徑找不到該共用庫檔案.

 

因為我已經安裝了libevent,所以應該是程式按照預設共用路徑庫去找,但是沒有找到導致的。

 

首先使用find命令找到libevent-1.4.so.2檔案在哪兒

Shell代碼  
  1. [[email protected] memcached]# find /usr -name libevent-1.4.so.2  
  2. /usr/libevent/lib/libevent-1.4.so.2 

根據debug日誌可以看到,程式只會去/lib 和/usr/lib下去尋找需要的共用連結庫。

而我的libevent是安裝在/usr/libevent/lib/下,所以memcache啟動的時候並不知道該去這下面找,所以會報錯

 

所以安裝共用庫後要注意共用庫路徑設定問題, 如下:

1) 如果共用庫檔案安裝到了/lib或/usr/lib目錄下, 那麼需執行一下ldconfig命令

         ldconfig命令的用途, 主要是在預設搜尋目錄(/lib和/usr/lib)以及動態庫設定檔/etc/ld.so.conf內所列的目錄下, 搜尋出可共用的動態連結程式庫(格式如lib*.so*), 進而建立出動態裝入程式(ld.so)所需的串連和快取檔案. 快取檔案預設為/etc/ld.so.cache, 此檔案儲存已排好序的動態連結程式庫名字列表. 

 

2) 如果共用庫檔案安裝到了/usr/local/lib(很多開源的共用庫都會安裝到該目錄下)或其它"非/lib或/usr/lib"目錄下, 那麼在執行ldconfig命令前, 還要把新共用庫目錄加入到共用庫設定檔/etc/ld.so.conf中, 如下:

Shell代碼  
  1. [[email protected] memcached]# cat /etc/ld.so.conf  
  2. include ld.so.conf.d/*.conf  

如上所示:/etc/ld.so.conf設定檔中內容只有一行,

ld.so.conf.d/*.conf的意思就是包含ld.so.conf.d/目錄下以.conf為尾碼的檔案

所以我們可以在/etc/ld.so.conf.d目錄下建立一個libevent.conf的設定檔,然後把libevent安裝路徑配置好

我的libevent內容如下:

Shell代碼  
  1. [[email protected] ld.so.conf.d]# cat libevent.conf  
  2. /usr/libevent/lib  

配置完後執行以下ldconfig命令

Shell代碼  
  1. [[email protected] ~]#ldconfig   

3) 如果共用庫檔案安裝到了其它"非/lib或/usr/lib" 目錄下,  但是又不想在/etc/ld.so.conf中加路徑(或者是沒有許可權加路徑). 那可以export一個全域變數LD_LIBRARY_PATH, 然後運行程式的時候就會去這個目錄中找共用庫.

     LD_LIBRARY_PATH的意思是告訴loader在哪些目錄中可以找到共用庫. 可以設定多個搜尋目錄, 這些目錄之間用冒號分隔開. 比如安裝了一個mysql到/usr/local/mysql目錄下, 其中有一大堆庫檔案在/usr/local/mysql/lib下面, 則可以在.bashrc或.bash_profile或shell裡加入以下語句即可:

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

一般來講這隻是一種臨時的解決方案, 在沒有許可權或臨時需要的時候使用.


啟動

/usr/local/memcacheq/bin/memcacheq  -d -r -uroot -p12002 -H /var/mcq/data -N -R -v -L 1024 -B 1024 > /var/mcq/logs/mq_error.log 2>&1




附帶介紹ruby相關的安裝:
   Starling是一個支援MemCache協議的輕量級持久化伺服器。Starling是讓建立網路訪問隊列或者多個隊列異常簡單,也就是說多點和多台機器間的非同步背景工作處理序。它是著名微部落格網站Twitter開發用來處理大量的隊列訊息,以及保持服務的響應。Starling已經在生產環境中使用,不僅是Twitter在使用,FiveRuns同樣在使用。FiveRuns甚至還根據自己的應用做了改進 ,他們認為網站速度快了很多.
   這是一個支援memcache協議的輕量級持久化伺服器,因此使用php/perl/ruby/java等多種用戶端都沒問題,可以將較慢的處理邏輯通過訊息佇列放在幕後處理,同時也支援多點分散式處理。
   由於starling是目前twitter在生產環境中啟動並執行,經過實踐檢驗過,穩定性應該不成問題。



安裝:
   1.安裝linux下的開發套件,最好使用red hat的添加刪除程式安裝.
 (1)在可視化視窗下載開啟"添加刪除程式",找到"開發->開發工具"打鉤,更新.插入 對應的linux安裝盤.
   2.安裝ruby和ruby gem
 (1)安裝錢的準備
 檢查系統是否已經安裝了 ruby,
 #rpm -qa | egrep ‘(ruby)|(irb)‘
 如果已安裝,而且不是你所要的版本,則需要先卸載她,如,
 #rpm -e ruby-docs-1.8.1-7.EL4.2 \
 ruby-1.8.1-7.EL4.2 \
 irb-1.8.1-7.EL4.2 \
 ruby-libs-1.8.1-7.EL4.2 \
 ruby-mode-1.8.1-7.EL4.2 \
 ruby-tcltk-1.8.1-7.EL4.2 \
 ruby-devel-1.8.1-7.EL4.2

 (2)安裝 Ruby
 假設 Ruby 安裝到 /usr/local/ruby
 #mkdir /usr/local/ruby
 #tar -zxvf ruby-1.8.4.tar.gz
 #cd ruby-1.8.4
 #./configure --prefix=/usr/local/ruby
 #make
 #make install


 (3)設定路徑
 #vi /etc/profile
 在該檔案中加入,
 RUBY_HOME=/usr/local/ruby
 PATH=$PATH:$RUBY_HOME/bin
 export RUBY_HOME PATH

 (4)檢查是否安裝成功
 重新登入,
 #ruby -v
 如果能顯示 ruby 的版本資訊(ruby 1.8.4 (2005-12-24) [i686-linux]),則說明已安裝成功。

 (5)安裝 Ruby Gems
 #tar -zxvf rubygems-0.9.0.tgz
 #cd rubygems-0.9.0
 #ruby setup.rb

我是用成功的方法是:yum install rubygems

 (6)檢查是否安裝成功
 #gem -v
 如果能顯示 gem 的版本資訊(0.9.0),則說明已安裝成功。


本文參考來源: http://www.cnblogs.com/sunzy/archive/2012/04/13/2446234.html

http://blog.csdn.net/li_yang98/article/details/6208223等


linux(Centos)上memcacheq成功安裝及使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.