Предлагаю рассмотреть процесс установки и настройки проекта Django на Mac OS X на основе существующего проекта.
Некоторые шаги будут аналогичны тем, которые уже были выполнены в [статье по установке Django для Ubuntu] (https://evileg.com/en/post/3/).
Настройка виртуальной среды
-
Установка python 3
- brew install python3
-
InstУстановкаall pip
- sudo easy_install pip
-
Установка virtualenv и создание виртуальной среды
- sudo pip3 install virtualenv
-
Настройка виртуальной среды для проекта
- virtualenv project_env --python=python3
-
Перейдите в каталог виртуальной среды проекта и клонируйте репозиторий.
- cd project_env
- git clone git@bitbucket.org:MyUser/project.git
-
Мы также клонируем подмодули, если ваш проект использует подмодуль git.
- cd project
- git submodule init
- git submodule update
-
Я надеюсь, что вы используете файл requirements.txt, потому что пришло время установить все необходимые пакеты в проект
- pip install -r requirements.txt
Установите необходимую версию Python
Если вам нужна определенная версия python, например, если в репозиториях вашего рабочего сервера нет последней версии, вам необходимо настроить 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
-
Удаление предыдущей версии Postgres
- brew uninstall --force postgresql
-
Удалить все файлы Postgres
- rm -rf /usr/local/var/postgres
-
Установка Postgres с помощью Homebrew
- brew install postgres
-
Установка PostGIS с помощью Homebrew
- brew install postgis
-
Запустите сервер PostgreSQL. Вам может понадобиться запускать эту команду каждый раз, когда вы разрабатываете сайт.
- pg_ctl -D /usr/local/var/postgres start
-
Создание базы данных проекта. Многие из этих шагов были описаны в самой первой статье по настройке 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 для распространения статического контента, поэтому мы также установим Nginx на машину для разработки.
- brew install nginx
- sudo brew services start nginx
Настройка конфигурации Nginx
На этом этапе вам необходимо настроить сервер Nginx. Для чего вам необходимо отредактировать файл nginx.conf, а так же создать файл настроек вашего сервера в каталоге серверов.
- 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 и другие необходимые в вашем проекте процедуры.
For Django, I recommend Timeweb VDS-server .