mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-02-16 19:41:03 +03:00
Update instructions for latest version of cookiecutter
This commit is contained in:
parent
0e979f3470
commit
55faf7fd2c
|
@ -1,5 +1,5 @@
|
|||
Deployment on Heroku
|
||||
====================
|
||||
Deployment on PythonAnywhere
|
||||
============================
|
||||
|
||||
.. index:: PythonAnywhere
|
||||
|
||||
|
@ -7,17 +7,23 @@ Deployment on Heroku
|
|||
Overview
|
||||
--------
|
||||
|
||||
* Push your code up to a code-sharing site like Bitbucket or Github
|
||||
Full instructions follow, but here's a high-level view.
|
||||
|
||||
* Pull your code down to PythonAnywhere using a *Bash console* and create a virtualenv
|
||||
**First time config**:
|
||||
|
||||
* Set your config environment variables in the *postactivate* script
|
||||
1. Pull your code down to PythonAnywhere using a *Bash console* and setup a virtualenv
|
||||
|
||||
* Run the *manage.py* ``migrate`` and ``collectstatic`` commands
|
||||
2. Set your config variables in the *postactivate* script
|
||||
|
||||
* Add an entry to the PythonAnywhere *Web tab*
|
||||
3. Run the *manage.py* ``migrate`` and ``collectstatic`` commands
|
||||
|
||||
4. Add an entry to the PythonAnywhere *Web tab*
|
||||
|
||||
5. Set your config variables in the PythonAnywhere *WSGI config file*
|
||||
|
||||
|
||||
Once you've been through this one-off config, future deployments are just `git pull` and then hit the "Reload" button :)
|
||||
|
||||
* Future deployments are just `git pull` and then hit the "Reload" button
|
||||
|
||||
|
||||
Getting your code and dependencies installed on PythonAnywhere
|
||||
|
@ -29,7 +35,7 @@ Make sure your project is fully commited and pushed up to Bitbucket or Github or
|
|||
|
||||
git clone <my-repo-url> # you can also use hg
|
||||
cd my-project-name
|
||||
mkvirtualenv --python=/usr/bin/python3.4 my-project-name # or python2.7, etc
|
||||
mkvirtualenv --python=/usr/bin/python3.5 my-project-name # or python2.7, etc
|
||||
pip install -r requirements/production.txt # may take a few minutes
|
||||
|
||||
|
||||
|
@ -51,7 +57,7 @@ Set environment variables via the virtualenv "postactivate" script (this will se
|
|||
|
||||
vi $VIRTUAL_ENV/bin/postactivate
|
||||
|
||||
**TIP:** If you don't like vi, you can also edit this file via the PythonAnywhere "Files" menu; look in the *.virtualenvs* folder.
|
||||
**TIP:** *If you don't like vi, you can also edit this file via the PythonAnywhere **Files** menu; look in the ".virtualenvs" folder.*
|
||||
|
||||
Add these exports
|
||||
|
||||
|
@ -59,21 +65,22 @@ Add these exports
|
|||
|
||||
export DJANGO_SETTINGS_MODULE='config.settings.production'
|
||||
export DJANGO_SECRET_KEY='<secret key goes here>'
|
||||
export SENDGRID_USERNAME='<sendgrid username>'
|
||||
export SENDGRID_PASSWORD='<sendgrid password>'
|
||||
export DJANGO_ALLOWED_HOSTS='<www.your-domain.com>'
|
||||
export DJANGO_ADMIN_URL='<not admin/>'
|
||||
export DJANGO_MAILGUN_API_KEY='<mailgun key>'
|
||||
export DJANGO_MAILGUN_SERVER_NAME='<mailgun server name>'
|
||||
export DJANGO_AWS_ACCESS_KEY_ID=
|
||||
export DJANGO_AWS_SECRET_ACCESS_KEY=
|
||||
export DJANGO_AWS_STORAGE_BUCKET_NAME=
|
||||
export DATABASE_URL='<see below>'
|
||||
|
||||
TODO: replace sendgrid with mailgun
|
||||
|
||||
**NOTE:** The AWS details are not required if you're using whitenoise or the built-in pythonanywhere static files service, but you do need to set them to blank, as above
|
||||
**NOTE:** *The AWS details are not required if you're using whitenoise or the built-in pythonanywhere static files service, but you do need to set them to blank, as above.*
|
||||
|
||||
|
||||
Database setup:
|
||||
---------------
|
||||
|
||||
Go to the PythonAnywhere databases tab and configure your database.
|
||||
Go to the PythonAnywhere **Databases tab** and configure your database.
|
||||
|
||||
* For Postgres, setup your superuser password, then open a Postgres console and run a `CREATE DATABASE my-db-name`. You should probably also set up a specific role and permissions for your app, rather than using the superuser credentials. Make a note of the address and port of your postgres server.
|
||||
|
||||
|
@ -84,20 +91,15 @@ Go to the PythonAnywhere databases tab and configure your database.
|
|||
|
||||
Now go back to the *postactivate* script and set the ``DATABASE_URL`` environment variable:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vi $VIRTUAL_ENV/bin/postactivate
|
||||
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export DATABASE_URL='postgres://<postgres-username>:<postgres-password>@<postgres-address>:<postgres-port>/<database-name>'
|
||||
# or
|
||||
export DATABASE_URL='mysql://<pythonanywhere-username>:<mysql-password>@mysql.server/<database-name>'
|
||||
export DATABASE_URL='mysql://<pythonanywhere-username>:<mysql-password>@<mysql-address>/<database-name>'
|
||||
# or
|
||||
export DATABASE_URL='sqlite:////absolute/path/to/db.sqlite'
|
||||
export DATABASE_URL='sqlite:////home/yourusername/path/to/db.sqlite'
|
||||
|
||||
If you're using MySQL, you may need to run ``pip install MySQLdb``, and maybe add ``MySQLdb`` to *requirements/production.txt* too.
|
||||
If you're using MySQL, you may need to run ``pip install mysqlclient``, and maybe add ``mysqlclient`` to *requirements/production.txt* too.
|
||||
|
||||
Now run the migration, and collectstatic:
|
||||
|
||||
|
@ -114,9 +116,11 @@ Now run the migration, and collectstatic:
|
|||
Configure the PythonAnywhere Web Tab
|
||||
------------------------------------
|
||||
|
||||
Go to the PythonAnywhere **Web** tab, hit **Add new web app**, and choose **Manual Config**, and then the version of Python you used for your virtualenv.
|
||||
Go to the PythonAnywhere **Web tab**, hit **Add new web app**, and choose **Manual Config**, and then the version of Python you used for your virtualenv.
|
||||
|
||||
When you're redirected back to the web app config screen, set the path to your virtualenv. If you used virtualenvwrapper as above, you can just enter its name.
|
||||
**NOTE:** *If you're using a custom domain (not on \*.pythonanywhere.com), then you'll need to set up a CNAME with your domain registrar.*
|
||||
|
||||
When you're redirected back to the web app config screen, set the **path to your virtualenv**. If you used virtualenvwrapper as above, you can just enter its name.
|
||||
|
||||
Click through to the **WSGI configuration file** link (near the top) and edit the wsgi file. Make it look something like this, repeating the environment variables you used earlier:
|
||||
|
||||
|
@ -129,25 +133,27 @@ Click through to the **WSGI configuration file** link (near the top) and edit th
|
|||
if path not in sys.path:
|
||||
sys.path.append(path)
|
||||
|
||||
os.environ['DATABASE_URL'] = '<database url as above>'
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings.production'
|
||||
os.environ['DJANGO_SECRET_KEY'] = '<secret key as above>'
|
||||
os.environ['SENDGRID_PASSWORD'] = ''
|
||||
os.environ['SENDGRID_USERNAME'] = ''
|
||||
os.environ['DJANGO_SECRET_KEY'] = '<as above>'
|
||||
os.environ['DJANGO_ALLOWED_HOSTS'] = '<as above>'
|
||||
os.environ['DJANGO_ADMIN_URL'] = '<as above>'
|
||||
os.environ['DJANGO_MAILGUN_API_KEY'] = '<as above>'
|
||||
os.environ['DJANGO_MAILGUN_SERVER_NAME'] = '<as above>'
|
||||
os.environ['DJANGO_AWS_ACCESS_KEY_ID'] = ''
|
||||
os.environ['DJANGO_AWS_SECRET_ACCESS_KEY'] = ''
|
||||
os.environ['DJANGO_AWS_STORAGE_BUCKET_NAME'] = ''
|
||||
os.environ['DATABASE_URL'] = '<as above>'
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
application = get_wsgi_application()
|
||||
|
||||
TODO: sendgrid -> mailgun
|
||||
|
||||
Back on the Web tab, hit **Reload**, and your app should be live!
|
||||
|
||||
NB - you will see security warnings until you set up your SSL certificates. If you
|
||||
|
||||
**NOTE:** *you may see security warnings until you set up your SSL certificates. If you
|
||||
want to supress them temporarily, set ``DJANGO_SECURE_SSL_REDIRECT`` to blank. Follow
|
||||
the instructions here to get SSL set up: https://www.pythonanywhere.com/wiki/SSLOwnDomains
|
||||
the instructions here to get SSL set up: https://www.pythonanywhere.com/wiki/SSLOwnDomains*
|
||||
|
||||
|
||||
Optional: static files
|
||||
|
|
Loading…
Reference in New Issue
Block a user