将Django部署到Heroku(备忘录)

准备好

需要进行安装等操作的东西

Python3.6.5
django-toolbelt0.0.1
Django2.1.3
gunicorn19.9.0
git2.14.3
在2019年03月06日确认过,这是我的环境。

创建环境

建立开发环境

mkdir directoryname #作業ディレクトリ
cd directoryname
django-admin startproject projectname   #プロジェクトディレクトリが作業ディレクトリ内に作られる。

建立应用开发环境

cd projectname
python3 manage.py startapp appname  #アプリディレクトがプロジェクトディレクトリ内に作られる。

创建一个能显示HTML的应用程序。

编辑等等

修改 projectname/projectname/setting.py 文件。

# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'appname', #追記
)

〜〜〜〜〜

LANGUAGE_CODE = 'ja'     #変更

TIME_ZONE = 'Asia/Tokyo'    #変更

USE_I18N = True

USE_L10N = True

USE_TZ = False              #変更

编辑projectname/projectname/urls.py文件。

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
   path(r'admin/', admin.site.urls),
   path('', include('appname.urls')),
]

在projectname/appname的根目录下,创建一个urls.py文件和一个templates目录,然后在templates目录中创建index.html文件。

touch urls.py
mkdir templates
touch index.html

编辑projectname/appname/urls.py。

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

编辑项目名/应用名/views.py文件。

from django.shortcuts import render

# Create your views here.
def index(request):    #追記
    return render(request, "index.html")

index.html文件的内容如下所示。

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    Hello, Heroku!!
  </body>
</html>

执行以下命令,如果在浏览器上显示“Hello, Heroku!!”就说明Django已经完成了。

python3 manage.py runserver

将代码部署到Heroku平台上

准备

创建Procfile。

echo "web: gunicorn projectname.wsgi --log-file -" > Procfile

创建一个 runtime.txt 文件。

echo "python-3.6.5" > runtime.txt

创建 requirements.txt 文件。
这个也可以,但是,

pip freeze > requirements.txt

由于在全球环境下开发,导致git push时出现了许多不必要的错误。只输入了必要的内容。

dj-database-url==0.4.2
dj-static==0.0.6
django-toolbelt==0.0.1
Django==2.1.3
gunicorn==19.9.0

编辑Django应用

修改setting.py文件。

#BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))     変更前
BASE_DIR = os.path.dirname(os.path.abspath(__file__))   #変更後

#ALLOWED_HOSTS = [] 変更前
ALLOWED_HOSTS = ['*']   #変更後

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = "staticfiles"     #追記
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)  #追記

### 以下追記 ###
# Parse database configuration from $DATABASE_URL
import dj_database_url
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

将wsgi.py更改为以下内容。

import os

from dj_static import Cling
from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectname.settings")

application = Cling(get_wsgi_application())

放置!

创建一个Heroku应用

登录Heroku,创建Heroku应用。
特别说明,使用”heroku create herokuAppName”命令时,
“herokuAppName”将成为Heroku应用的名称。
使用”heroku create”命令时,将自动分配一个应用名称。

heroku login    #この時ブラウザでログインが求められるかも
heroku create

似乎需要进行Heroku环境变量的设置。

heroku config:set DISABLE_COLLECTSTATIC=1

将git与其他系统进行集成

将git与其进行整合。

git init
heroku git:remote -a herokuでのアプリ名

向Git推送!推送!推送!

git add .
git commit -am "なんかコメント"
git push heroku master

当收到「远程:验证部署…完成。」的提示时,表示成功。我会进行确认。

heroku open

如果发生失败的情况,就一直使用”heroku logs –tail”命令进行调查。

广告
将在 10 秒后关闭
bannerAds