You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下Apache部署Deepface Flask应用报PermissionError13错误如何解决?

问题原因

Apache2运行Flask WSGI进程的默认用户为www-data,该用户的home目录默认指向/var/www,但www-data默认对/var/www目录没有写入权限,因此Deepface初始化时尝试创建/var/www/.deepface目录时触发权限拒绝错误。

解决方案

方案1:手动创建目录并分配权限(推荐,无需修改业务代码)

直接手动创建Deepface需要的目录,给www-data用户授予对应读写权限即可,在终端执行以下命令:

# 创建目标隐藏目录
sudo mkdir /var/www/.deepface
# 将目录所有者设置为Apache运行用户www-data
sudo chown www-data:www-data /var/www/.deepface
# 赋予目录读写执行权限,支持后续写入模型文件、创建子目录
sudo chmod 755 /var/www/.deepface

执行完成后重启Apache2服务生效:

sudo systemctl restart apache2

方案2:代码中修改Deepface默认存储路径

如果不想修改服务器目录权限,可在Flask代码初始化Deepface之前,通过修改环境变量自定义Deepface的主目录,选择一个www-data有写入权限的路径即可,修改后的flaskapp.py示例如下:

import os
# *注意:该环境变量必须在导入Deepface库之前设置,否则不会生效
# 替换为你的Flask项目根目录路径,提前确保该路径对www-data开放读写权限
os.environ['DEEPFACE_HOME'] = '/path/to/your/flask/project'
from flask import Flask,request
from deepface import DeepFace

app = Flask(__name__)


@app.route("/")
def helloworld():
  return "helloworld"


@app.route("/verify",methods=['POST'])
def hello():
    base1 = request.form.get('base1')
    base2 = request.form.get('base2')
    return DeepFace.verify(base1, base2,model_name='Facenet')


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

内容的提问来源于stack exchange,提问作者Younus Mustafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:57:03