2015-07-04 35 views
0

我使用的Ubuntu 15.04与Python 2.7,点1.5.6和virtualenv 1.11.6。如何在/ var/www/html/project_name文件夹中的virtualenv中使用pip安装Django?

我将在/var/www/html/project_name(并在该目录中工作)内创建一个Django项目,以便在Apache2中使用它。

我在project_name文件夹内创建了一个名为venv的虚拟环境,用于同步目的。

随着虚拟环境激活,我不能运行pip install django,因为我得到'权限被拒绝'的信息。所以我尝试命令sudo pip install django,但是这会在全球安装Django。

所以,运行which pip,我得到/var/www/html/project_name/venv/bin/pip。我们得到/usr/bin/pip

有人知道如何在虚拟环境中安装Django(或任何其他软件包)吗? PS:我知道可以运行sudo venv/bin/pip install django,但它看起来并不是很有用。

+0

为什么不给自己写权限/ var/www/html/project_name/venv /? –

+0

[在系统中安装pip,而不是虚拟环境](http://askubuntu.com/questions/629686/python-pip-package-not-found-on-ubuntu-15-04-running-as-live-usb )并使用'pip install django'运行它 – Gocht

+0

您应该**不要**将Django或您的项目放在/ var/www中。 –

回答

0

您的麻烦大概是您没有对此/var/www/html/project_name目录的写访问权限。您的选择是:

  1. 递归更改权限,以便您有权写入该目录。

  2. 执行如下命令:

$ sudo su 
# . venv/bin/activate 
# pip install 

我想补充什么大家都在说,我有点掠过:永远不要把敏感的东西(包括你的Django项目)的文档根目录下。您可以将其存储在/var/www/scripts之类的东西下,但不要放在文档根目录下。

另一种部署方式是使用像gunicorn这样的“主”webserver,然后只是有任何世界可见的web服务器(如Apache)反向代理gunicorn。我已经用nginx完成了这个工作,而且安装起来相当简单,唯一的缺点是你必须在系统的init脚本中设置一些额外的东西来启动gunicorn。

+0

你的消化舒适工作。谢谢! –

+1

虽然这应该起作用,但您可能需要考虑创建服务用户来部署项目。虽然这是一个较大的话题,但值得深入研究。我在我的主目录(virtualenvs和all)中开发我的Django项目。当我部署时,我有一个过程从git生产分支以Apache的相同用户身份部署到/ var/www/html/project_name,执行需求文件的pip安装,收集静态文件等。Do * not *把你的整个Django项目放在/ var/www/html下 - 这是世界可读的,并可能导致设置文件(w /密钥)变得可读。 – FlipperPA