|
|
@@ -0,0 +1,92 @@
|
|
|
+# Deploy Django Application (Non-Dockerize)
|
|
|
+
|
|
|
+To deploy your Django Application in Porter. You need to tweak something on your Django Application.
|
|
|
+
|
|
|
+> 📘 Prerequisites
|
|
|
+> - Django Application
|
|
|
+> - Docker Registry integration on your account ([See docs](https://docs.getporter.dev/docs/linking-an-existing-docker-container-registry))
|
|
|
+
|
|
|
+
|
|
|
+## Prepare Django Application
|
|
|
+
|
|
|
+1. Install `django-allow-cidr` (Django middleware to enable the use of CIDR IP ranges in `ALLOWED_HOSTS`)
|
|
|
+ ```sh
|
|
|
+ pip install django-allow-cidr
|
|
|
+ ```
|
|
|
+2. Go to Django Settings and add os.environ.get in allowed host.
|
|
|
+ ```python
|
|
|
+ ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", default='127.0.0.1').split(" ")
|
|
|
+ ```
|
|
|
+3. Add this below allowed host. Put CIDR according to the K8s kubelet CIDR
|
|
|
+ ```python
|
|
|
+ ALLOWED_CIDR_NETS = os.environ.get("ALLOWED_CIDR_NETS", default='10.0.0.0/16').split(" ")
|
|
|
+ ```
|
|
|
+4. Add `django-allow-cidr` middleware on the top of Django middleware:
|
|
|
+ ```python
|
|
|
+ MIDDLEWARE = [
|
|
|
+ 'allow_cidr.middleware.AllowCIDRMiddleware',
|
|
|
+ #'django.middleware.security.SecurityMiddleware',
|
|
|
+ ]
|
|
|
+ ```
|
|
|
+5. Add Gunicorn
|
|
|
+ ```sh
|
|
|
+ pip install gunicorn
|
|
|
+ ```
|
|
|
+6. Add static folder and add your HTML and CSS files. Locate static URL settings and add static file dirs below:
|
|
|
+ ```python
|
|
|
+ STATICFILES_DIRS = (
|
|
|
+ os.path.join(BASE_DIR, 'static'),
|
|
|
+ )
|
|
|
+ STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
|
|
|
+ ```
|
|
|
+7. Add Procfile and add this:
|
|
|
+ ```
|
|
|
+web: gunicorn <project-name>.wsgi -b 0.0.0.0:8989 --timeout 120
|
|
|
+
|
|
|
+For example:
|
|
|
+
|
|
|
+web: gunicorn djangosample.wsgi -b 0.0.0.0:8989 --timeout 120
|
|
|
+ ```
|
|
|
+8. Then pip freeze requirements
|
|
|
+ ```sh
|
|
|
+ pip freeze > requirements.txt
|
|
|
+ ```
|
|
|
+ Reference:
|
|
|
+ https://github.com/jimcru21/porter-sample-django-non-docker
|
|
|
+
|
|
|
+## Deploy Django in Porter
|
|
|
+
|
|
|
+1. Click Web Service then Launch Template
|
|
|
+2. Name your application. ex. django-sample
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+3. In Deployment Method. Connect git repo. After that, select repo. ( ex. porter-sample-django-non-docker )
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+4. Click Main then continue
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+5. Click web then choose an image destination ( ex. mine is aws (see image) )
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+6. Then in Destination, just leave it default.
|
|
|
+7. In Additional settings, specify the container port that you use in gunicorn in Procfile ( ex. 8989).
|
|
|
+ You can configure your domain, click Configure Custom Domain then put your desire domain name (im using the default porter domain)
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+8. In Environment. Put DJANGO_ALLOWED_HOSTS that we specify on django settings. Then input your domain that you put in Configure Custom Domain.
|
|
|
+
|
|
|
+ 
|
|
|
+
|
|
|
+9. Click Deploy then wait for buildpack to finish and push to porter. (You can see it on your repository under the Action tab )
|
|
|
+
|
|
|
+ 
|