2

我正在将我的 rails 应用程序部署到 Engine Yard。

到目前为止我所拥有的:1. 创建了 SSH,嘿 2. 将公钥安装到 Engine Yard 应用程序。3. ssh deploy@my.server.ip.address

我被安置在 home/deploy,这不是执行 git pull 的正确位置。

我需要以这种方式部署的原因是因为我的应用程序使用的是 nmatrix gem,需要使用 c++ 编译器手动安装。自动捆绑器在获取该 gem 时出错,并停止。

更新:我想我的问题应该是,如何将 nmatrix 安装到 EngineYard。这是我通过调用 gem install nmatrix 得到的错误消息:

Building native extensions.  This could take a while...
ERROR:  Error installing nmatrix:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby21 extconf.rb
checking for main() in -llapack... no
checking for main() in -lcblas... yes
checking for main() in -latlas... no
checking for clapack.h... no
checking for cblas.h... yes
checking for cblas.h... yes
checking for clapack_dgetrf() in cblas.h,clapack.h... no
checking for clapack_dgetri() in cblas.h,clapack.h... no
checking for dgesvd_() in clapack.h... no
checking for cblas_dgemm() in cblas.h... yes
using C++ standard... c++0x
g++ reports version... Hardened
creating nmatrix_config.h
creating Makefile

make "DESTDIR="
compiling nmatrix.cpp
In file included from nmatrix.cpp:331:0:
ruby_nmatrix.c: In function ‘VALUE nm_mset(int, VALUE*, VALUE)’:
ruby_nmatrix.c:1378:108: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘size_t’
ruby_nmatrix.c: In function ‘VALUE nm_xslice(int, VALUE*, void* (*)(const STORAGE*, SLICE*), void (*)(NMATRIX*), VALUE)’:
ruby_nmatrix.c:1556:91: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘size_t’
ruby_nmatrix.c: In function ‘SLICE* get_slice(size_t, int, VALUE*, size_t*)’:
ruby_nmatrix.c:1903:104: warning: format ‘%u’ expects type ‘unsigned int’, but argument 3 has type ‘size_t’
ruby_nmatrix.c:1903:104: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘size_t’
compiling ruby_constants.cpp
compiling data/data.cpp
compiling util/io.cpp
compiling math.cpp
In file included from math.cpp:140:0:
math/rot.h: In function ‘void nm::math::rot(int, DType*, int, DType*, int, CSDType, CSDType) [with DType = nm::Complex<float>, CSDType = float]’:
math/rot.h:123:40: error: ‘cblas_csrot’ was not declared in this scope
math/rot.h: In function ‘void nm::math::rot(int, DType*, int, DType*, int, CSDType, CSDType) [with DType = nm::Complex<double>, CSDType = double]’:
math/rot.h:128:40: error: ‘cblas_zdrot’ was not declared in this scope
In file included from math.cpp:141:0:
math/rotg.h: In function ‘void nm::math::rotg(DType*, DType*, DType*, DType*) [with DType = nm::Complex<float>]’:
math/rotg.h:99:125: error: ‘cblas_crotg’ was not declared in this scope
math/rotg.h: In function ‘void nm::math::rotg(DType*, DType*, DType*, DType*) [with DType = nm::Complex<double>]’:
math/rotg.h:104:125: error: ‘cblas_zrotg’ was not declared in this scope
make: *** [math.o] Error 1


Gem files will remain installed in /home/deploy/.gem/ruby/2.1.0/gems/nmatrix-0.0.9 for inspection.
Results logged to /home/deploy/.gem/ruby/2.1.0/gems/nmatrix-0.0.9/ext/nmatrix/gem_make.out

安装 nmatrix 的先决条件之一是 gcc > v4.7,但 EngineYard 只有 v4.5.4。有人知道如何升级 gcc 吗?我想我正在运行Gentoo。

4

1 回答 1

3

这个问题实际上应该包括想要 git pull 的内容。

当您 ssh 进入时,您将进入 /home/deploy 这是您的主目录。

您的应用程序的 Git 副本位于/data/APPNAME/shared/cache-copy/App Master 上

您可以在一个实例上拥有多个应用程序,并且每个应用程序都可以有不同的部署密钥,因此您可以使用 GIT_SSH 包装器

GIT_SSH=/data/APPNAME/shared/config/pulse-ssh-wrapper git pull

(在所有上述命令中,请记住将 APPNAME 替换为应用程序使用的名称)

如果您想找到捆绑 gem 的实际位置,您可以查看

/data/APPNAME/shared/bundled_gems/ruby/2.0.0/gems(版本将取决于 Ruby ABI)

如果您的 Gemfile 使用:git记住只有一个部署密钥可用于应用程序克隆和捆绑阶段,您不能为每个 gem 选择不同的密钥。

安装 nmatrix gem 最有可能的问题是尚未安装 ATLAS 库,这些库将与系统的包管理器一起安装(Gentoo 的 Portage 和 Ubuntu 的 Apt-get)。您可以通过 UI 上的“Edit Unix Packages”添加它们,只需选择 sci-libs/blas-atlas 和 sci-libs/lapack-atlas。目前这将失败,因为 EC2 实例是 Xeon 处理器,而库还没有建立在这些之上。

您可以使用“cat /proc/cpuinfo”查看 Linux 实例上的 CPU 类型,并会看到类似

model name  :Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz
于 2014-05-27T18:55:52.443 回答