├── README.md └── user_name_pythonanywhere_com_wsgi.py /README.md: -------------------------------------------------------------------------------- 1 | # site_deploy_py_any_notes 2 | ## Деплой Django сайта на PythonAnywhere 3 | 4 | 5 | ### Краткое описание процесса деплоя (действия, команды в консоли etc.) 6 | 7 | ### 0. Регаемся в облачном сервисе PythonAnywhere  8 | 9 | ### 1. Создаем виртуальное окружение 10 | 11 | mkvirtualenv --python=python3.8 12 | 13 | workon - активация виртуального окружения 14 | deactivate - деактивация 15 | 16 | ### 2. Проверка инсталляции встроенного установщика пакетов и админской части   17 | which pip 18 | 19 | which django-admin.py 20 | 21 | ### 3. Устанавливаем необходимые для работы вашего сайта или приложения пакеты 22 | a) pip install <имя пакета> 23 | 24 | или 25 | 26 | b) pip freeze > requirements.txt - для выгрузки всех пакетов из среды разработки 27 | 28 | Далее на PythonAnywhere, запускаем 29 | 30 | pip install -r requirements.txt 31 | 32 | ### 4. Проверяем наличие пакетов 33 | pip list 34 | 35 |
36 |   В моем случае это следующие основные пакеты: 37 | 38 |
  • appdirs 1.4.4
  • 39 | 40 |
  • asgiref 3.3.1
  • 41 | 42 |
  • attrs 20.3.0
  • 43 | 44 |
  • bcrypt 3.2.0
  • 45 | 46 |
  • certifi 2020.12.5
  • 47 | 48 |
  • cffi 1.14.4
  • 49 | 50 |
  • chardet 4.0.0
  • 51 | 52 |
  • cryptography 3.3.1
  • 53 | 54 |
  • defusedxml 0.7.0rc2
  • 55 | 56 |
  • distlib 0.3.1
  • 57 | 58 |
  • Django 3.1.5
  • 59 | 60 |
  • django-appconf 1.0.4
  • 61 | 62 |
  • django-bootstrap-toolkit 2.15.0
  • 63 | 64 |
  • django-bootstrap3 14.2.0
  • 65 | 66 |
  • django-crispy-forms 1.10.0
  • 67 | 68 |
  • django-forms-bootstrap 3.1.0
  • 69 | 70 |
  • django-registration-redux 2.9
  • 71 | 72 |
  • django-taggit 1.3.0
  • 73 | 74 |
  • django-user-accounts 3.0.2
  • 75 | 76 |
  • filelock 3.0.12
  • 77 | 78 |
  • idna 2.10
  • 79 | 80 |
  • jsonschema 3.2.0
  • 81 | 82 |
  • Markdown 3.3.3
  • 83 | 84 |
  • oauthlib 3.1.0
  • 85 | 86 |
  • pbr 5.5.1
  • 87 | 88 |
  • Pillow 8.1.0
  • 89 | 90 |
  • pip 20.3.3
  • 91 | 92 |
  • psycopg2 2.8.6
  • 93 | 94 |
  • pycparser 2.20
  • 95 | 96 |
  • PyJWT 2.0.1
  • 97 | 98 |
  • pyrsistent 0.17.3
  • 99 | 100 |
  • python3-openid 3.2.0
  • 101 | 102 |
  • pytz 2020.5
  • 103 | 104 |
  • requests 2.25.1
  • 105 | 106 |
  • requests-oauthlib 1.3.0
  • 107 | 108 |
  • setuptools 51.3.3
  • 109 | 110 |
  • six 1.15.0
  • 111 | 112 |
  • social-auth-app-django 4.0.0
  • 113 | 114 |
  • social-auth-core 3.3.3
  • 115 | 116 |
  • sqlparse 0.4.1
  • 117 | 118 |
  • stevedore 3.3.0
  • 119 | 120 |
  • urllib3 1.26.2
  • 121 | 122 |
  • virtualenv 20.4.0
  • 123 | 124 |
  • virtualenv-clone 0.5.4
  • 125 | 126 |
  • virtualenvwrapper 4.8.4
  • 127 | 128 |
  • wheel 0.36.2
  • 129 | 130 |
    131 | 132 |
    133 | 134 | 135 | ### 5. Клонируем git-репо с вашим проектом или копируем все файлы вручную на сервис PythonAnywhere 136 | #Cloning your Git Repository 137 | 138 | а) git clone https://github.com//.git 139 | 140 | б) для приватных репо 141 | 142 | #To private 143 | 144 | cd git_repo 145 | 146 | git clone https://: @github.com//.git 147 | 148 | ### 6. Команды для миграции моделей (сущностей) в БД и разворачивания вашего сайта-приложения в облачном сервисе PythonAnywhere 149 | Following commands, ex: 150 | 151 | (prdsite) 16:55 ~/prdsite/prdsite_proj $ python manage.py makemigrations 152 | 153 | (prdsite) 16:55 ~/prdsite/prdsite_proj $ python manage.py migrate 154 | 155 | (prdsite) 16:56 ~/prdsite/prdsite_proj $ python populate_mblog.py 156 | 157 | (prdsite) 16:57 ~/prdsite/prdsite_proj $ python manage.py createsuperuser 158 | 159 | python manage.py collectstatic 160 | 161 | ### 7. Настраиваем Web-сервис | PythonAnywhere 162 | a) WSGI - user_name_pythonanywhere_com_wsgi.py (см. данный git-репо) 163 | 164 | b) необходимые рабочие директории (с кодом, со статикой, медиа) и др. в разделе Web в облачном сервисе PythonAnywhere 165 | 166 | ### 8. Настраиваем settings.py под ваши нужды 167 | Зависит от функционала сайта. 168 | 169 | ### 9. Пример получившегося деплоя сайта-блога 170 | nicholasid7.pythonanywhere.com 171 | 172 | Всем, peace! 173 | 174 | Congratulations! 175 | -------------------------------------------------------------------------------- /user_name_pythonanywhere_com_wsgi.py: -------------------------------------------------------------------------------- 1 | # This file contains the WSGI configuration required to serve up your 2 | # web application at http://user_name.pythonanywhere.com/ 3 | # It works by setting the variable 'application' to a WSGI handler of some 4 | # description. 5 | # 6 | # The below has been auto-generated for your Django project 7 | 8 | import os 9 | import sys 10 | 11 | # add your project directory to the sys.path 12 | path = '/home/user_name/prdsite/prdsite_proj/' 13 | if path not in sys.path: 14 | # sys.path.insert(0, path) 15 | sys.path.append(path) 16 | 17 | os.chdir(path) 18 | 19 | # set environment variable to tell django where your settings.py is 20 | # os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 21 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 22 | 'prdsite.settings') 23 | 24 | # Import your Django project's configuration 25 | import django 26 | django.setup() 27 | 28 | # Import the Django WSGI to handle any requests 29 | import django.core.handlers.wsgi 30 | application = django.core.handlers.wsgi.WSGIHandler() 31 | 32 | # # serve django via WSGI 33 | # from django.core.wsgi import get_wsgi_application 34 | # application = get_wsgi_application() 35 | --------------------------------------------------------------------------------