我在Openshift中有一个Python应用程序,包含Python 3.3和PostgreSQL盒式磁带。 Python盒式磁带运行Django 1.8,基于网站上的模板。
最近,我开始使用Gulp自动化我的构建,虽然它在我的本地机器上工作得很好,但我无法弄清楚如何在Openshift中使用它。我安装了django-gulp所以只要我使用runserver
它就会运行,但是Openshift服务器显然没有安装gulp或任何插件,因此不会做任何事情。不过,我不知道如何在服务器上安装它们。
包含package.json
不会做任何事情。我测试了它,如果我使用节点盒,它可以正常工作,但我有一个Python。
由于npm在服务器上,我尝试了SSH并手动运行npm install
,但它引发了一个拒绝权限错误。
答案 0 :(得分:0)
所以,在尝试了一段时间之后,我终于想出了一个解决方案。这有点令人费解,但确实有效:
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,而不是别的。export PATH="$OPENSHIFT_HOMEDIR/app_root/dependencies/node_modules/.bin/:$OPENSHIFT_HOMEDIR/app_root/dependencies/node/bin/:$PATH"
每当您断开与服务器的连接时,环境变量都会重置。您可以使用rhc env set
永久更改它们,但由于这仅在部署之前使用,因此我建议您将其添加到/.openshift/action_hooks/pre_build
。NPM_CONFIG_USERCONFIG
变量。 export NPM_CONFIG_USERCONFIG=$OPENSHIFT_HOMEDIR/app-root/build-dependencies/.npmrc
。我再次建议在pre_build hook中执行此操作。npm config set cache "$OPENSHIFT_HOMEDIR/app_root/dependencies/.npm
npm install
了!安装所需的软件包。使用--prefix
标志安装到node_modules
文件夹。npm install gulp
没有前缀标记。gulp
了!但是,除非编辑gulpfile链接到已设置的依赖项文件夹,否则gulpfile将无法找到模块。因此,require('gulp-cssnano')
取代require([OPENSHIFT_HOMEDIR]/app_root/dependencies/node_modules/gulp-cssnano)
,而不是from rest_framework.serializers import ModelSerializer
class UserSerializer(ModelSerializer):
class Meta:
model = User
def create(self, validated_data):
user = User(**validated_data)
# Hash the user's password.
user.set_password(validated_data['password'])
user.save()
return user
。我为Openshift保留了一个单独的gulp文件以保持我的理智。