OSError:[Errno 98]地址已在使用中,正在Apache2上运行Flask应用程序

时间:2019-09-22 22:27:21

标签: python flask apache2

我的烧瓶代码位于 app.py

/some code//


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

并且我已经按照路径/var/www/AutomateTests

设置了我的 wsgi文件
#!/usr/bin/python3.6


import sys
import logging

sys.path.insert(0,"/var/www/AutomateTests/")

from app import app as application
application.root_path = '/var/www/AutomateTests/'

我有/etc/apache2/sites-available/automate_tests.conf

VirtualHost *:80>
                ServerName htstool.arubanetworks.com
                ServerAdmin admin@htstool.arubanetworks.com
                ServerAlias htstool.arubanetworks.com
                ErrorLog /var/log/apache2/hts-error.log
                CustomLog /var/log/apache2/htstool-access.log combined
                WSGIDaemonProcess AutomateTests user=www-data group=www-data threads=5
                WSGIScriptAlias / /var/www/AutomateTests/automate_tests.wsgi
                <Directory /var/www/AutomateTests>
                WSGIProcessGroup AutomateTests
                WSGIApplicationGroup %{GLOBAL}
                Order allow,deny
                        Allow from all
                </Directory>
                LogLevel info
</VirtualHost>

我已经正确设置了所有内容,并且已经在这个问题上停留了几周了。可以帮我如何在服务器上启动它。我缺少步骤了吗?

im设置与我的端口相同的错误正在使用中,尽管它不是! 看到我的错误图片

enter image description here

但是您可以看到我的端口是空的,没有被使用。我使用命令netstat -ntlp

检查

see my ports are listening and not established

有人可以请帮助我。我被卡住了,在完全检查之前不要将其标记为已回答。我尝试了所有答案,但它们不起作用!请耐心等待,并让其他人帮助我,因为我自己做不到。

我的服务器运行正常,我看到默认的ubuntu页面,这意味着我的apache2服务器运行正常,因此配置或端口出了问题

1 个答案:

答案 0 :(得分:0)

当我看到这件事时,我想到两件事。

  1. 您是否已在服务器上安装并运行Apache? Apache可能正在侦听端口80并阻止Python脚本绑定到该端口,但是运行netcat的方式不会显示此信息。您可以在[sever_ip]:80进行检查。
      

    但是您可以看到我的端口是空的,没有被使用。我使用命令netstat -ntlp

    进行检查

请注意该命令的输出的第一行:(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Apache以提升的特权运行,因此您需要以root用户身份运行(将sudo附加到命令的开头)以查看其内容。端口绑定。我敢打赌,这就是问题所在。解决此问题后,您可能会遇到以下问题:

  1. 您是否以root用户身份运行脚本?在Linux上,您需要使用sudo绑定到端口0到1024(如here所述)。

还有另一件事,与脚本无关,但看起来您正在屏幕截图中使用AWS EC2(如果我错了,请纠正我)。如果您希望能够从公共互联网通过端口80访问该实例,则需要确保您allow it in the Security Group。我知道这会对首次使用AWS EC2的人们造成一些混乱,这确实对我造成了困扰。

希望这会有所帮助!