10

我的目标是使用 Apache 设置 Python 3。我最大的问题实际上是获取 mod_python.so。在我的一生中,我发现只有一个可以下载它的站点(http://www.modpython.org/),而我得到的是一堆构建和安装文件。

我找不到解释如何使用 Apache 设置 Python 3 的指南。因此,如果有人现在可以引导我完成它,互联网将最终包含解决方案!

4

5 回答 5

14

在 Apache 中使用 Python 3 需要 Django 1.6+ 和 mod_wsgi 3.4+。有关更多详细信息,请参阅scot 的回答

于 2011-05-08T21:46:33.983 回答
11

这些答案不再适用于 Django 1.6 - 它支持 python3。mod_wsgi 页面说版本 3.4 支持 python 3https://code.google.com/p/modwsgi/

不知道此时是否一切正常(当我发现时我会返回并编辑)!

答案是肯定的!

我有一个运行 Python3、Django 1.5.6、Apache2.2 和 mod_wsgi 3.4 的 AWS EC3 Ubuntu 实例

Python 3.3.4:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get install python3.3
sudo apt-get install python3.3-dev python3.3-doc idle-python3.3

ppa:fkrull/deadsnakes 是一个 apt repo,有多个可用的 python 版本 - 见https://launchpad.net/~fkrull/+archive/deadsnakes

然后我使用 pip 页面上的说明添加了 pip;http://pip.readthedocs.org/en/latest/installing.html。(请记住,此时您的 python 可能在您的路径上为 'python3.3',普通的 'python' 将指向 python 2.x!)

之后,virtualenv。然后我virtualenv'd python安装。激活并将环境的 bin/ 目录添加到 $PATH 后,我现在有了一个干净的 python3。

然后,在我激活虚拟环境之后,我做了“pip Django”和我所有其他必要的包(相当多)。我有 Django 版本 1.6.2(我一直在开发这个版本并在我的 Mac 上的 python 3.3.3 下运行没问题)。

我遇到的最大麻烦是安装 lxml,因为它需要使用 apt-get 安装 libxml2 和 libxslt(它是 C 代码的包装器),我花了几次尝试才意识到它们尚未安装(lxml 编译失败)。

在折腾我的 RDS 数据库实例启动并运行并可用之后(postgresql,当心 python3 下的 mysql,你会得到很多 python db 驱动程序的痛苦!但我的大部分问题是由于我试图理解 AWS 安全配置引起的),这是相对一帆风顺的:

sudo apt-get install apache2 apache2-threaded-dev

这会安装 apache - 接下来您需要开发包。

在那一点上,我尝试使用 mod_wsgi 的 apt 包,但我认为最好的办法是按照此处的说明自行编译和安装它 - https://code.google.com/p/modwsgi/wiki/安装说明

我在配置、制作或制作安装方面没有任何问题。确保在您的 virtualenv 激活环境中编译它。

您必须手动将配置添加到 Apache 的配置中:

# wsgi module
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
# now configure it
<Directory /my/app/path>
 <Files wsgi.py>
  Order deny,allow
  Allow from all
 </Files>
</Directory>
WSGIScriptAlias / /my/app/path/wsgi.py
WSGIPythonPath /my/app:/path/to/the/virtual/env/lib/python3.3/site-packages

并且以最广泛的方式,这一切现在都在起作用。

于 2014-03-01T07:37:59.203 回答
5

你不能用 django 解开 python3。来自 Django 常见问题解答: http: //docs.djangoproject.com/en/dev/faq/install/#can-i-use-django-with-python-3

我可以将 Django 与 Python 3 一起使用吗?

现在不行。Python 3.0 对 Python 语言引入了许多向后不兼容的更改,尽管这些更改通常对 Python 的未来是一件好事,但大多数 Python 软件赶上并能够在 Python 3.0 上运行还需要一段时间。对于像 Django 这样的大型基于 Python 的软件,转换预计至少需要一两年(因为它涉及放弃对旧 Python 版本的支持,因此必须逐步完成)。

同时,Python 开发团队将支持 Python 2.x 版本并提供错误修复和安全更新,因此在过渡期间继续使用 Python 2.x 版本不应存在任何风险。

于 2011-05-08T21:47:50.433 回答
3

1) 我们应该对新创建的项目文件做的第一件事是调整设置。使用文本编辑器打开设置文件:

gedit myproject/settings.py

在文件的底部,我们将添加一行来配置这个目录。Django 使用 STATIC_ROOT 设置来确定这些文件应该去的目录。我们将使用一点 Python 来告诉它在我们项目的主目录中使用一个名为“static”的目录:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

2)我们可以通过键入以下命令将所有静态内容收集到我们配置的目录位置:

./manage.py collectstatic

您必须确认操作。静态文件将放置在项目目录中名为 static 的目录中。

3)您需要 mod-wsgi 适配器在 Apache 安装 wsgi lib 中配置 Django,如下所示。

sudo apt-get install libapache2-mod-wsgi sudo a2enmod wsgi

4)在文件底部,/etc/apache2/sites-available/000-default.conf

WSGIPythonPath /var/www/html/myproject/ 
WSGIProcessGroup myproject
WSGIScriptAlias / /var/www/html/myproject/myproject/wsgi.py


  Alias /static /var/www/html/myproject/static/

<Directory /var/www/html/myproject/static>
    Require all granted
</Directory>

<Directory /var/www/html/myproject/myproject>
    <Files wsgi.py>
         Order deny,allow
        Require all granted
    </Files>
</Directory>

Alias /media/ /var/www/html/myproject/media/
<Directory /var/www/html/myproject/media>
Require all granted
</Directory> 
WSGIDaemonProcess myproject python-path=/var/www/html/myproject/

5)重启apache2服务器:

sudo service apache2 restart

6)现在去本地主机

答对了!你已经为 Django 和 apache 做好了准备。

于 2017-03-18T20:07:21.623 回答
2

我遇到了类似的问题,我是这样解决的:安装 LAMP:

   sudo apt-get install lamp-server^
 // then do more from here:
   //https://help.ubuntu.com/community/ApacheMySQLPHP
 // If you will run python services then : 
       apt-get install python-mysqldb 
//and for python 3 install: 
   sudo apt-get install python3-pip python-dev build-essential
   pip3.4 install mysqlclient  // for mysql       connection 
   sudo apt-get install build-essential python-dev libmysqlclient-dev

   pip3 install virtualenvwrapper
   sudo nano ~/.bash_profile
  //Set location of virtualenvs by pasting this in above: 
   export WORKON_HOME=$HOME/.virtualenvs 
   source /usr/local/bin/virtualenvwrapper.sh
//Reload startup file:
  source ~/.bash_profile
   mkvirtualenv -p /usr/bin/python3 myprojectenv
   workon myprojectenv
//then you can install packages you want using pip
//and copy myproject here

使用 python3 和 apache 在 Ubuntu 14.04 LTS 服务器上部署 Django 1.7 应用程序:

   sudo apt-get install libapache2-mod-wsgi-py3
 //then configure your apache virtualhosts( here our project is   //myproject    and environment is myprojectenv):

建议在守护程序模式下配置您的虚拟主机:

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAdmin youradmin@yourdomain.com

    DocumentRoot /home/user/.virtualenvs/myprojectenv/public_html


    <Directory /home/user/.virtualenvs/myprojectenv/myproject/myproject>

     <Files wsgi.py>
     Require all granted
    </Files>
    </Directory>

    ErrorLog /home/user/.virtualenvs/myprojectenv/logs/error.log
    CustomLog /home/user/.virtualenvs/myprojectenv/logs/access.log  combined
    WSGIScriptAlias /  /home/user/.virtualenvs/myprojectenv/myproject/myproject/wsgi.py

    WSGIDaemonProcess myproject python- path=/home/user/.virtualenvs/myprojectenv/prisec:/home/user/.virtualenvs/m yprojectenv/lib/python3.4/site-packages

    WSGIProcessGroup myproject
    Alias /static /home/user/.virtualenvs/myprojectenv/public_html/static

    <Directory /home/user/.virtualenvs/myprojectenv/public_html/static>
     Require all granted
    </Directory>
     Alias /media
  /home/user/.virtualenvs/myprojectenv/public_html/media
       <Directory        /home/user/.virtualenvs/myprojectenv/public_html/media>
     Require all granted
    </Directory>

重启阿帕奇。virtualhost 配置文件中的目录必须存在于创建的虚拟环境中。

于 2015-04-16T17:17:06.523 回答