Настройка Linux среды Python/Django разработки под Windows с помощью VirtualBox и PyCharm на примере Debian
Ингридиенты
- Ноутбук с предустановленной Windows 8.1: 1,5 кг
- VirtualBox: 1 литр
- Debian: 0.5 тушки (можно заменить на целую тушку Ubuntu или другой Linux, который есть в вашем магазине, но с Debian наваристее)
- VirtualBox Guest Addition: 1 горсть
- PyCharm: 1 луковица
- deb-пакеты: 5-10 пакетов
- Python модули: все, что у вас есть в холодильнике
- Эстетическое неприятие дуалбут и необходимость работы с Photoshop: по вкусу
Время приготовления: 2 суток.
Установить VirtualBox
- Скачать и установить основной дистрибутив VirtualBox.
- Скачать и установить пакет дополнений гостевой ОС (см. вставку в соответствующем пункте).
Установить Debian 7
Проще всего использовать netinst образ соответствующий архитектуре вашей системы. Варить около получаса. Не пересаливать предустановленными пакетами.
Установить гостевые дополнения в VirtualBox
Внимание! При использовании версии дополнений 4.3.10 возникает ошибка во время монтирования общих папок! https://www.virtualbox.org/ticket/12879 Скачать образ дополнений 4.3.11 https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_4.3.11-93070.iso
- Подключить скачанный образ. Устройства — Приводы оптических дисков — Выбрать образ оптического диска.
- Смонтировать cdrom
# mount /dev/sr0 /media/cdrom
- Установить make, gcc, bzip2
# apt-get install make gcc bzip2
- Запустить run скрипт с диска
# cd /media/cdrom # ./VBoxLinuxAdditions.run
Настроить общие папки
Общие папки очень удобны для разработки, позволяя избежать загрузки файлов по FTP в гостевую ОС и исполнять код прямо из папки проекта хостящей ОС.
- Добавить новую общую папку. Настройки — Общие папки — Добавить. Указать путь (например E:\Dev\django) к папке и ее имя (например, django). Поставить галку возле Создать постоянную папку.
- Примонтировать устройство в гостевой ОС
# mount -t vboxsf django /home/myuser/django -o rw,dmode=775,uid=1000,gid=1000
- Если папка появилась в нужной точке в необходимом виде, то можно добавить правило в /etc/fstab для автоматического монтирования при старте системы.
django /home/myuser/django vboxsf rw,dmode=775,uid=1000,gid=1000 0 0
ВНИМАНИЕ! Не допускай опечатку в слове vboxsf!
Установить все необходимые для разработки пакеты
- Python
# apt-get install python-dev
- MySQL
# apt-get install mysql-server mysql-client python-mysqldb libmysqlclient-dev
- PIL
# apt-get install python-imaging
- Модули Python
# apt-get install python-pip # pip install -U pip # pip install virtualenv
Настроить SSH доступ к гостевой ОС
- Установить OpenSSH сервер.
# apt-get install openssh-server
- Пробросить произвольный порт хостящей ОС на 22 порт гостевой ОС. Устройства — Сеть — Настроить сеть. По умолчанию тут уже настроен тип подключения NAT. Зайти в раздел Проброс портов и настроить запись вида: имя — ssh, порт хоста — например, 3022, порт гостя — 22. Настроить подключение в Putty к 127.0.0.1:3022.
Установить и настроить MySQL Workbench
- Скачать
- Настроить соединение по SSH через проброшенный порт и гостевого пользователя
- Использовать по назначению
Настроить проект в PyCharm
- Настроить удаленный интерпретатор
- Установить python-зависимости
- Добавить необходимую запись в C:\Windows\System32\drivers\etc\hosts хоста
- Добавить необходимую запись в /etc/hosts гостевой ОС
- Пробросить порт с хоста (например, 8800) на 8000 порт гостевой ОС
- Настроить конфигурацию запуска dev-сервера в PyCharm. Задать отображение (меппинг) локальной рабочей директории на удаленную, чтобы удаленный интерпретатор обнаружил manage.py скрипт. В качестве хоста указать 0.0.0.0 для того, чтобы dev-сервер отвечал на любом сетевом интерфейсе. Порт оставить 8000.
Установить дополнительно
- 4t Tray Minimizer — позволяет сворачивать произвольную программу в системный трей, чтобы убрать раздражающее «залипание» на VirtualBox при Alt+Tab переключении.
- Установить PostgreSQL и инструменты для работы с ней аналогично MySQL.
Побочные эффекты
- В данный момент в PyCharm (2.7) недоступны пункты меню Run Django conaole и Run manage.py task при использовании удаленного интерпретатора — тикет в трекере.