我有一个 django 应用程序,它有 angular 和 bootstrap。这是我的设置的定义方式:
# Django settings for studentsite project.
import os
PROJECT_DIR = os.path.dirname(__file__)
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'texascompletesdb', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': 'localhost', # Empty for localhost through domain …Run Code Online (Sandbox Code Playgroud) 所以我正在尝试部署我的网站并且基本上尝试过
python manage.py check --deploy
Run Code Online (Sandbox Code Playgroud)
并遵循它告诉我的一切:
WARNINGS:
?: (security.W004) You have not set a value for the SECURE_HSTS_SECONDS setting. If your entire site is served only over SSL, you may want to consider setting a value and enabling HTTP Strict Transport Security. Be sure to read the documentation first; enabling HSTS carelessly can cause serious, irreversible problems.
?: (security.W006) Your SECURE_CONTENT_TYPE_NOSNIFF setting is not set to True, so your pages will not be served with an 'x-content-type-options: nosniff' header. You …Run Code Online (Sandbox Code Playgroud) 我正在尝试部署一个带有数字海洋的项目。我按照https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04上 的说明进行操作重要的是:我跑了:
postgres=# CREATE DATABASE jobzumoDB;
CREATE DATABASE
Run Code Online (Sandbox Code Playgroud)
然后:
postgres=# CREATE USER admin WITH PASSWORD '123';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE jobzumoDB TO admin;
GRANT
Run Code Online (Sandbox Code Playgroud)
在settings.py中设置以下内容:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'jobzumoDB',
'USER':'admin',
'PASSWORD':'123',
'HOST':'localhost',
'PORT':'',
}
Run Code Online (Sandbox Code Playgroud)
然后尝试运行:
~/jobzumo/manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)
并得到:
File "/home/justin/jobzumo/env/lib/python3.6/site-packages/psycopg2/__init__.py", line 126, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL: database "jobzumoDB" does not exist
Run Code Online (Sandbox Code Playgroud)
两件事情:
ALLOWED_HOSTS = ['jobzumo.com', '142.93.184.125']
Run Code Online (Sandbox Code Playgroud)
我还没有将 jobzumo.com 连接到 digital ocean,但 IP 地址是从我的 Droplet …
django postgresql django-database django-deployment digital-ocean
我正在尝试部署一个在heroku 实例上使用nested_inline 的django 应用程序。本地一切都运行良好,但我在收集静态期间在heroku服务器上遇到错误。
我按照heroku指南来让一个最小的django设置工作起来。然后我将“django-nested-inline”添加到我的requirements.txt中,将“nested_inline”添加到我的INSTALLED_APPS的末尾,并将“fromnested_inline.admin import NestedModelAdmin, NestedStackedInline”添加到我的admin.py中。
一切仍然在本地完美运行,没有任何问题。但是当我推送到heroku“git push heroku master”时,出现以下错误:
$ git push heroku master
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 670 bytes | 0 bytes/s, done.
Total 7 (delta 5), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: $ pip install -r requirements.txt
remote: Collecting django-nested-inline (from -r …Run Code Online (Sandbox Code Playgroud) 我到处寻找,我能找到的都是过时的或来自几个不同来源的零碎碎片,但没有一个完整的步骤来说明如何将 Django 部署到生产环境。
我想看到的是使用 git、本地和生产 settings.py、.gitignore 专门为 Django 部署 Django 的推荐方法。
我将如何实现设置以适应这两种环境以及应将哪些内容添加到 .gitignore 文件中,以便仅将必要的文件发送到 git 存储库?
请注意,我想了解使用本地和生产设置的最佳实践和最新方法。
部署 Django 应用程序时会出现此类问题。
感谢andreas澄清这一点,现在我完全同意没有部署 Django 的标准方法。我进行了长时间的研究,发现了部署 Django 设置最常用的方法。我将与所有有同样疑问的人分享我的发现。
接听
这些设置更好地包含在设置模块中,而不是单个settings.py文件中。
这是设置模块非常方便的地方,因为您可以简单地拥有独立于环境的设置,并且它们可以使用 git 或任何其他版本控制进行维护。
敏感信息,例如数据库、电子邮件、密钥和任何与身份验证相关的信息以及您将如何秘密提供这些私人信息,我建议使用andreas建议。
您可以在 at 创建一个单独的文件/etc/app_settings并使其受到严格限制,或者只是使用系统内的环境变量。
对于 .gitignore 部分,我找到了一个很棒的 repo,您可以在https://github.com/github/gitignore 上获得各种示例。
我最终使用了:
# OSX Finder turds
.DS_Store
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Distribution / …Run Code Online (Sandbox Code Playgroud) 当我尝试访问django网站时,我收到"内部服务器错误".我使用的是Django 1.8,Python 2.7.10,centos 6.5和apache.
在apache日志中,我收到以下错误:
mod_wsgi (pid=23866): Target WSGI script '/abc/abc/abc/wsgi.py' cannot be loaded as Python module.
[Mon May 25 14:40:47 2015] [error] [client xyz] mod_wsgi (pid=23866): Exception occurred processing WSGI script '/abc/abc/abc/wsgi.py'.
[Mon May 25 14:40:47 2015] [error] [client xyz] Traceback (most recent call last):
[Mon May 25 14:40:47 2015] [error] [client xyz] File "/abc/abc/abc/wsgi.py", line 12, in <module>
[Mon May 25 14:40:47 2015] [error] [client xyz] from django.core.wsgi import get_wsgi_application
[Mon May 25 14:40:47 2015] [error] [client xyz] …Run Code Online (Sandbox Code Playgroud) 所以我终于能够设置我正在研究的本地+ prod测试项目.
# wsgi.py
from dj_static import Cling, MediaCling
application = Cling(MediaCling(get_wsgi_application()))
application = DjangoWhiteNoise(application)
Run Code Online (Sandbox Code Playgroud)
我使用whitenoise(没有任何问题)和媒体(文件上传)使用dj_static和Postgres为local + prod 设置静态文件.一切都工作正常...静态文件,文件上传.
但是在Heroku dynos重新启动后,我丢失了所有文件上传.我的问题是,---由于我是从Django应用程序而不是像S3那样提供媒体文件,所以dyno重新启动也会消除这一切吗?
PS:我知道我可以用AWS等做到这一点,但我只是想知道这是否是我丢失所有上传的原因.
我正在使用django开发一个Web应用程序.我曾经使用Openshift来发布/部署我的作品.您认为最好的平台是什么?我唯一的必要条件是拥有一个可用且可扩展的免费计划.然后,当事情变得更大时,我会支付.