在Heroku上部署PhantomJS 2.5 beta。我怎么能看到失败的是什么?

时间:2017-02-10 22:01:35

标签: heroku phantomjs

我试图制作一个自定义buildpack来在Heroku上部署PhantomJS 2.5 beta版。 This is my buildpack基于运行版本2.1.1的Stomita's Phantomjs Buildpack并且运行正常。

这是我在构建过程中得到的结果:

remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> PhantomJS app detected
remote: -----> Fetching PhantomJS 2.5.0-beta binaries at https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.5.0-beta-linux-ubuntu-trusty-x86_64.tar.gz
remote:  !     Push rejected, failed to compile PhantomJS app.
remote:
remote:  !     Push failed
remote: Verifying deploy....
remote:
remote: !       Push rejected to rp-phantom.
remote:

如您所见,信息不多。二进制文件下载得很好,我检查了在curl命令中省略-s标志,但无法弄清楚它是什么失败。

这是我的编译文件:

#!/bin/sh

set -e

BUILD_DIR=$1
CACHE_DIR=$2

# config
VERSION="2.5.0-beta"

# Buildpack URL
ARCHIVE_NAME=phantomjs-${VERSION}-linux-ubuntu-trusty-x86_64
FILE_NAME=${ARCHIVE_NAME}.tar.gz
BUILDPACK_PHANTOMJS_PACKAGE=https://bitbucket.org/ariya/phantomjs/downloads/${FILE_NAME}

mkdir -p $CACHE_DIR
if ! [ -e $CACHE_DIR/$FILE_NAME ]; then
  echo "-----> Fetching PhantomJS ${VERSION} binaries at ${BUILDPACK_PHANTOMJS_PACKAGE}"
  curl  $BUILDPACK_PHANTOMJS_PACKAGE -L -s -O $CACHE_DIR/$FILE_NAME
fi

echo "-----> Extracting PhantomJS ${VERSION} binaries to ${BUILD_DIR}/vendor/phantomjs"
mkdir -p $CACHE_DIR/$ARCHIVE_NAME
mkdir -p $BUILD_DIR/vendor
tar -xvf $CACHE_DIR/$FILE_NAME -C $CACHE_DIR
mv $CACHE_DIR/$ARCHIVE_NAME $BUILD_DIR/vendor/phantomjs

echo "-----> exporting PATH and LIBRARY_PATH"
PROFILE_PATH="$BUILD_DIR/.profile.d/phantomjs.sh"
mkdir -p $(dirname $PROFILE_PATH)
echo 'export PATH="$PATH:$HOME/vendor/phantomjs/bin"' >> $PROFILE_PATH
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:vendor/phantomjs/lib"' >> $PROFILE_PATH

提前致谢!

1 个答案:

答案 0 :(得分:1)

我能够在Heroku上运行2.5.0 beta。以下是我自己post的答案:

最终,我能够弄明白!你必须要做几件事......

  1. 依赖关系:您必须使用Heroku Apt buildpack来安装缺少的依赖项。首先,您需要将buildpack添加到您的应用程序:

    heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt

    接下来,您将在项目根目录中创建一个名为Aptfile的文件。在这里,我们为PhantomJS 2.5.0 Beta添加了缺少的依赖项。 2.5.0引入了webp支持,所以我们需要它。 libhyphen0也是必需的,但我不确定它们是如何使用的。最后,我们使用gcc-5和最新的libstdc++6。内容应如下所示:

  2. webp
    libhyphen0
    https://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.1-8ubuntu1_amd64.deb
    https://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb
    
    1. PhantomJS:接下来我们抓住最新版本的PhantomJS。我创建了forkpopular个PhantomJS buildpack的https://en.wikipedia.org/wiki/Soundex并更新了它以用于2.5.0 beta版。 2.5.0 beta版本为trusty以及xenial构建,因此构建包将检测Heroku堆栈并使用适当的堆栈(尽管cedar-16堆栈在测试时仍处于测试阶段这个帖子)。因此,请将其添加到您的应用中:

      heroku buildpacks:add https://github.com/lookitsatravis/heroku-buildpack-phantomjs.git

    2. 部署:剩下的就是部署了!将Aptfile提交到您的仓库,确保已设置构建包,然后推送到Heroku。

    3. 进行了一些试验和错误,但最终我能够启动并运行。希望这有助于其他人,直到最终候选人被释放。

相关问题