質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

1回答

781閲覧

【heroku】HerokuGitのリモートにpushできない

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2018/08/31 00:37

編集2018/08/31 00:43

前提・実現したいこと

HerokuGitを使ってWebAppを公開したいのですが、二つのエラーが出てしまい、困っています。
・リモートへのプッシュでエラー
・400BadRequest

【HerokuGitを使いたい理由(GitHubを使いたくない理由】
GitHub経由でWebAppを公開するのは以前実施したことがあ流のですが、
今回はHerokuにリモートリポジトリを作成し、App公開を目指しています。
外に出したくないコードやデータがあるため、GitHubの公開リポジトリ経由ではAppを公開したくないなあと思っています。

【作業の進め方】
下記のページを参考に作業を進めました。GitHub経由でデプロイした時はこれでうまくいっています。
Django2.0でHerokuデプロイ手順

発生している問題・エラーメッセージ

・HerokuGitへのプッシュでエラー

remote: FileNotFoundError: [Errno 2] No such file or directory: '/tmp/build_1f1d6b65dcb127cece6acd573026910d/static' remote: remote: ! Error while running '$ python manage.py collectstatic --noinput'. remote: See traceback above for details. remote: remote: You may need to update application code to resolve this error. remote: Or, you can disable collectstatic for this application: remote: remote: $ heroku config:set DISABLE_COLLECTSTATIC=1 remote: remote: https://devcenter.heroku.com/articles/django-assets remote: ! Push rejected, failed to compile Python app. remote: remote: ! Push failed remote: Verifying deploy... remote: remote: ! Push rejected to webjti. remote: To https://git.heroku.com/webjti.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/webjti.git'

Django製apiをherokuでデプロイする(自分用メモ)にて解決策があったので実施。heroku config:set DISABLE_COLLECTSTATIC=1
→ この事象は回避できるものの400エラー
Django gives Bad Request (400) when DEBUG = False
Djangoの400エラーはsettings.pyをいじれとのことなのでいじる
→ 400は出続ける

該当のソースコード

下記のコードを公開します。
・三種の神器(Procfile, requirements.txt, runtime.txt)
・Djangoの設定ファイル(wigs.py, settings.py)
・.gitignoreファイル

・三種の神器

# Procfile web: gunicorn config.wsgi --log-file -
# requirements.txt dj-database-url==0.5.0 dj-static==0.0.6 Django==2.1 django-toolbelt==0.0.1 gunicorn==19.9.0 psycopg2==2.7.5 pytz==2018.5 static3==0.7.0 whitenoise==4.0
#runtime.txt python-3.6.4

・Djangoの設定ファイル

# wigs.py import os from dj_static import Cling from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') application = Cling(get_wsgi_application())
#settings.py import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) PROJECT_NAME = os.path.basename(BASE_DIR) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'r6mcj3edhf6fk_9iw61#7zqe2)vqvn^hw(q9g@rs5)-#l(mn8r' # SECURITY WARNING: don't run with debug turned on in production! from socket import gethostname hostname = gethostname() if "USERNAME" in hostname: # デバッグ環境 DEBUG = True DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ALLOWED_HOSTS = [] # よくわからんけど、これも大事らしい else: # 本番環境 DEBUG = False LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django': { 'handlers': ['console'], 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'), }, }, } # DB設定 import dj_database_url PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) db_from_env = dj_database_url.config() DATABASES = { 'default': dj_database_url.config() } ALLOWED_HOSTS = ['*'] # Application definition INSTALLED_APPS = [ 'shisan.apps.ShisanConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', # 追加した 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'config.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'config.wsgi.application' # Database # https://docs.djangoproject.com/en/2.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.djangoproject.com/en/2.1/topics/i18n/ LANGUAGE_CODE = 'ja' TIME_ZONE = 'Asia/Tokyo' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.1/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')

・.gitignore

venv __pycache__ staticfiles db.sqlite3 *.py[co]

試したこと

・heroku git:remote -a
HerokuGitにリモートを作りたい時は$ heroku git:remote -a APPNAMEせよとの記述があったので、一旦リポジトリを削除してから再度$ heroku git:remote -a APPNAMEしたりもしています。しかしこれも変化なし。
・静的ファイル起因?
HerokuにDjangoアプリをデプロイするとcollectstaticが自動実行される
を読んでみると、静的ファイルのない状態でCollectstaticするとダメ、と読めるような読めないようなことが書いてあります。
現在静的ファイルを作っていないので、そこが怪しいかもと思っています。(これから試す)

補足情報(FW/ツールのバージョンなど)

MacOS High Sierra 10.13.6
Python 3.6.4
Django2.1

その他不明な点などありましたらご連絡いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

静的ファイルを用意したら解決しました。

投稿2018/08/31 01:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問