Skip to main content

006 A Guide to Deploy Your Django Application on PythonAnywhere

Deploy Django on Python Anywhere
A step-by-step guide to deploy your django application on PythonAnywhere.
  1. Go to pythonanywhere.com
  2. Click on Console Tab
  3. Click on Bash Link
  4. Activate virtual environment with the following command: mkvirtualenv --python=python3.5 myproj
  5. use the command pip list to view all the packages that are already installed
  6. Use pip install django to install latest version of Django
  7. Get the application running in the instance by cloning from Github. Use git clone <HTTPS link> You will find the HTTPS link by clicking on Clone or download button in your github repository
  8. Use command ls to view all files and folders in the virtual environment.
  9. go into the project folder using cd <project_folder>
  10. Use command ls to view all files and folders inside the project folder
  11. Keep going inside until you find manage.py file
  12. Once you find manage.py, use the following command python manage.py migrate
  13. My application uses Pillow library so I get an error. I will install Pillow using the command pip install Pillow and then run python manage.py migrate again
  14. I have an app inside my project named mainApp, so I will use makemigrations command: python manage.py makemigrations mainApp
  15. Then run python manage.py migrate again
  16. Now we create superuser with the following command: python manage.py createsuperuser
  17. Fill in the username, password, email, etc. to create superuser
  18. If you get an error such as No module named argon2, you must install argon2 using following command: pip install django[argon2]
  19. Once argon2 is installed, create superuser using the command python manage.py createsuperuser
  20. Next go to pythonanywhere.com and click on Web tab
  21. Create a custom app by clicking on "Adda new webapp". Click Next. Click on "Manual configuration (including virtualenvs)". Click on Python 3.6. Hit Next
  22. It will first create a default application
  23. Scroll down to Virtualenv section and enter path to virtualenv
  24. Enter the follow: /home/<your user name>/.virtualenvs/<your virtual environment name>
  25. Click on "Start a console in this virtualenv" that appears now
  26. In the console type: ls
  27. Go inside folders using cd <folder name> until you find manage,py
  28. Type pwd and copy the path you get
  29. Go to anywherepython.com > web > under code section change source code to the path you have
  30. Click on the WSGI configuration file
  31. Delete lines between 13 and 47
  32. Go to # +++++++++++ DJANGO +++++++++++ and uncomment or add the following
    • import os
    • import sys
    • path = '/home/vinitk/django-signup-login-and-admin/RefOne'
      • Remember to change path = '/home/vinitk/mysite' to your path
    • if path not in sys.path:
    •     sys.path.append(path)
    • os.chdir(path)
    • os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<path to settings>")
      • In my case it is RefOne.settings
    • import django
    • django.setup()
    • from django.core.wsgi import get_wsgi_application
    • application = get_wsgi_application()
  33. Click on Save
  34. Go to Web tab > Click on the Configuration for link
  35. If you find an allow host error, then add the configuration for link to settings.py as follows
    • ALLOWED_HOSTS = ['vinitk.pythonanywhere.com', ]
  36. Push it to github and pull from github in pythonanywhere console
  37. Under Web Tab click on Reload button and then click on configuration for link
  38. Now we setup static for static files to be accessible for the application
  39. To not let django display errors to users change DEBUG to False in settings.py file. To do this either change on your PC and git push to github and git pull to pythonanywhere server or go to Files Tab and go to settings.py and make changes in the editor provided by python anywhere.
  40. Click Save and under Web Tab reload the application
Your website is running and hosted on cloud server provided by PythonAnywhere.

Comments

Popular posts from this blog

Two Ways of rendering in React Examples

Two Ways of rendering in React Examples 1 - Render twice HTML < div id = "p1" ></ div > < div id = "p2" ></ div > CSS . person { display : inline - block ; margin : 10px ; border : 1px solid # eee ; box - shadow : 0 2px 2px # ccc ; } JAVASCRIPT (Babel) function Person ( props ) { return ( < div className = ' person "> < h1 >{ props . name }</ h1 > < p > Age :{ props . age }</ p > </ div > ); } ReactDOM . render (< Person name = "VK" age = "29" />, document . querySselector ( '#p1' )); ReactDOM . render (< Person name = "HK" age = "28" />, document . querySselector ( '#p2' )); 2 Render all at once HTML < div id = "app" ></ div > CSS . person { display : inline - block ; margin : 1...

Difference between .exec() and .execPopulate() in Mongoose?

Here I answer what is the difference between .exec() and .execPopulate() in Mongoose? .exec() is used with a query while .execPopulate() is used with a document Syntax for .exec() is as follows: Model.query() . populate ( 'field' ) . exec () // returns promise . then ( function ( document ) { console . log ( document ); }); Syntax for .execPopulate() is as follows: fetchedDocument . populate ( 'field' ) . execPopulate () // returns promise . then ( function ( document ) { console . log ( document ); }); When working with individual document use .execPopulate(), for model query use .exec(). Both returns a promise. One can do without .exec() or .execPopulate() but then has to pass a callback in populate.

Python - Mathematical Functions - Hexadecimal, Binary, Exponential, Absolute, Round

šŸ Some mathematical functions are in-built in python. Here are some of them. Convert Decimal to Hexadecimal hex(246) Output: '0xf6' hex(512) Output: '0x200' 0x is prefix to all hexadecimal numbers in output. The number after 0x is the hexadecimal value. Convert Decimal to Binary bin(1234) Output: '0b10011010010' bin(246) Output: '0b11110110' bin(512) Output: '0b1000000000' Exponential Function pow() function is similar to num1**num2, but it comes useful when you want to execute (num1**num2)%num3. Passing three arguments to pow(), does this. pow(3,4) Output: 81 This works just like 3**4 pow(3,4,5) Output: 1 But this, works equivalent to (3**4)%5. Either of the two ways can be used. At this point I feel (3**4)%5 is better, as anybody reading the code will understand what is being done immediately. While with pow(2,3,4), the person may have to refer to documentation to understand how this function works. Absolute Value The function abs() is used ...