2017-08-31 140 views
-1

我試圖在RHEL7 Apache 2.4服務器上對我的Flask應用程序進行重播。 文件結構內/var/www/html在Apache 2.4上部署Flask應用程序的問題

/app 
app.wsgi 
    /app 
    app.py 
    /templates 
    /static 

以下在我/etc/httpd/conf/httpd.conf我有下面的代碼來設置我的項目:

<VirtualHost *> 
     ServerName 10.65.112.75:443 
     WSGIDaemonProcess app user=apache group=apache threads=5 home=/var/www/html/app/app 
     WSGIScriptAlias//var/html/app/app.wsgi 

<Directory /var/www/html/app/app/> 
     WSGIProcessGroup app 
     WSGIApplicationGroup %{GLOBAL} 
     WSGIScriptReloading On 
     Order deny,allow 
     Require all granted 
</Directory> 
     Alias /static /var/www/html/app/app/static/ 
<Directory /var/www/html/app/app/static/> 
     Order deny,allow 
     Require all granted 
</Directory> 

而且我app.wsgi包含以下內容:

#!/usr/bin/python 
import sys 
sys.path.insert(0, "/var/www/html/app/app/") 
from app import app as application 

項目本身的代碼可以在我的github版本庫here中找到。

嘗試瀏覽服務器時,我沒有收到任何錯誤。它只是沒有做任何事情。但是,從終端運行我的腳本仍然有效。

感謝您的幫助。

回答

0

有各種不正確的東西。

您有:

WSGIScriptAlias//var/html/app/app.wsgi 

,而它似乎應該是:

WSGIScriptAlias//var/www/html/app/app.wsgi 

和:

<Directory /var/www/html/app/app/> 

似乎應該是:

<Directory /var/www/html/app> 

您的VirtualHost定義也看起來不正確。您有:

<VirtualHost *> 
    ServerName 10.65.112.75:443 

如果您確實希望將其用於HTTPS連接,則缺少所有SSL指令來添加SSL證書。

ServerName通常也是一個完全合格的域名,而不是IP:PORT。端口號通常在VirtualHost指令中。例如,對於HTTP,使用方法:

<VirtualHost *:80> 
    ServerName my.host.name 

其中my.host.name是爲你的機器,你在URL中使用,而不是IP地址全部公開的主機名。

+0

謝謝你的幫助。我做了更改並將ServerName留下,因爲我沒有要使用的域。 當我嘗試通過我的瀏覽器中的IP地址訪問該站點時,它無法連接,當我使用https時,它告訴我我無權訪問該站點。我在之前設置了我的中的所有授予條件。 – Huel

+0

您是否放棄了''''?主Apache配置文件中是否還有其他''VirtualHost''定義,或者是否包含任何網站文件?如果你沒有使用主機名,並且有其他''VirtualHost''定義,Apache將默認使用它找到的第一個。 –

+0

我們發現問題:我沒有告訴服務器在端口80上聽,所以我加了'Listen 12.34.56.78:80'。既然我們希望它成爲https,我就要弄清楚如何爲我們已有的證書添加指令!儘管非常感謝你的幫助! – Huel