为独特的域名托管多个Flask应用 [英] hosting multiple Flask apps for unique domains

查看:58
本文介绍了为独特的域名托管多个Flask应用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个唯一的域(例如 domain1.com domain2.com ).我试图使用Flask在一个linode服务器(例如 12.34.567.890 )上托管两个唯一的网页(通过两个单独的flask应用程序).

I have two unique domains (eg. domain1.com and domain2.com). I am trying to host two unique webpages (via two separate flask apps) on one linode server (eg. 12.34.567.890) using Flask.

当前, domain1.com 可以工作,但是 domain2.com 为我提供了Apache2默认页面.

Currently, domain1.com works, but domain2.com gives me the Apache2 default page.

这是我到目前为止的内容:

等\ apache2 \ ports.conf:

Here's what I have so far:

etc\apache2\ports.conf:

Listen 80
Listen 8080

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet


etc \ apache2 \ sites-available \ 000-default.conf:


etc\apache2\sites-available\000-default.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


etc \ apache2 \ sites-available \ FlaskApp.conf:


etc\apache2\sites-available\FlaskApp.conf:

<VirtualHost *:80>
            ServerName domain1.com
            ServerAdmin admin@email.com
            WSGIScriptAlias / /var/www/AppOne/flaskapp.wsgi
            <Directory /var/www/AppOne/FlaskApp/>
                    Order allow,deny
                    Allow from all
            </Directory>
            Alias /static /var/www/AppOne/FlaskApp/static
            <Directory /var/www/AppOne/FlaskApp/static/>
                    Order allow,deny
                    Allow from all
            </Directory>
            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:8080>
            ServerName domain2.com
            ServerAdmin admin@email.com
            WSGIScriptAlias / /var/www/AppTwo/flaskapp.wsgi
            <Directory /var/www/AppTwo/FlaskApp/>
                    Order allow,deny
                    Allow from all
            </Directory>
            Alias /static /var/www/AppTwo/FlaskApp/static
            <Directory /var/www/AppTwo/FlaskApp/static/>
                    Order allow,deny
                    Allow from all
            </Directory>
            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

每个应用程序的


__ init __.py 相同(但在不同目录中):


__init__.py for each app is the same (but in different directories):

from flask import Flask, render_template, flash, request, url_for, redirect, session
from content_management import Content
#...etc...
import gc

TOPIC_DICT = Content()

app = Flask(__name__)

@app.route('/')
def homepage():
    return render_template("home.html")

if __name__ == "__main__":
    app.run()


\ var \ www \目录如下所示:


The \var\www\ directory looks like this:

\var\www
|
└─── AppOne
|    |    flaskapp.wsgi
|    |
|    └─── FlaskApp
|         |  __init__.py
|         |
|         └─── static
|         └─── templates
|         |        home.html
|         |
|         └─── venv
|
└─── AppTwo                  #same as AppOne
     |    flaskapp.wsgi
     |
     └─── FlaskApp
          |  __init__.py
          |
          └─── static
          └─── templates
          |        home.html
          |
          └─── venv

对不起,如果我有点冗长,但是任何指导都会有所帮助!

Sorry if I got a bit verbose, but any guidance would help!

推荐答案

无需监听端口8080.AppTwo的WSGI文件没有指向正确的目录.

No need to listen on port 8080. WSGI file for AppTwo wasn't point to the right directory.

ports.conf:

ports.conf:

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>


000-default.conf:


000-default.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


FlaskApp.conf:


FlaskApp.conf:

<VirtualHost *:80>
        ServerName domain1.com
        ServerAdmin admin@email.com
        WSGIScriptAlias / /var/www/AppOne/flaskapp.wsgi
        <Directory /var/www/AppOne/FlaskApp/>
                Order allow,deny
                Allow from all
        </Directory>
        Alias /static /var/www/AppOne/FlaskApp/static
        <Directory /var/www/AppOne/FlaskApp/static/>
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
        ServerName domain2.com
        ServerAdmin admin@email.com
        WSGIScriptAlias / /var/www/AppTwo/flaskapp.wsgi
        <Directory /var/www/AppTwo/FlaskApp/>
                Order allow,deny
                Allow from all
        </Directory>
        Alias /static /var/www/AppTwo/FlaskApp/static
        <Directory /var/www/AppTwo/FlaskApp/static/>
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


AppOne/flaskapp.wsgi:


AppOne/flaskapp.wsgi:

import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/AppOne/")

from FlaskApp import app as application
application.secret_key = 'PasswordGoesHere'


AppTwo/flaskapp.wsgi:


AppTwo/flaskapp.wsgi:

import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/AppTwo/")

from FlaskApp import app as application
application.secret_key = 'PasswordGoesHere'

这篇关于为独特的域名托管多个Flask应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆