繁体   English   中英

为独特的域名托管多个Flask应用

[英]hosting multiple Flask apps for unique domains

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

目前, domain1.com可以运行,但是domain2.com给我Apache2默认页面。

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

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:

<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:

<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是相同的(但在不同的目录中):

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 \\目录如下所示:

\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

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

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

ports.conf:

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

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


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:

<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:

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:

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM