为独特的域名托管多个Flask应用 [英] hosting multiple Flask apps for unique domains
问题描述
我有两个唯一的域(例如 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屋!