繁体   English   中英

部署Django / React应用程序heroku

[英]Deploy Django/React application heroku

我已经在heroku上部署了django app ,并且一切都很好,没有错误等。我在前端使用react ,并且我想进行npm installgulp build这样我可以正确地配置我的应用。

我无法运行heroku run npm install ,我所拥有的只是bash: npm: command not found ,我想这还可以,因为当他在服务器上构建应用程序时我需要以某种方式触发它,所以我已经修改了package.json是这样的:

{
  "name": "Test app",
  "version": "1.0.0",
  "description": "Testing",
  "main": "bundle.js",
  "scripts": {
    "postinstall": "npm install"
  },
  "dependencies": {
    "bootstrap": "^3.3.7",
    "babel-preset-es2015": "^6.1.2",
    "babel-preset-react": "^6.1.2",
    "babelify": "^7.2.0",
    "browser-sync": "^2.10.0",
    "browserify": "^12.0.1",
    "browserify-shim": "^3.8.11",
    "classnames": "^2.2.0",
    "core-util-is": "^1.0.1",
    "del": "^2.1.0",
    "flux": "^2.1.1",
    "gulp-autoprefixer": "^3.1.0",
    "gulp-bless": "^3.0.1",
    "gulp-connect": "^2.2.0",
    "gulp-html-replace": "^1.5.4",
    "gulp-if": "^2.0.0",
    "gulp-insert": "^0.5.0",
    "gulp-livereload": "^3.8.1",
    "gulp-load-plugins": "^1.1.0",
    "gulp-minify-css": "^1.2.1",
    "gulp-rename": "^1.2.2",
    "gulp-sass": "^2.1.0",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-sync": "^0.1.4",
    "gulp-uglify": "^1.4.2",
    "history": "^1.13.0",
    "keymirror": "^0.1.1",
    "lodash": "^3.10.1",
    "react": "^0.14.2",
    "react-addons": "^0.9.0",
    "react-bootstrap": "^0.27.3",
    "react-dom": "^0.14.2",
    "react-mixin": "^3.0.3",
    "react-router": "^1.0.0",
    "react-style": "^0.5.5",
    "reqwest": "^2.0.5",
    "rimraf": "^2.4.3",
    "run-sequence": "^1.1.4",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0",
    "watchify": "^3.6.0",
    "when": "^3.7.4"
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.1.2",
    "babel-preset-react": "^6.1.2",
    "babelify": "^7.2.0",
    "browser-sync": "^2.10.0",
    "browserify": "^12.0.1",
    "browserify-shim": "^3.8.11",
    "classnames": "^2.2.0",
    "core-util-is": "^1.0.1",
    "del": "^2.1.0",
    "flux": "^2.1.1",
    "gulp-autoprefixer": "^3.1.0",
    "gulp-bless": "^3.0.1",
    "gulp-connect": "^2.2.0",
    "gulp-html-replace": "^1.5.4",
    "gulp-if": "^2.0.0",
    "gulp-insert": "^0.5.0",
    "gulp-livereload": "^3.8.1",
    "gulp-load-plugins": "^1.1.0",
    "gulp-minify-css": "^1.2.1",
    "gulp-rename": "^1.2.2",
    "gulp-sass": "^2.1.0",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-sync": "^0.1.4",
    "gulp-uglify": "^1.4.2",
    "history": "^1.13.0",
    "keymirror": "^0.1.1",
    "lodash": "^3.10.1",
    "react": "^0.14.2",
    "react-addons": "^0.9.0",
    "react-bootstrap": "^0.27.3",
    "react-dom": "^0.14.2",
    "react-mixin": "^3.0.3",
    "react-router": "^1.0.0",
    "react-style": "^0.5.5",
    "reqwest": "^2.0.5",
    "rimraf": "^2.4.3",
    "run-sequence": "^1.1.4",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0",
    "watchify": "^3.6.0",
    "when": "^3.7.4"
  },
  "engines": {
    "node": "8.0.0",
    "npm": "5.0.4"
  },
  "author": "",
  "license": ""
}

但这仍然不会触发部署时的npm install过程,因此任何人都可以帮助我了解如何正确配置它吗?

这是我的Procfile:

web: python manage.py runserver 0.0.0.0:$PORT --noreload
worker: python worker.py

Heroku通过buildpacks支持不同的服务器端语言:

Buildpacks负责将部署的代码转换为段代码,然后可以在dyno上执行。 Buildpack由一组脚本组成,根据编程语言,这些脚本将检索依赖项,输出生成的资产或编译的代码等。

由于您的应用程序的Python部分似乎已正确安装,因此Heroku必须将其检测为Python应用程序(因为它包含requirements.txt文件),或者您已将其手动配置为一个。 在许多情况下,一个构建包就足够了。

但是,由于还使用了Node.js,因此应该启用第二个buildpack

在许多情况下,构建应用程序时仅使用一个buildpack是不够的。 这包括您需要:

  • 针对您的应用使用的每种语言运行一个buildpack。 例如,为资产运行一个JavaScript buildpack,为您的应用程序运行一个Ruby buildpack。

基本流程如下所示(在开发计算机上使用Heroku CLI ):

heroku buildpacks:set heroku/python
heroku buildpacks:add --index 2 heroku/nodejs

我上面提供的链接包含更多详细信息。 我建议阅读它们的全部内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM