我通过 vagrant 和 virtual box 设置了我的虚拟环境。我使用 Aptana IDE 进行 django 开发,我想知道是否有办法将 aptana 中的新项目与 VM 集成。我以前使用过 virtualenv,我只是将我的 python 路径更改为包含我的 virtualenv 目录。但是,对于虚拟盒子,我不知道该怎么做。我认为这将是相同的程序,但我不这么认为。使用 Virtualenv,我能够找到我在该目录中创建的项目。当我通过 Vagrant+Virtual Box 创建项目时,我无法在任何地方找到项目目录......它不在我为虚拟环境设置的专用目录中。请帮忙。谢谢。
1 回答
你可以用 Vagrant 做到这一点。让我给你举个例子:
一、项目结构:
/yourdjangoapp
/... # all your app stuff here
/manage.py
/vagrant
/provisioning
/init.sh
/Vagrantfile
/.project
二、/Vagrantfile(带有默认精确64框的简单示例):
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.provision :shell, :path => "vagrant/provisioning/init.sh"
config.vm.network :forwarded_port, guest: 8000, host: 8000
end
三、/vagrant/provisioning/init.sh
if [ ! -f /home/vagrant/.vm_initialized ]
then
rm -rf /var/www
ln -fs /vagrant /var/www
touch /home/vagrant/.vm_initialized
fi
发生了什么?
Vagrant 为每个 vm 创建一个共享文件夹,默认为 quest os 中的“/vagrant”,以及您在主机上放置 Vagrantfile 的文件夹。
我们将配置 shell 脚本添加到我们的 Vagrant 配置中,因此 Vagrant 将在启动 VM 后运行它
在 /vagrant/provisioning/init.sh 我们为共享文件夹设置了一个符号链接到 /var/www (只是一个例子,所以我们可以使用 apache 访问它而无需进一步配置)
由于 Vagrant 将在每个“vagrant up”上运行它,我们必须检查 vm 是否已经初始化(init.sh 中的 if-block)
然后去哪儿?
好吧,您可以使用以下命令启动您的开发服务器:
python /var/www/yourdjangoapp/manage.py runserver 0.0.0.0:8000
并且应该能够通过您的主机访问它
http://localhost:8000/
您现在可以使用您最喜欢的编辑器在主机上编辑您的项目(放置在 /yourdjangoapp 中)。
对于新项目,创建/复制项目结构。当 Vagrant 为每个项目创建一个新的 VM 时,来宾中的共享文件夹始终链接到您当前项目的文件夹。
在没有供应商的情况下工作
当前示例显示了我使用的设置。我的 init.sh 包括安装包、拉 GIT 存储库等内容。
当然,您可以省略提供部分并直接使用来宾操作系统中 /vagrant 中可用的共享文件夹。因此,您应该能够使用以下命令启动开发服务器:
python /vagrant/yourdjangoapp/manage.py runserver 0.0.0.0:8000
高温高压
基督教