在Heroku上部署Django应用程序[第一部分]

首先

作为在Heroku上运行Django应用的备忘录,我将记录第一步骤:在Heroku上展示Django应用的启动页面(It Work页面)。

下次将Django应用程序部署到Heroku[第二部分]
我所使用的环境

    • macOS Sierra 10.12.5

 

    • Python 3.6.1

 

    virtualenv 15.1.0

必需品

    • Herokuアカウント

 

    • 参考:Heroku初心者がHello, Herokuをしてみる

 

    • virtualenvのインストール(python3環境にインストールされていること)

 

    参考:virtualenvでpython環境を管理する

制作此次应用程序的结构

本次制作的应用将按照以下结构进行。

myProject
├── venv
├── Procfile
├── db.sqlite3
├── manage.py
├── myDjango
│   ├──__pycache__
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── requirements.txt
└── runtime.txt

根目录名称:myProject
Django项目名称:myDjango

操作步骤

创建一个Django应用程序

创建并移动项目目录

$ mkdir myProject
$ cd myProject

构建和启动虚拟环境

$ virtualenv venv
$ source venv/bin/activate

使用virtualenv命令创建名为venv的虚拟环境。
使用source venv/bin/activate命令激活虚拟环境venv。终端命令提示符前会显示(venv)。

当您希望结束虚拟环境的运行时,可以在终端中执行”deactivate”命令。

安装 Django 工具包

$ pip install django-toolbelt

通过安装 Django-toolbelt 包,将安装以下的软件包。

    • django (Django本体)

 

    • psycopg2 (PythonでpostgreSQLを扱いやすくする)

 

    • gunicorn (Pythonで動くWSGIサーバ)

 

    • dj-database-url (DjangoでpostgreSQLを扱えるようにする)

 

    dj-static (静的リソースを扱えるようにする)

创建Django项目

$ django-admin.py startproject myDjango ./

在当前目录下创建一个名为myDjango的Django项目。

修改语言和时区
将位于myDjango目录中的settings.py文件下面的部分进行更改。

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

进行移民

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

如果变成这样就可以了
迁移简单来说,就是在不写SQL的情况下,可以使用Python在数据库中创建表的功能。
参考资料:初学Rails的人容易出错的“迁移”

服务器启动

$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
July 16, 2017 - 02:53:26
Django version 1.11.3, using settings 'myDjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

执行python manage.py runserver命令,如果出现上述显示结果,那就可以了。
通过执行此命令,可以在http://127.0.0.1:8000/上查看应用程序。
要退出时,请按Ctrl+C。

はじめてのDjangoページ

使用Git进行版本管理

创建.gitignore文件,并写入以下内容。

*.pyc
venv
staticfiles
db.sqlite3

提交

$ git init
$ git add .
$ git commit -m "Djangoアプリを作成した"

将应用部署到Heroku上

创建Procfile

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

Procfile是一个文件,用来告诉Heroku要运行什么程序。
参考:Procfile在Heroku中的作用。

创建 runtime.txt

$ echo "python-3.6.1" > runtime.txt

使用 runtime.txt 文件指定 Python 的版本。

创建requirements.txt

$ pip freeze > requirements.txt

可以生成这种类型的文件

dj-database-url==0.4.2
dj-static==0.0.6
Django==1.11.3
django-toolbelt==0.0.1
gunicorn==19.7.1
psycopg2==2.7.1
pytz==2017.2
static3==0.7.0

在Heroku上启用Django应用,在settings.py的最后一行添加以下内容。

# 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')

# Allow all host headers
ALLOWED_HOSTS = ['*']

# Static asset configuration
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

修改 wsgi.py 文件

import os

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

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

application = Cling(get_wsgi_application())

创建Heroku应用程序

$ heroku create

在Heroku上设置环境变量。

$ heroku config:set DISABLE_COLLECTSTATIC=1

如果不这样做,在推送时会出错。

将代码推送到Heroku

$ git add .
$ git commit -m "Herokuで動くようにした"
$ git push heroku master

远程:验证部署…完成。推送成功。

在Heroku上进行迁移也是可以的。

$ heroku run python manage.py migrate

在Heroku上运行〇〇后,可以执行〇〇命令。

确认是否在Heroku平台上运行

$ heroku open
Heroku上のはじめてのDjangoページ

总结

这次我在Heroku上将刚刚创建的Django应用成功运行了起来。
下次将进行管理网站和模型创建的工作。

下次将Django应用部署到Heroku[第2部分]。

请提供以下的汉语原文,我将为您进行适当的释义。

    • たった5分でDjangoアプリをherokuにデプロイする方法

 

    Deploying Python and Django Apps on Heroku
广告
将在 10 秒后关闭
bannerAds