Django项目调用外部程序soffice报错subprocess.CalledProcessError: Command 'soffice --headless --convert-to pdf
1、今天,在Linux上通过libreoffice调用外部程序把docx文档转换为pdf的时候,报了一个错:
[Java framework] Error in function createSettingsDocument (elements.cxx).
javaldx failed!
Warning: failed to read path from javaldxCommand 'soffice --headless --invisible --convert-to pdf /usr/local/测试.docx --outdir /usr/local/ ' returned non-zero exit status 77.
2、首先呢,我是先通过教程在Linux上安装好libreoffice,这一步可以省略不看,主要是记录安装过程:
cenos服务器执行以下命令安装libreoffice
[root@CentOS~]# yum install libreoffice
[root@CentOS~]# yum install libreoffice-headless
[root@CentOS~]# mkdir /usr/share/fonts/simsun
##拷贝windows中的simsun.ttc到/usr/share/fonts/simsun/然后执行以下命令
[root@CentOS~]#cd /usr/share/fonts/simsun [root@CentOS~]#mkfontscale
[root@CentOS~]#mkfontdir
[root@CentOS~]#fc-cache -fv
3、其中,django项目通过wsgi关联部署到apache中,其中apache安装后默认是使用daemon用户和用户组的,在/usr/local/apache/conf底下的httpd.conf底下配置了daemon用户和用户组,具体我是参考这篇文章的:https://blog.csdn.net/yufen9987/article/details/76718290 ,其中我把底下的apcache_django_wsgi_conf的用户和用户组改为daemon,之后Django项目在授予daemon权限,利用命令:
chown -R daemon:daemon demand_jango
4、之后通过代码调用soffice外部程序,执行命令,把docx转换为pdf的时候,就报了第一点的提出的错误,原因就是因为daemon(守护精灵这个用户)没有权限执行调用soffice这个外部程序,在linux底下这个daemon是没有对应的权限去执行这个soffice外部程序的,而且也没有对应的用户目录。
5、解决办法如下:
(1)、首先,停掉apache服务,通过命令service httpd stop
(2)、接着,新增多一个用户和用户组,使用以下命令:
groupadd apache
useradd -s /sbin/nologin -g apache apache
usermod -L apachechown -R apache:apache /home/apache
(3)、接着修改apache的配置文件,/usr/local/apache/conf底下的httpd.conf:
User apache
Group apache
(4)、接着修改apcache_django_wsgi_conf的用户和用户组,改为apache:
WSGIDaemonProcess demand_jango python-path=/usr/lib64/python2.7/site-packages user=apache group=apache
(5)、接着在授予项目apache权限:
chown -R apache:apache demand_jango
(6)、启动apache服务器,使用命令:service httpd start
注:其中的话,如果这个apache部署多个项目的话,记得另外一个项目的apcache_django_wsgi_conf也要改成apache。
6、重启之后,可以会出现一种情况,就是apache跑着跑着就超时,访问不了了,主要报错信息:
Timeout when reading response headers from daemon process 'demand_jango'Resource temporarily unavailable: [client 112.134.52.134:356] mod_wsgi (pid=4589): Unable to connect to WSGI daemon process
原因:在Linux新建的一个用户的话,会默认限制访问的进程数,一般几分钟之后,就超过了进程数,就会一直刷刷刷,访问就失败超时,root用户是不做限制的
解决:
(1)、使用root用户登陆,进入到/etc/security/limits.d/,并编辑20-nproc.conf,使用命令如下:
cd /etc/security/limits.d/
vi 20-nproc.conf
增加多一行信息,指定新建的用户限制的信息:
apache soft nproc 60000
(2)、编辑 /etc/security/limits.conf,使用vi命令打开这个文件,并增加内容:
apache soft nofile 65535
apache hard nofile 65535
之后,重启服务器就可以了,具体可以看参考文章,比较详细,参考文章如下:https://blog.csdn.net/qq_35963057/article/details/81489907
Django项目调用外部程序soffice报错subprocess.CalledProcessError: Command 'soffice --headless --convert-to pdf相关推荐
- 报错subprocess.CalledProcessError: Command ‘[‘which‘, ‘g++‘]‘ returned non-zero exit status 1.
在安装torch的时候,torch安装成功,但是torch-cluster.torch-sparse等报错 Traceback (most recent call last):File "& ...
- Linux上的Django项目,下载文件报错,编码格式错误解决
1.Django中,下载文件,报编码错误,具体报错信息当时忘记记录了,这里只记录一下解决办法,网上大部分的解决方法都是说在/usr/lib/python3.6/site-packages目录底下新建一 ...
- Linux的pycharm中出现subprocess.CalledProcessError: Command ‘XXX‘ returned non-zero exit status 1.
深夜写一个神坑,虚拟机linux当中的pycharm运行subprocess调用命令行,出现subprocess.CalledProcessError: Command 'XXX' returned ...
- tornado创建项目后build vxworks报错unable to allocate heap, heap_chunk_size 587202560, Win32 error 0
tornado创建项目后build vxworks报错unable to allocate heap, heap_chunk_size 587202560, Win32 error 0 build报错 ...
- Eclipse中创建SpringBoot项目流程,及报错解决方案
Eclipse中创建SpringBoot项目流程,及报错解决方案 参考文章: (1)Eclipse中创建SpringBoot项目流程,及报错解决方案 (2)https://www.cnblogs.co ...
- vue cli 项目在打包时候报错 API fatal error handler returned after process out of memory
问题描述 vue cli 项目在打包时候报错:API fatal error handler returned after process out of memory. 问题分析 从给出的提示可以看出 ...
- 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)
一.背景 接口定义: @ApiOperation(value = "分页查询会话") @PostMapping(Routes.SESSIONS_QUERY) JsonResult& ...
- 【报错笔记】Eclipse导入Maven项目时pom.xml报错,项目上有红感叹号。
Eclipse导入Maven项目时pom.xml报错,项目上有红感叹号. 错误原因: pom.xml中依赖的jar包在本地仓库中不存在,但是在maven/conf/settings.xml中定义了阿里 ...
- 项目启动时flowable报错提示 version mismatch: library version is *, db version is *
项目启动时flowable报错提示 version mismatch: library version is *, db version is * 可能原因 1.项目中的flowable版本更换了但是 ...
最新文章
- 基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词
- ubuntu16.04中成功安装ROS后,小海龟示例
- java对象内存占用情况分析
- python shelve模块
- 什么是Web渗透测试
- java连接mysql表格_java中表格连接数据库
- 关于 TCP window size
- Ocelot中文文档-Raft(实验功能不能用于生产环境)
- Android字体设置,Roboto字体使用
- ElasticSearch
- cmip5数据读取Matlab,CMIP5数据下载-其它文档类资源
- matlab 日期加小时数_将EXCEL 中的日期 时间 导入到MATLAB坐标轴中
- 哪一款信用卡累计兑换航空里程最划算?
- 各个版本的金蝶kis的区别
- 学习记录1.0(基础算法)
- mysql给所有表添加字段
- 数独-图片定位分割数字
- vue根据表格分页,前端实现方法
- mmdetection 安装配置全过程
- pycharm下django案例的环境搭建运行