2016-07-04 4 views
0

私はPython 3.3とPostgreSQLカートリッジを備えたOpenshiftにPythonアプリケーションを持っています。 Pythonカートリッジは、Webサイトのテンプレートに基づいてDjango 1.8を実行しています。Openshift Pythonギアにノードモジュールをインストール

最近私はビルドを自動化するためにGulpを使い始めましたが、私のローカルマシンではうまく機能していましたが、Openshiftで使用するために何をすべきか分かりません。私はdjango-gulpがインストールされているので、runserverを使用したときに実行されますが、Openshiftサーバーにはgulpやプラグインがインストールされていないので、何もしません。しかし、私はそれらをサーバーにインストールする方法を知らない。

package.jsonを含むと何もしません。私はそれをテストして、ノードカートリッジを持っていればうまく動作しますが、私はPythonを持っています。

npmはサーバー上にあるので、SSHingを試してみてnpm installを手動で実行しましたが、許可が拒否されました。

答えて

0

これをしばらく解決しようとした結果、私はついに解決策を見つけました。これは少し畳み込まれていますが、動作します。

  1. 独自のノードとnpmをインストールします。 Openshiftに含まれるバージョンは、時代遅れであり、実際には機能しません。 SSHをあなたのサーバにインストールし、あなたの依存フォルダにローカルバージョンをインストールしてください。 cd $OPENSHIFT_HOMEDIR/app_root/dependencies; wget https://nodejs.org/dist/v6.3.0/node-v6.3.0-linux-x64.tar.xz; tar xf node-v6.3.0-linux-x64.tar.xz; rm node-v6.3.0-linux-x64.tar.xz開発版をインストールしてください。他のもののようにあなたのinodeを燃やすので、安定版をインストールしないでください。
  2. 新しいノードバージョンexport PATH="$OPENSHIFT_HOMEDIR/app_root/dependencies/node_modules/.bin/:$OPENSHIFT_HOMEDIR/app_root/dependencies/node/bin/:$PATH"を含めるようにPATHを変更します。環境変数は、サーバーから切断するたびにリセットされます。 rhc env setで永続的に変更することはできますが、これは導入前にのみ使用されるため、/.openshift/action_hooks/pre_buildに貼り付けることをおすすめします。
  3. NPM_CONFIG_USERCONFIG変数も変更する必要があります。 export NPM_CONFIG_USERCONFIG=$OPENSHIFT_HOMEDIR/app-root/build-dependencies/.npmrc。もう一度、私はpre_buildフックでこれを行うことをお勧めします。
  4. この時点で、アクセス拒否エラーを受け取らずにキャッシュを変更できます。 npm config set cache "$OPENSHIFT_HOMEDIR/app_root/dependencies/.npm
  5. 最後にnpm installを使用できるようになりました。必要なパッケージをインストールします。 --prefixフラグを使用してnode_modulesフォルダーにインストールします。
  6. しかし、gulpを使用するには、呼び出し元の場所にgulpモジュールをインストールする必要があります。したがって、npm install gulpプレフィックスフラグはありません。
  7. gulpに電話することができます。しかし、設定した依存関係フォルダにリンクするgulpfileを編集しない限り、gulpfileはモジュールを見つけられません。したがって、require('gulp-cssnano')の代わりに、require([OPENSHIFT_HOMEDIR]/app_root/dependencies/node_modules/gulp-cssnano)となります。私はOpenshiftのために別にgulpfileを保って、私の正気を維持しています。
  8. pre_buildに新しいgulpファイルでgulpを呼び出します。
関連する問題