【问题标题】:How to run Flask + Apache app with Anaconda Python version?如何使用 Anaconda Python 版本运行 Flask + Apache 应用程序?
【发布时间】:2018-05-30 13:17:05
【问题描述】:

我的服务器中有两个 Python 版本:Python 默认版本,已经存在于 Ubuntu Server 16.04 和 Anaconda Python 中。 当我使用 Apache 运行 Flask 应用程序时,因为它在用户 www-data 中运行,所以应用程序默认运行在 Python 中,但我必须在 Anaconda 安装中运行。 如何配置使用 Anaconda Python 版本以及如何在此版本中安装新模块? Anaconda的安装路径是/home/wandre/anaconda2

【问题讨论】:

  • 或许,使用virtual environments
  • 但是,如何设置Apache使用某些环境?
  • 现在您有一个 Windows 用户正在为您搜索:thecodeship.com/deployment/… ;))
  • 删除系统打包的 mod_wsgi。针对 Anaconda 从源代码重新编译 mod_wsgi。最好使用 pypi.org/project/mod_wsgi 中描述的 pip install 方法。因为 mod_wsgi 必须针对您要使用的 Python 版本/发行版进行编译,所以需要重新编译。

标签: python flask apache2 anaconda mod-wsgi


【解决方案1】:

这是让 Apache 在 Anaconda 环境中运行 python 模块以便 Flask 应用程序可以运行的一种方法。

首先是安装。使用命令sudo apt-get install apache2 apache2-bin apache2-dev 安装 Apache。然后,在 /opt 目录下安装 Anaconda 作为 sudo。在 /opt/anaconda2 上安装 Anaconda 后,安装 conda 包如下:

sudo su  # Login as superuser
export PATH=/opt/anaconda2/bin:$PATH # Add conda to your path
conda install -c anaconda flask
pip install mod_wsgi 
mod_wsgi-express install-module # the outputs to this is used for Apache configuration in the next step

现在您需要更新 Apache 配置。这涉及更新三个文件:

  1. wsgi.load

    打开文件 /etc/apache2/mods-available/wsgi.load 并添加以下内容(这是mod_wsgi-express install-module 的输出,因此您的可能会有所不同)

    LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi-py27.so 
    

    如果 LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so 最初包含在此文件中,请将其注释掉。否则(至少从我检查的内容来看),apache 服务器将运行默认的 python 而不是 Anaconda 中的。接下来,启用 wsgi mod:

    sudo a2enmod wsgi 
    
  2. wsgi.conf

    打开文件 /etc/apache2/mods-available/wsgi.conf 并添加以下内容

    <IfModule mod_wsgi.c>
        WSGIPythonHome /opt/anaconda2
    </IfModule>
    
  3. 000-default.conf(您的文件名可能不同)

    打开文件 /etc/apache2/sites-available/000-default.conf 并添加以下内容

    WSGIDaemonProcess flaskapp python-home=/opt/anaconda2 python-path=/var/www/flask
    WSGIScriptAlias / /var/www/flask/flaskapp.wsgi
    <Directory /var/www/flask>
        WSGIProcessGroup flaskapp
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
    

一切就绪。

请注意,我找不到设置“Anaconda + Flask + Apache”的教程,所以我参考了“Anaconda + Django + Apache”上的帖子。

【讨论】:

  • 你不应该需要WSGIPythonPath /opt/anaconda2/lib/python2.7/site-packages。您也不需要WSGIScriptReloading On,因为这是默认设置。对于 Apache 2.4,请使用 Require all granted。你不需要OrderAllow
  • @GrahamDumpleton 您的建议非常有效。谢谢!我的帖子现在更新了。
猜你喜欢
  • 2016-10-11
  • 2015-01-16
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多