NEV_SDK開發環境部署手冊

根據項目開發需求,要在MEC服務器上部署以下內容:Nginx、Nginx push stream module、Jason CPP、Spawn-fcgi、libfcgi、Redis、Hiredis、Boost、SCTPlib、Asn1c. 記錄下部署過程和遇到的一些坑,以備後用。本文全部包源目錄爲/usr/src.html

1. 安裝Nginx依賴包node

安裝Nginx須要先安裝openssl、zlib、pcre這幾個依賴包。若未安裝參照以下步驟:python

(1)Openssl:Openssl用於SSL功能。linux

  下載openssl包:http://www.openssl.org/source/nginx

  • 解壓:# tar -zxvf openssl-1.0.2f.tar.gz
  • 配置:# cd /usr/src/openssl-1.0.2f
  •    # ./configure
  • 編譯:# make
  • 安裝:# make install

(2)zlib:zlib庫用於gzip模塊.git

  • 下載:http://www.zlib.net/
  • 解壓:# xz -d zlib-1.2.8.tar.xz   # tar -xvf zlib-1.2.8.tar
  • 配置:./configure
  • 編譯:# make
  • 安裝:# make install

(3)pcre:pcre庫用於HTTP rewrite模塊.github

  安裝pcre-8.38版本,prce2-10.20最新版本後,在後續編譯nginx時會出現找不到pcre.h文件的錯誤。redis

  • 下載:http://www.pcre.org/
  • 解壓:# tar -zxvf pcre-8.38
  • 配置:# cd /usr/src/pcre-8.38      # ./configure
  • 編譯:# make 
  • 安裝:# make install

2. 安裝Nginx及其訂閱發佈模塊:json

     因爲本項目開發須要訂閱發佈功能,須要NNginx的push stream 模塊支持,因此在創建Nginx時候要將這個模塊加進去一塊兒編譯。bootstrap

  nginx-push-stream-module使用http來實現鏈接管道。主要用於訂閱發佈模塊的即時消息的推送。

注:建議在安裝nginx時一塊兒配置push-stream-module.

(1)下載:

  a. 下載Nginx源碼包:http://nginx.org/

  b. 下載nginx-push-stream-module:

    https://github.com/wandenberg/nginx-push-stream-module/releases 

(2)解壓:

  # tar –zxvf nginx-1.9.9.tar.gz

  #   tar –zxvf nginx-push-stream-module-0.5.1.tar.gz

 

(3)配置:

  # cd /usr/src/nginx-1.9.9

 

  #  ./ configure --with-pcre=/usr/local/pcre8.38 --add-module=/usr/src/nginx-push-stream-module-0.5.1

(4)編譯:# make

(5)安裝:# make install

(6)測試:檢查服務是否安裝成功:正確應返回版本信息。

    # /usr/local/nginx/sbin/nginx –v

(7)配置:修改.conf文件。

  • 查看端口是否被佔用:nginx默認綁定80端口。

    # netstat –an |grep 80

   發現80端口已被佔用,須要修改下。

  • 修改綁定端口號:

    # cd /usr/local/nginx/conf

    # vi nginx.conf

  • 將server部分的端口號修改成:listen  8080

 (8) 測試配置:

  #/usr/src/nginx/sbin/nginx -c /usr/src/nginx-push-stream-module-0.5.1/misc/nginx.conf -t 

     若出現錯誤:[emerg] invaild event type "poll" in...../misc/nginx.conf:19 .......test failed時,將push-stream-module/misc目錄下的nginx.conf文件中的poll註釋掉,而後從新測試。

(9)啓動或重啓Nginx服務:

  # /usr/local/nginx/sbin/nginx             //啓動

  # /usr/local/nginx/sbin/nginx -s reload   //重啓

(10)打開瀏覽器,輸入nginx服務器的IP:8080,若返回以下"welcome to nginx!" 則表示安裝並運行成功.          

3. 安裝JSON CPP

     jsonCPP有兩個系列的版本:

  0.y.z:用於舊版本編譯器。

  1.y.z:支持 C++11。

  系統中gcc版本爲4.8.1,爲支持最新標準庫,此處安裝配置1.6.5版本。

(1)前提條件:

 a. 安裝Python:略。

 b. 安裝scons:

Scons是一個Python寫的自動化構建工具,相似於GNU make. 也可使用Cmake。

本次使用scons來編譯Json cpp。

  • 下載Scons:http://www.scons.org/
  • 解壓:# tar -zxvf scons-2.4.1.tar.gz
  • 設置環境變量:

  # export MYSCONS=/usr/local/scons-2.4.1/               //scons解壓目錄

  # export SCONS_LIB_DIR=/usr/local/scons-2.4.1/engine    //scons目錄下的engine目錄.

(2)下載json源碼包:

    https://github.com/open-source-parsers/jsoncpp/releases

 

 

(3)

解壓:

  # tar –zxvf  jasoncpp-1.6.5.tar.gz

(4)進入 jsoncpp解壓目錄,執行以下命令:  

  #  python $MYSCONS/script/scons platform=linux-gcc

(5)將在以下目錄中生成兩個文件:

  # /usr/local/jsoncpp-1.6.5/libs/linux-gcc-4.8.1

  libjson_linux-gcc-4.8,1_libmt.a 和libjson_linux-gcc-4.8.1_libmt.so複製到項目目錄中便可。

4. 安裝Spawn-fcgi:

Spawn-fcgi是lighttpd的一部分。

(1)下載lighttpd:http://www.lighttpd.net/download/

  • 解壓:# tar –zxvf lighttpd-1.4.39.tar.gz
  •  配置:

    # cd /usr/src/lighttpd-1.4.39

    # ./configure 

  • 編譯:# make
  • 安裝:# make install
  • 初始化腳本:

    # sed -e 's/FOO/lighttpd/g' doc/initscripts/rc.lighttpd.redhat > /etc/init.d/lighttpd

(2)安裝Spawn-fcgi:

    # cd /usr/src/spawn-fcgi-1.6.4/

   # ./configure

  • 編譯:# make
  • 安裝:# make install

    安裝在/usr/local/bin/spawn-fcgi目錄下。

(3)測試:# spawn-fcgi –v 

(4)複製spawn-fcgi 文件到/usr/local/nginx/sbin:

       # cp spawn-fcgi /usr/local/nginx/sbin/

5. Fastcgi:

(1)下載:http://www.fastcgi.com/drupal/node/5/fcgi.tar.gz

(2)解壓:tar -zxvf fcgi.tar.gz

(3)配置:# cd /usr/src/fcgi/

      # ./configure

(4)編譯:# make      (5) 安裝:# make install

報錯解決方法:在源碼目錄下/include/fcgio.h文件中加上#include <cstdio> ,再從新編譯。

(4)安裝: # make install

(5)寫一個測試代碼,而後編譯測試生成fcgi程序:

   # g++ -o test.cgi te.c -L /usr/local/lib/ -lfcgi

(6)啓動Spawn-fcgi: # spawn-fcgi  -a 127.0.0.1 -p 7000 -u www  -f 

(7)修改配置nginx.conf文件:

      添加以下內容:

location ~ \.cgi$
  {
        fastcgi_pass  127.0.0.1:7000;
        fastcgi_index index.cgi;
        fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
        include fastcgi_params;
    }

(8)重啓nginx服務:# /usr/local/nginx/sbin/nginx –s reload

6. 安裝libfcgi:

(1)下載:https://github.com/toshic/libfcgi

(2)解壓:# tar –zxvf libfcgi-2.4.0-8.3 

(3)配置:# cd /usr/src/libfcgi-2.4.0-8.3

      # ./configure

(4)編譯: # make

  編譯錯誤解決:在/include/fcgio.h文件中加上 #include <cstdio>

(5)從新配置編譯:   # ./configure        # make 

(5)安裝:# make install 

7. Redis:

(1)下載:http://download.redis.io/releases/redis-3.0.6.tar.gz

(2)解壓:# tar –zxvf redis-3.0.6.tar.gz

(3)編譯:# make      

       # make test

(4)安裝: # make install

(5)運行:

  # redis-server        或 src /redis-server            //啓動服務端

     # redis-cli    //啓動客戶端

(6)warning解決:啓動服務後可能會有幾個warning。

  • warning:overcommit_memory

  Overcommit_memory用於設置內存分配測量。位置/proc/sys/vm/overcommit_memory

   可選值:0、一、2 。

  0:檢查是否有足夠可用內存給應用進程使用。如有,則容許內存申請;若沒有,內存申請失敗,並返回給應用。

  1:容許分配全部物理內存,而無論當前內存狀態。

  3:容許分配超過全部物理內存和swap總和的內存。

  比較優化的內存分配策略應該設置爲 1(表示內核容許分配全部的物理內存,而無論當前的內存狀態如何。overcommit的策略經過vm.overcommit_memory設置. 

  解決方法: # echo 「vm.overcommit_memory=1」 > /etc/sysctl.conf

                    # reboot

  • warning:The TCP backlog setting of 511 cannot be enforced 

  解決方法:#echo 511 > /proc/sys/net/core/somaxconn

(7)重啓redis服務端。

(8)檢查是否啓動成功:

   # ps –ef |grep redis 

(9)修改配置文件(可選):# vi /usr/local/redis-3.0.6/redis.conf

  a. 將slavof  部分的masterip 、masterport修改成redis 服務端的IP地址和端口號。

  b. 修改redis後臺運行:默認daemonize 爲no,修改成daemonize yes

  c. 端口號:默認端口號爲6379.

8. Hiredis:

(1)下載:https://github.com/redis/hiredis/releases 

(2)解壓:# tar –zxvf hiredis-0.13.3.tar.gz

(3)編譯:# make

(4)安裝:# make install 

將生成的.so文件複製到/usr/local/lib和/usr/local/include目錄。

(5)使用:代碼中include <hiredis/hiredis.h>,在編譯時選項加上 –lhiredis

9. 安裝Boost:

(1)下載源碼包:http://www.boost.org/users/download/

(2)解壓:# tar –zxvf boost_1_60_0.tar.gz

(3)編譯bjam:

  • 運行bootstrp.sh腳本,生成bjam文件和b2文件。

    # cd /usr/local/boost_1_60_0/

    # ./bootstrap.sh

  • 運行bjam文件:運行b2腳本文件開始編譯。

        # ./b2 

(4)安裝:#./b2 install

(5)更新動態連接庫:# ldconfig

(6)使用:代碼中要include<boost>頭文件

10. 安裝SCTPlib庫:

(1)安裝依賴包:llibffi

  下載:https://www.sourceware.org/libffi/

  • 解壓:# tar –zxvf libffi-3.2.1.tar.gz
  • 配置:# cd /usr/src/libffi-3.2.1
  •         # ./configure
  • 編譯:# make
  • 安裝:# make install

(2)安裝依賴包:glib

  • 下載:http://ftp.acc.umu.se/pub/GNOME/sources/glib/
  • 解壓:# xz –d glib-2.47.4.tar.xz

          # tar –xvf glib-2.47.tar

  • 配置:

    # cd /glib-2.47.4/

    # ./ configure        或       # ./ configure  --prefix=/usr    

    //指定安裝目錄到/usr下,庫文件就會放在/usr/lib中,sctplib就能夠找到glib。

  • 若提示找不到libffi,解決方法:配置環境變量

  # export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

  • 從新配置:# ./configurre
  • 編譯: # make
  • 安裝:# make install

(3)下載:sctplib-1.0.15:  http://www.sctp.de/sctp-download.html

(4)解壓:# tar –zxvf stcplib-1.0.11

(5)配置:

    # cd  /usr/local/sctplib-1.0.11/

    # ./ configure

(6)出錯:出現錯誤找不到GLIB庫。

   配置glib環境變量:

  # export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig           //glib-2.0.pc的目錄

  # export LD_LIBRARY_PATH=/usr/local/lib                               //glib-2.0目錄

(7)使用pkg-config  --modversion glib-2.0 測試glib版本。

  從新配置:#./ configure

(8)編譯:# make

(9)安裝:# make install

11. Asn1c:

(1)下載:http://lionet.info/asn1c/download.html

(2)解壓:# tar –zxvf  asn1c-0.9.27.tar.gz

(3)配置,生成Makefile:

   # cd /usr/local/asn1c-0.9.27/

   # ./configure  

(4)編譯:# make

(5)安裝:# make install

(6)測試:# asn1c -v

相關文章
相關標籤/搜索