Установка Django в среде Vagrant

09.02.2014 - Alexey Nurgaliev - Эксперименты

Для размещения будет использоваться Apache с mod_wsgi.

Vagrantfile

Содержимое Vagrantfile:

1
2
3
4
5
6
7
8
9
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "precise32"
  config.vm.network :forwarded_port, guest: 80, host: 8001
  config.vm.provision "shell", path: "prov.sh"

end

Provision

Содержимое файла prov.sh:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

sudo apt-get update
sudo apt-get install -y apache2 libapache2-mod-wsgi-py3 python3.2

wget -O Django-1.6.2.tar.gz https://www.djangoproject.com/download/1.6.2/tarball/
tar xzvf Django-1.6.2.tar.gz
cd Django-1.6.2
sudo python3 setup.py install

sudo cp ./default /etc/apache2/sites-available/default
sudo service apache2 restart

Конфигурация Apache

Содержимое файла default:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<VirtualHost *:80>

WSGIScriptAlias / /vagrant/test_deploy/test_deploy/wsgi.py

<Directory /vagrant/test_deploy/test_deploy>  
	<Files wsgi.py>
		Order deny,allow
		Allow from all
	</Files>
</Directory>

Alias /static/ /vagrant/test_deploy/static/

<Directory /vagrant/test_deploy/static>
	Order deny,allow
	Allow from all
</Directory>

ErrorLog /vagrant/error.log

</VirtualHost>

Настройка проекта

Чтобы модули проекта были видны для mod_wsgi, в файл test_deploy/test_deploy/wsgi.py нужно добавить строки:

1
2
3
import sys
...
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

Чтобы статические файлы собирались в каталог test_deploy/static/, нужно в файл test_deploy/test_deploy/settings.py добавить строку:

1
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Лицензия Creative Commons
Code More Team - GitHub