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 .

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
Поддержать автора Donate

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Ищу работу?
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

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

ДП
19 октября 2019 г. 1:45
Дмитрий Пасынков

C++ - Тест 001. Первая программа и типы данных

  • Результат:26баллов,
  • Очки рейтинга-10
AS
18 октября 2019 г. 13:27
Artem Sergeevich

C++ - Тест 001. Первая программа и типы данных

  • Результат:13баллов,
  • Очки рейтинга-10
МБ
18 октября 2019 г. 11:05
Михаил Булатов

C++ - Тест 001. Первая программа и типы данных

  • Результат:86баллов,
  • Очки рейтинга6
Последние комментарии
17 октября 2019 г. 2:17
Евгений Легоцкой

Используем, там где требуется :)
MP
17 октября 2019 г. 2:15
Mikhail Petrov

Совет: подключайте ресурсы динамически. Используйте Resource Compiler: https://doc.qt.io/qt-5/rcc.html
16 октября 2019 г. 6:45
Евгений Легоцкой

Если это не чистой воды спам, а по делу, то без проблем. Но в таком случае лучше создавайте отдельный вопрос на форуме . При создании вопроса есть поле, в котором можно указать статью…
КК
16 октября 2019 г. 6:39
Кирилл Кирилыч

А тут можно ссылки на сторонний ресурс показывать? Нашёл на habr похожую статью, только там чуток отличается код и про локальный сервер написано, нужно чтоб кто то понимающий посмотрел и своё …
Сейчас обсуждают на форуме
18 октября 2019 г. 13:30
Евгений Легоцкой

Добрый день. У вас там пробелы находятся в тексте, поэтому и не может сконвертировать. фукция map применяет float ко все символам в каждой строке. В том числе и к символам пробела. А пробе…
17 октября 2019 г. 10:31
Руслан Волшебник

Я вас понял) Спасибо ещё раз. Вы помогли мне во всём разобраться.
t
17 октября 2019 г. 4:13
tupo_chel

И тебе спасибо за помощь)
17 октября 2019 г. 2:14
Евгений Легоцкой

Добрый день. Ну да, этот вариант жизнеспособен. Есть только один момент, который вам необходимо понимать в данном случае. И чего в этой статье или нет, или сказано как-то совсем вскользь, …
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB