我正在用Debian Jessie和Django 1.8一起工作,试图build立Gunicorn来运行我的Django站点。 我build立了一个名为opuser的用户,并且让这个用户成为gunicorn.sock文件和包含目录的所有者: $ ls -lash /webapps/myapp/run/ total 8.0K 4.0K drwxrwxrwx 2 opuser users 4.0K Sep 1 12:24 . 4.0K drwxrwxrwx+ 7 opuser users 4.0K Sep 1 10:37 .. 现在,如果我试图运行gunicorn作为opuser : gunicorn myapp.wsgi:application –name myapp_prod –workers 3 –bind=unix:/webapps/myapp/run/gunicorn.sock –user opuser –group webapps –log-level=debug 我得到: OSError: [Errno 13] Permission denied: '/webapps/myapp/run/gunicorn.sock' 当opuser是包含目录的所有者时,为什么我得到权限被拒绝? 如果我运行ls -lash /webapps/myapp/run再次ls […]
我的应用程序有一些先决条件,这意味着从需求安装将不会工作,直到几个脚本运行。 我一直在阅读关于自定义Python容器的文档,但是它不能完全清楚如何控制.ebextensions中的脚本何时运行,以及我所做的所有testing都表明它在部署应用程序后发生,或者至less在使用pip安装来自requirements.txt的包之后。 AWS论坛上的这篇文章build议创build一个脚本文件名,将其插入到hooks文件夹中,但这并不是build议的: 将文件直接放入钩子目录是有风险的,因为这不是logging的方法,在一些容器中是不同的,并且可能在将来会改变。 我想知道是否有人已经成功地build立了脚本在requirements.txt文件之前运行,如果是的话,我可能会做错了什么。 这是我的.ebextensions文件: packages: yum: # packages needed for my app files: "/home/ec2-user/setup-script.sh": mode: "00755" owner: ec2-user group: ec2-user encoding: plain content: | #!/bin/bash echo $(date -u) >> /tmp/debug.log echo "Running as $(whoami)" >> /tmp/debug.log # rest of script commands: 01-setup-script: command: "sh -x /home/ec2-user/setup-script.sh" 部署在安装需求的过程中停止,似乎不运行脚本,或更新脚本,因为它存在于用户文件夹中。
我想在我的Django服务器上用gunicorn和Nginx运行主pipe,但是当我运行“supervisord”时,主pipe日志说: 2015-11-06 23:23:36,746 INFO daemonizing the supervisord process 2015-11-06 23:23:36,749 INFO supervisord started with pid 13766 2015-11-06 23:23:37,758 INFO spawned: 'gunicorn' with pid 13773 2015-11-06 23:23:37,767 INFO exited: gunicorn (exit status 127; not expected) 2015-11-06 23:23:38,771 INFO spawned: 'gunicorn' with pid 13774 2015-11-06 23:23:38,802 INFO exited: gunicorn (exit status 127; not expected) 2015-11-06 23:23:40,807 INFO […]
我正在使用mod_wsgi在CentOS 7上托pipe一个简单的wsgi应用程序 ,并尝试删除下面所示的隔离。 wsgi应用程序, 以下脚本是我的wsgi应用程序。 它会创build一个名为/tmp/test-wsgi.txt的文件 枚举/tmp的内容作为一个简单的json列表 码: def application(environ, start_response): status = '200 OK' headers = [('Content-Type', 'application/json')] start_response(status, headers) with open('/tmp/test-wsgi.txt', 'w+') as w: w.write('hello world') files = os.listdir('/tmp') return json.dumps(files) 当我访问我的Web应用程序时,我收到以下回复 ["test-wsgi.txt"] 太好了! 然而, 以root身份连接到相同的主机服务器, 我打开了一个shell并执行cat /tmp/test-wsgi.txt 从玩弄它,似乎在我的wsgi脚本内的任何文件系统操作(枚举/创build/套接字访问)是“环境隔离” (如chroot监狱)。 奇怪的是我没有configuration任何types的隔离。 httpdconfiguration /etc/httpd/conf.d/my-app.conf <VirtualHost *:80> DocumentRoot /opt/my-app/ WSGIScriptAlias / /opt/my-app/apache/wsgi.py <Directory /opt/my-app/apache> Order […]
El Capitan和OS X Server 5.0默认使用Python 2.7。 我已经安装了Python 3.5,但是如何让OS X Server 5.0在不破坏El Capitan对Python 2.7的依赖的情况下将其用于wsgi呢? 基本上,我想Mac OS X Server 5.0使用Python 3.5而不是Python 2.7。
我试图开发一个带有主控制器和5个节点或者工人的系统,以跟踪下一个当前的IP。 我的问题是我应该用什么来实现这种configuration? 我应该去与Python套接字或消息排队? 主要的服务器任务是跟踪下一个IP地址。 基于DHCP租用。 如果新设备连接到我的networking,服务器将根据工作人员处理的最后一个IP地址自动获知IP地址。 如果新设备连接并获得IP 192.168.1.10则服务器将知道在设备正在处理之后,下一个要查找的IP地址是192.168.1.11 。 IP_Queued = [] // if there are multiple new devices connected it will append to queued. If a new device is connected new_ip+=1 new_ip = 192.168.1 +"."+str(current_ip) IP_Queued.append(new_ip) 如果安装失败,工作人员将通知服务器,服务器将把IP附加到队列中,就像没有IP地址被跳过一样。 每个工作人员的责任是configuration一个安装有预configuration文件的安卓盒子,每一次安装都是一样的。 我需要创build多个虚拟机来隔离Androiddebugging桥来同时进行多个安装。 谢谢
我很困惑,为什么我不能让rsysloglogging通过TCP发送给它的数据,只要我用Python脚本发送数据,但是如果我通过netcat发送相同的string Rsyslog设置为接收TCP / 514上的系统日志数据:/etc/rsyslog.conf $ModLoad imtcp $InputTCPServerRun 514 /etc/rsyslog.d/LogByIP.conf $template LogByIP,"/tmp/%fromhost-ip%.log" if ($fromhost-ip != '127.0.0.1') then ?LogByIP 重新启动rsyslog。 从客户端机器执行此命令: [root@localhost ~]# echo HELLO2 |nc logbox 514 /tmp/.log的内容 Nov 18 15:36:16 HELLO2 所以rsyslog正在按预期工作。 现在,当我尝试在Python中做同样的事情时,消息永远不会写入文件。 #! /usr/bin/python import socket host='logbox' port=514 message='hello world' s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((host,port)) s.sendall(message) s.close() 在logbox上运行tcpdump,我可以看到会话设置,传输的string和会话在TCP中closures,但是“hello world”永远不会显示在日志文件中。 我在这里错过了什么?
我有一台用于无头seleniumtesting的Ubuntu机器。 我通过PHP在/var/www/tmp/random123name.py中生成一个python脚本并执行它们。 这个脚本在从命令行用户运行时工作,从web(apache www-data:www-data user)运行失败。 该脚本回忆一些系统/ python模块: from selenium import webdriver from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from time import sleep, strftime import os, json from pyvirtualdisplay import Display 此代码返回1: $python = "sudo /usr/bin/python /var/www/tmp/random123name.py"; exec($python, $output, $return); echo "OUT<pre>".print_r($output,1)."</pre>"; #returns empty echo "RET<pre>".print_r($return,1)."</pre>"; #returns 1 我用这种方式修改了/ […]
我有一个安装了python 2.6的rhel 6.6盒子。 我configuration了epel回购。 现在当我做了 "yum install -y cloud-utils cloud-init parted git", it gives me the following error. –> Finished Dependency Resolution Error: Package: python-boto-2.38.0-1.el6.noarch (epel) Requires: python-requests Error: Package: cloud-init-0.7.4-2.el6.noarch (epel) Requires: python-argparse Error: Package: cloud-init-0.7.4-2.el6.noarch (epel) Requires: PyYAML Error: Package: python-boto-2.38.0-1.el6.noarch (epel) Requires: python-six Error: Package: cloud-init-0.7.4-2.el6.noarch (epel) Requires: python-requests 即使我已经安装使用pip依赖包,我仍然得到相同的错误。 仅供参考, [root@rhel6-64bit […]
我正在计算基于instance_type的保留实例的总数,我将它作为一个关键字存储在字典中的instance_type 。 首先,我通过get_all_reserved_instances()find所有保留的实例,然后对于由此返回的每个实例,我都这样做: if each.state != 'retired': key = str(each.instance_type) res_count[key]+=each.instance_count 我也计算instance_type的基础上的instance_type总数。 首先,我通过get_all_instances()find所有实例,然后为每个instance_type执行此操作: if each.state == 'running': key = str(each.instance_type) all_count[key]+=1 现在为一个实例types返回: all_count = 17 res_count = 19 res_count大于all_count怎么可能? 如果没有ondemand实例, res_count可以等于all_count ,但是为什么这比all_count ? 一个非退休的实例也可以不运行? 如果是这样,那么我认为这是这种差异的情况。 使用状态有什么错误吗?还有其他原因吗?