Django - Урок 044. Установка и настройка Django на Mac OS

Mac, Homebrew, Nginx, MacOS, Python, Apple, Django

Предлагаю рассмотреть процесс установки и настройки проекта Django на Mac OS X на основе существующего проекта.

Некоторые шаги будут похожи на те, которые уже выполнялись в статье по настройке Django для Ubuntu .

Настройка виртуальной среды

  1. Установка python 3
    brew install python3
  2. Установка pip
    sudo easy_install pip
  3. Установка virtualenv для создания виртуальных окружений
    sudo pip3 install virtualenv
  4. Установка виртуального окружения для проекта
    virtualenv project_env --python=python3
  5. Переходим в каталог виртуальной среды проекта и клонируем репозиторий.
    cd project_env
      git clone git@bitbucket.org:MyUser/project.git
  6. Также клонируем подмодули, если в вашем проекте используются git submodule
    cd project
      git submodule init
      git submodule update
  7. Надеюсь, что вы используете requirements.txt файл, поскольку настал момент для установки всех необходимых в проекте пакетов
    pip install -r requirements.txt

Установка необходимой версии Python

В том случае, если вам требуется какая-то конкретная версия python, например, в том случае когда репозитории вашего production сервера не имеют последней версии, то необходимо настроить вашу Mac OS X специально для работы с необходимой версией.

brew install pyenv
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
brew install zlib
pyenv install 3.6.7

Если вам не удаётся установить python и возникает следующая ошибка

BUILD FAILED (OS X 10.14.4 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274
Results logged to /var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274.log

Last 10 log lines:
  File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

то создаём файл .zshrc со следующим содержимым

# For compilers to find zlib you may need to set:
export LDFLAGS="${LDFLAGS} -L/usr/local/opt/zlib/lib"
export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/zlib/include"

# For pkg-config to find zlib you may need to set:
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/zlib/lib/pkgconfig"

Далее выполняем оставшиеся действия

source .zshrc
pyenv install 3.6.7

Проверим доступные версии python

pyenv versions

Настроим требуемую версию python

pyenv local 3.6.7
pyenv global 3.6.7

Проверим версию python, которая теперь используется в вашей Mac OS X.

python --version

После чего вам необходимо будет повторить все действия из настройки виртуального окружения, начиная шага 4, если вы уже установили virtualenv. Либо полностью повторить все те шаги.

Установка и настройка PostgreSQL

  1. Удаление предыдущей версии Postgres
    brew uninstall --force postgresql
  2. Удаление всех файлов Postgres
    rm -rf /usr/local/var/postgres
  3. Установка Postgres с использованием Homebrew
    brew install postgres
  4. Установка PostGIS с использованием Homebrew
    brew install postgis
  5. Запуск сервера PostgreSQL. Может потребоваться запускать данную команду каждый раз, когда будете заниматься разработкой сайта.
    pg_ctl -D /usr/local/var/postgres start
  6. Создание базы данных проекта. Многие из этих шагов мы уже проходили в самой первой статье по настройке Django на компьютере под управлением ОС
    psql postgres
      CREATE DATABASE myproject;
      CREATE USER myprojectuser WITH PASSWORD 'password';
      ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
      ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
      ALTER ROLE myprojectuser SET timezone TO 'UTC';
      GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
      \q

Установка и настройка Nginx

Для раздачи статического контента у меня используется Nginx, поэтому и на development машине также установим Nginx.

brew install nginx
sudo brew services start nginx

Настройка конфигурации Nginx

На данном шаге необходимо настроить Nginx сервер. Для чего нужно отредактировать файл nginx.conf, а также создать файл настроек вашего сервера в каталоге servers.

nano /usr/local/etc/nginx/nginx.conf

Удалим содержимое файла и добавим следующую информацию.

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    include servers/*;
}

Далее создадим файл myproject

touch /usr/local/etc/nginx/servers/myproject

И добавляем содержимое, которое будет выглядеть следующим образом.

server {
    listen 80;
    server_name 111.222.333.44; # здесь прописать или IP-адрес или доменное имя сервера

    location /static/ {
        root /Users/<user>/myprojectenv/myproject/myproject/;
        expires 30d;
    }

    location /media/ {
        root /Users/<user>/myprojectenv/myproject/myproject/;
        expires 30d;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Затем перезапустим сервер Nginx

sudo brew services restart nginx

Заключение

А далее уже не забываем выполнить миграцию базы данных, сбор статических файлов через collectstatic и прочие процедуры, требующиеся в вашем проекте.

Для Django рекомендую VDS-сервера хостера Timeweb .

Виртуальный хостинг со скидкой 10 процентов
Виртуальный хостинг со скидкой 10 процентов
EVILEG предлагает надёжный хостинг со скидкой 10% на виртуальный хостинг и 5% на VPS
Поддержать автора Donate

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
D
16 августа 2019 г. 12:58
Damir

C++ - Тест 003. Условия и циклы

  • Результат:92баллов,
  • Очки рейтинга8
D
16 августа 2019 г. 12:46
Damir

C++ - Тест 005. Структуры и Классы

  • Результат:75баллов,
  • Очки рейтинга2
u
14 августа 2019 г. 14:55
unrealproro

C++ - Тест 005. Структуры и Классы

  • Результат:83баллов,
  • Очки рейтинга4
Последние комментарии
D
17 августа 2019 г. 9:04
Damir

github ChekableTView Правой групповая смена значения при перетаскивании левой как обычно.
13 августа 2019 г. 10:43
Евгений Легоцкой

Самая главная проблема в том, что у вас это константные переменные, и инициализируется они один единственный раз при запуске программы. Поэтому делать динамический перевод в таком случае у …
Сейчас обсуждают на форуме
18 августа 2019 г. 3:22
Ruslan Polupan

Т.е. таблицы в БД к которым обращается приложение могут отсутсвовать?
15 августа 2019 г. 3:19
Михаиллл

Плюсы и qml отличаются, с++ логичней
14 августа 2019 г. 8:20
Евгений Легоцкой

Да это не столько баги QML, сколько поведение JavaScript, который используется в нём. Из-за отсутствия строгой типизации получаем некоторые проблемы с преобразованием типов. в итоге, на первый в…
14 августа 2019 г. 2:33
BlinCT

Ошибка найдена) недосмотрел.
13 августа 2019 г. 3:52
Евгений Легоцкой

Бери остаток от деления #include <QCoreApplication>#include <QTime>#include <QDebug>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QTime time…
Ищу работу?
14,000.00 руб. - 40,000.00 руб.
Разработчик Qt
Annino, Moscow Oblast, Russia
5,000.00 руб. - 15,000.00 руб.
Дизайнер
Moskovskiy, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB