簡體   English   中英

如何在RedHat OpenShift服務器上編譯node.js模塊畫布?

[英]How to compile node.js module canvas on RedHat OpenShift servers?

在RedHat OpenShift服務器上,無法編譯node.js模塊canvas,因為缺少用於Linux的cairo庫以及相關的必需庫。

This is how to make it compile:

export PATH=/sbin:$PATH:$OPENSHIFT_DATA_DIR/usr/local/bin
export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib:/opt/rh/nodejs010/root/usr/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib/pkgconfig
cd $OPENSHIFT_DATA_DIR
curl -L http://sourceforge.net/projects/libpng/files/libpng16/1.6.17/libpng-1.6.17.tar.gz/download -o libpng.tar.gz
curl -L http://www.ijg.org/files/jpegsrc.v9a.tar.gz -o jpegsrc.tar.gz
curl -L http://www.cairographics.org/releases/pixman-0.32.6.tar.gz -o pixman.tar.gz  
curl -L http://public.p-knowledge.co.jp/Savannah-nongnu-mirror//freetype/freetype-2.5.5.tar.gz -o freetype.tar.gz
curl -L http://www.cairographics.org/releases/cairo-1.14.2.tar.xz -o cairo.tar.xz  
curl -L http://ftp.gnome.org/pub/GNOME/sources/pango/1.35/pango-1.35.3.tar.xz -o pango.tar.xz
curl -L http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.1.tar.gz -o fontconfig.tar.gz
curl -L http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.37.tar.bz2 -o harfbuzz.tar.bz2
curl -L http://ftp.gnome.org/pub/GNOME/sources/glib/2.34/glib-2.34.3.tar.xz -o glib.tar.xz
curl -L http://ftp.gnome.org/pub/GNOME/sources/pango/1.35/pango-1.35.3.tar.xz -o pango.tar.xz
cd $OPENSHIFT_DATA_DIR
gunzip libpng.tar.gz
tar -xvf libpng.tar
cd libpng-1.6.17/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar -zxf jpegsrc.tar.gz && cd jpeg-9a/
./configure --disable-dependency-tracking --prefix=$OPENSHIFT_DATA_DIR/usr/local 
make
make install
cd $OPENSHIFT_DATA_DIR
tar -zxf pixman.tar.gz && cd pixman-0.32.6/  
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local  
make
make install
cd $OPENSHIFT_DATA_DIR
tar -zxf freetype.tar.gz && cd freetype-2.5.5/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local  
make
make install
cd $OPENSHIFT_DATA_DIR
tar --xz -xvf cairo.tar.xz && cd cairo-1.14.2/
./configure --disable-dependency-tracking --without-x --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar -xvf fontconfig.tar.gz && cd fontconfig-2.11.1/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
bunzip2 harfbuzz.tar.bz2
tar -xvf harfbuzz.tar && cd harfbuzz-0.9.37/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar --xz -xvf glib.tar.xz && cd glib-2.34.3/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
tar --xz -xvf pango.tar.xz && cd pango-1.35.3/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_REPO_DIR
scl enable nodejs010 v8314 'npm install canvas'   
rm -rf "${OPENSHIFT_NODEJS_DIR}/tmp/saved.node_modules"

要在node.js服務器中使用這些庫,您需要添加指向它們的自定義LD_LIBRARY_PATH條目:

在OpenShift git項目中添加目錄:.openshift / markers在此目錄中,創建一個名為:use_npm的空文件。

在package.json文件中添加以下條目:

  "scripts": {
    "start": "export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib:/opt/rh/nodejs010/root/usr/lib64:$LD_LIBRARY_PATH; supervisor server.js"
  }

這通常是可行的,但有時會發生npm更新活動,這些活動開始重建canvas模塊。

有時bcrypt模塊也不會構建。

解決方案是創建一個齒輪,使一切正常工作,然后使用$ OPENSHIFT_DATA_DIR / usr /的內容制作tar.gz文件,並將此文件傳輸到服務器,通過http://可以訪問該文件。

應該對node_modules / canvas,node_modules / bcrypt和其他易受攻擊的條目執行相同的操作。

然后,可以使用OpenShift應用程序掛鈎(內部版本等)在正確的位置下載和提取這些文件的內容。

另外,您可以在CentOS 6.6上編譯許多node_modules / xxxxx,然后將它們復制到運行RHEL 6.6的服務器上的正確位置(二進制兼容性,就像安裝rpm軟件包一樣)。

這樣就可以創建git倉庫和可下載的tar.gz文件,這些文件將允許自動啟動新的RedHat OpenShift齒輪。

當然,如果要進行一些系統升級,那么tar.gz文件的內容也必須升級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM