Python + Flask 搭建服务器后台,用 Apache 部署后代码中的可执行程序不显示如何解决?

RT,最近在自学 python 后台程序开发,用 flask 搭建了一段代码,正常在 IDE 和 pycharm 运行都正常,程序中有一句代码是用命令行运行电脑上的一段程序,最近想脱离开发环境搭建起来,在电脑上用 apache+mod wgsi 搭了起来,但是请求发过来以后运行的程序没有前段显示,请问这是啥情况,google 查了好久都查不到。


Python + Flask 搭建服务器后台,用 Apache 部署后代码中的可执行程序不显示如何解决?
19 回复

看下日志 请求到哪里了


我遇到类似问题,通常是因为Apache的工作目录和权限设置导致的。Flask应用在Apache下运行时,当前工作目录可能不是你的项目目录,导致找不到可执行文件。

关键是要用绝对路径来调用可执行程序。假设你的可执行文件叫 my_program,放在项目根目录的 bin/ 文件夹里:

import os
import subprocess
from flask import Flask

app = Flask(__name__)

# 获取项目根目录的绝对路径
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
EXECUTABLE_PATH = os.path.join(BASE_DIR, 'bin', 'my_program')

@app.route('/run')
def run_program():
    try:
        # 使用绝对路径调用
        result = subprocess.run(
            [EXECUTABLE_PATH, 'arg1', 'arg2'],
            capture_output=True,
            text=True,
            check=True
        )
        return f'程序输出:{result.stdout}'
    except subprocess.CalledProcessError as e:
        return f'执行失败:{e.stderr}', 500
    except FileNotFoundError:
        return f'找不到可执行文件:{EXECUTABLE_PATH}', 500

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

另外检查Apache配置,确保有执行权限。在Apache的虚拟主机配置里(比如 /etc/apache2/sites-available/your-site.conf),确认WSGI进程有正确的权限:

WSGIDaemonProcess your_app user=www-data group=www-data threads=5
WSGIScriptAlias / /var/www/your_app/app.wsgi

<Directory /var/www/your_app>
    WSGIProcessGroup your_app
    WSGIApplicationGroup %{GLOBAL}
    Require all granted
</Directory>

部署后重启Apache:sudo systemctl restart apache2

总结:用绝对路径调用程序并检查Apache权限。

还是不要用 Apache 了?换 Nginx 吧。flask 的 app 生产上一般会用 gunicorn 起

运行可执行程序不显示,是什么意思…
你是说调用了一个 exe ?

别用阿帕奇

你的问题都没问清楚
--------------------------------
运行的程序没有前段显示
--------------------------------
这是啥意思, 是说运行的程序会显示数据到网页?

不加个日志 debug ?另外推一波 nginx+waitress 替换 Apache+mod_wgsi

https://www.findhao.net/easycoding/2218.html 在 Nginx 上部署 Python Flask 应用

为啥都推荐 nginx,apache 怎么了

日志里没有记录,情况是这样的,外部程序可以运行起来,但是无界面,只能在任务管理器里看到进程

对的,代码里调用了一个 exe 程序,但是程序运行起来没有显示,只能看到进程

字打错了,是运行的外部程序没有界面,只有进程

外部程序能运行… debug 看不出来

我去了解一下,多谢

之前也是用 bottle 写的程序,在 Apache+mod_wgsi 上居然运行不起来,因为程序里调用了很多子进程,最后折腾半天,换了 waitress 就可以了,还方便不用配置那么多

windows 建议用 iis,不要用 Apache 和 nginx

用 Apache 不好理解啊,谁家的教程这么写的?

apache 不好用么? google 搜到的…

碰到了和 LZ 相同的问题,在任务管理器里面看程序是启起来了,但是就是不弹出程序界面。请问一下最后是怎么解决的吗?

回到顶部