我正在尝试制作一个使用Python和Flask制作的“ Hello world”应用程序。我希望将它与Apache2部署在端口8080上。
到目前为止,我的Apache2服务器在端口80上监听http,在端口443上监听https。它在80上没有任何功能,因此我首先尝试在Flask应用中使用它。
按照Flask的文档,我在Apache2上安装了wsgi模块,并在Apache2上创建了Flask配置,并在端口80上附加了VirtualHost。重新启动了Apache2,一切都很好:我在浏览器中看到了“ Hello world”。我很高兴。
然后,我决定只从端口80移到端口8080。我在Apache的ports.conf中添加了Listen指令,在配置中将VirtualHost *:80更改为VirtualHost *:8080。然后我重新启动了Apache2。从那时起,它根本不起作用!
在/var/log/apache2/error.log或其他任何地方,我绝对没有错误消息。
我再次(或无限地)检查了Apache2 ports.conf是否侦听8080。 我在Apache2中检查了我的VirtualHost是否也在8080上。 我检查了8080在重新启动Apache2时是否正在监听...
我不知道什么是行不通的。为什么这在端口80而不在端口8080 ...上起作用?我还有一个443 SSL端口,带有一个VirtualHost,用于同一服务器和ServerName上的另一个应用程序。端口8080可能存在冲突(我必须说我不是Apache2的专家)。
以下是有关我的配置和代码的信息:
Apache2 ports.conf:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.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
我的虚拟主机的Apache2 conf:
<VirtualHost *:8080>
ServerName aaa.bbb.fr
#DocumentRoot /var/www/flaskapps/helloworldapp/
LogLevel trace5
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
WSGIDaemonProcess helloworldapp user=www-data group=www-data threads=5
WSGIScriptAlias / /var/www/flaskapps/helloworldapp/helloworldapp.wsgi
<Directory /var/www/flaskapps/helloworldapp>
WSGIProcessGroup helloworldapp
WSGIApplicationGroup %{GLOBAL}
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Helloworldapp.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def helloworldapp():
return 'Hello, World!'
if __name__ == "__main__":
app.run(port=8080, debug=True)
(端口= 8080似乎无效:它不会阻止我的代码在端口80上运行)
Helloworldapp.wsgi:
#!/usr/bin/python
import sys
sys.path.insert(0, '/var/www/flaskapps/helloworldapp')
from helloworldapp import app as application
netstat -lntp的结果:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -