mgP*_*ePe 2 git django postgresql heroku
我经常忘记步骤,希望有一个关于在 Heroku 上部署 django 项目的快速指导指南。
如何在 Heroku 上安装和部署 Django 应用程序?
我已经发布了对我有用的步骤的分步答案。
要快速安装,请查看其他答案。
任何你看到的地方,用你的真实姓名替换!!!
如果你没有virtualenv
,你需要得到它。它将允许您为每个项目单独安装软件:
pip install virtualenv
Run Code Online (Sandbox Code Playgroud)
然后我们创建我们的项目:
cd ~
mkdir PROJECT_WRAPPER && cd PROJECT_WRAPPER
virtualenv venv
Run Code Online (Sandbox Code Playgroud)
现在您有一个专用文件夹,其中将包含独立安装和 python、django 等版本。
我们通过以下方式激活并开始项目工作:
source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
在我们继续之前,我们将安装 postgres.app。从以下网址获取:http : //postgresapp.com/
安装。
我们现在将使用它连接我们的环境:
PATH=/Applications/Postgres.app/Contents/MacOS/bin/:$PATH
Run Code Online (Sandbox Code Playgroud)
现在我们需要安装以下东西:
因此,要创建 requirements.txt 文件,我们将从我的 git 存储库中准备好它:
clone https://raw2.github.com/mgpepe/django-heroku-15/master/requirements.txt -o requirements.txt
Run Code Online (Sandbox Code Playgroud)
现在使用一个命令,我们将从我们的 requirements.txt 安装所有内容:
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
太好了,现在我们可以通过以下方式验证我们是否拥有 django:
python -c "import django; print(django.get_version())"
Run Code Online (Sandbox Code Playgroud)
让我们用这一行开始项目,不要忘记最后的点:
django-admin.py startproject DJANGO_PROJECT .
Run Code Online (Sandbox Code Playgroud)
现在,如果您键入,ls
您应该会看到一个包含您的项目名称的文件夹,其中包含您的 Django 项目。
要查看是否一切正常,请运行:
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
运行 Postgres 应用程序。
创建一个数据库(我使用了我的 osx 用户名):
createdb YOUR_DATABASE_NAME --owner=YOUR_OSX_USERNAME
Run Code Online (Sandbox Code Playgroud)
将其更改DATABASES
为如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'YOUR_DATABASE_NAME',
'USER': 'YOUR_OSX_USERNAME',
'PASSWORD': 'YOUR_DATABASE_PASSWORD', #might be empty string ''
'HOST': '127.0.0.1',
# 'PORT': '5432',
}
}
Run Code Online (Sandbox Code Playgroud)
并且让我们连接南迁移。你INSTALLED_APPS
应该看起来像这样:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
)
Run Code Online (Sandbox Code Playgroud)
将SECRET_KEY
变量更改为其他内容。
现在,如果一切正常,您应该能够创建第一个表:
python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
现在在你的项目中制作你的第一个应用程序
python manage.py startapp DJANGO_APP
Run Code Online (Sandbox Code Playgroud)
在文件中: ~/PROJECT_WRAPPER/DJANGO_PROJECT/settings.py
将DJANGO_APP
应用程序添加到变量中的列表中INSTALLED_APPS
。应该是这样的:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
'DJANGO_APP',
)
Run Code Online (Sandbox Code Playgroud)
在设置文件中添加以下行:
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
Run Code Online (Sandbox Code Playgroud)
为了使模板组织得井井有条,我们将把 base.html 复制到一个文件夹中,并将其余模板复制到应用程序本身中:
cd ~/PROJECT_WRAPPER/
mkdir templates
curl https://raw2.github.com/mgpepe/django-heroku-15/master/templates/base.html -o base.html
Run Code Online (Sandbox Code Playgroud)
现在剩下的模板:
cd ~/PROJECT_WRAPPER/DJANGO_APP/
mkdir templates && cd templates
mkdir DJANGO_APP
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/changepass.html -o changepass.html
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/forgot_pass.html -o forgot_pass.html
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/home.html -o home.html
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/login.html -o login.html
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/logout.html -o logout.html
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/registration.html -o registration.html
curl https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/templates/DjMainApp/splash.html -o splash.html
Run Code Online (Sandbox Code Playgroud)
由于最近流行使用电子邮件而不是用户名,我们也将这样做。
*注意:如果您决定不使用它,您可以跳过这一步,但您必须编辑视图和模板以使用用户名而不是电子邮件。*
在设置中添加以下行:
AUTHENTICATION_BACKENDS = (DJANGO_PROJECT.backends.EmailAuthBackend’,)
Run Code Online (Sandbox Code Playgroud)
然后将文件 backends.py 复制到我们的项目目录中:
cd ~/PROJECT_WRAPPER/DJANGO_PROJECT/
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/backends.py -o backends.py
Run Code Online (Sandbox Code Playgroud)
您可以使用 Foreman 模拟在您的计算机上运行的 heroku。让我们创建最简单的配置文件:
cd ~/PROJECT_WRAPPER
echo "web: gunicorn DJANGO_PROJECT.wsgi" > Procfile
foreman start
Run Code Online (Sandbox Code Playgroud)
现在你看到它没有错误地工作,停止它 CTRL+C
在底部的设置中添加:
# HEROKU
###########################
# Parse database configuration from $DATABASE_URL
if os.environ.has_key('DATABASE_URL'):
import dj_database_url
DATABASES['default'] = dj_database_url.config()
# 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 = ['*']
Run Code Online (Sandbox Code Playgroud)
在您的DJANGO_PROJECT/wsgi.py
文件中并将以下内容添加到底部:
from dj_static import Cling
application = Cling(get_wsgi_application())
Run Code Online (Sandbox Code Playgroud)
理想情况下,您可以从 Amazon 或类似的地方提供静态文件。但是对于简单的站点,您可以使用 Django。设置它需要您将其附加到设置文件中:
# HEROKU STATIC ASSETS 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'),
)
Run Code Online (Sandbox Code Playgroud)
并将所有静态文件放在特定文件夹中。首先转到您的项目文件夹,例如:
cd ~/PROJECT_WRAPPER/DJANGO_PROJECT/
Run Code Online (Sandbox Code Playgroud)
现在您可以复制/粘贴其余部分:
mkdir static && cd static
mkdir css && cd css
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/static/css/bootstrap.min.css -o bootstrap.min.css
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/static/css/styles.css -o styles.css
cd ..
mkdir js && cd js
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjangoHerokuIn15/static/js/bootstrap.min.js -o bootstrap.min.js
cd ..
mkdir img && cd img
Run Code Online (Sandbox Code Playgroud)
在最后一个文件夹中,您将放置所需的所有图像。
在 urls.py 中,在 'example' 之前复制这些行:
url(r'^$', "pmfmain.views.splash", name="splash"),
url(r'^login$', "pmfmain.views.login_view", name="login"),
url(r'^signup$', "pmfmain.views.register", name="signup"),
url(r'^forgot$', "pmfmain.views.forgot_pass", name="forgotmypass"),
url(r'^logout$', "pmfmain.views.logout_user", name="logout"),
url(r'^dashboard$', "pmfmain.views.home", name="home”),
Run Code Online (Sandbox Code Playgroud)
然后将 views.py 从我的 github 存储库复制到您的 DJANGO_PROJECT 文件夹:
cd ~/PROJECT_WRAPPER/DJANGO_APP/
rm views.py
clone https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/views.py -o views.py
Run Code Online (Sandbox Code Playgroud)
在整个过程中查找并替换DjMainApp
为您真实的 DJANGO_APP 名称views.py
克隆https://raw2.github.com/mgpepe/django-heroku-15/master/DjMainApp/forms.py -o forms.py
有些文件不需要在 git 中,所以让我们为此设置配置:
echo -e "venv\n*.pyc\n*.log\n*.pot\nstaticfiles" > .gitignore
Run Code Online (Sandbox Code Playgroud)
现在让我们提交:
git init
git add .
git commit -m ‘initial commit of django app’
Run Code Online (Sandbox Code Playgroud)
在 git 中创建一个存储库,然后复制 git url(以 .git 结尾的那个)。然后:
git remote add origin THE_URL
git pull origin master
Run Code Online (Sandbox Code Playgroud)
如果您不想为 github 付费并且希望您的存储库是私有的,则可以使用 bitbucket。
登录到您的帐户 创建一个新的存储库 单击添加现有项目
git remote add origin https://USERNAME@bitbucket.org/USERNAME/REPOSITORY_NAME.git
Run Code Online (Sandbox Code Playgroud)
即使您永远不必拥有多个 heroku 帐户,它也是一种设置和使用它的简单方法,即使是一个帐户也是如此。所以我们继续:
cd ~
heroku plugins:install git://github.com/ddollar/heroku-accounts.git
Run Code Online (Sandbox Code Playgroud)
添加一个 heroku 帐户:
heroku accounts:add personal
它在控制台中说,你必须这样做:
将以下内容添加到您的 ~/.ssh/config
Host heroku.personal
HostName heroku.com
IdentityFile /PATH/TO/PRIVATE/KEY
IdentitiesOnly yes
Run Code Online (Sandbox Code Playgroud)
使用以下内容转到您的项目文件夹:
cd ~/PROJECT_WRAPPER
Run Code Online (Sandbox Code Playgroud)
然后将新帐户设置为:
heroku accounts:set personal
Run Code Online (Sandbox Code Playgroud)
创建一个新的 ssh KEY:
ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)
当要求输入名称时,请写下完整路径和名称,如图所示。然后输入您的密码或留空
然后将密钥添加到您的 OSX 和 heroku:
heroku keys:add ~/.ssh/YOUR_KEY_NAME.pub
ssh-add ~/.ssh/YOUR_KEY_NAME
Run Code Online (Sandbox Code Playgroud)
现在您已经按顺序拥有了密钥,您应该可以执行 heroku 应用程序
并看到没有应用程序。添加您的第一个应用程序:
heroku apps:create YOUR_APP_NAME
Run Code Online (Sandbox Code Playgroud)
现在上传到服务器:
git push heroku master
Run Code Online (Sandbox Code Playgroud)
现在去 YOUR_APP_NAME.herokuapp.com 看看你的网站!
如果有人想要,还有待解释,让我知道
深入文档位于:
归档时间: |
|
查看次数: |
1740 次 |
最近记录: |