标签: python

让 mod_wsgi 使用 python2.7.2 而不是 python2.6?

我正在运行 Ubuntu 10.04.1 LTS,它预装了 python2.6,但我需要用 python2.7.2 替换它。

(原因很简单,2.7 有很多从 3 向后移植的特性)

我已经安装了 python2.7.2 使用

./configure
make
make altinstall
Run Code Online (Sandbox Code Playgroud)

altinstall 选项将它安装到 /usr/local/lib/python2.7 并将解释器放置在 /usr/local/bin/python2.7 中,而不涉及系统默认版本

然后为了帮助 mod_wsgi 找到 python2.7,我将以下内容添加到 /etc/apache2/sites-available/wsgisite

WSGIPythonHome /usr/local
Run Code Online (Sandbox Code Playgroud)

我启动了 apache 并运行了一个测试 wsgi 应用程序,但是迎接我的是python 2.6.5 而不是 Python2.7

后来我替换了默认的 python simlink 指向 python 2.7

ln -f /usr/local/bin/python2.7 /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

现在在控制台上输入 'python' 会打开 python2.7 但不知何故 mod_wsgi 仍然会选择 python2.6

接下来我尝试,

PATH=/usr/local/bin:$PATH
export PATH
Run Code Online (Sandbox Code Playgroud)

然后快速重启apache,但又是python2.6!


这是我的 $PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/sites-available/wsgisite 的内容

WSGIPythonHome /usr/local


<VirtualHost *:80>

    ServerName wsgitest.local
    DocumentRoot /home/wwwhost/pydocs/wsgi
    <Directory /home/wwwhost/pydocs/wsgi>
        Order …
Run Code Online (Sandbox Code Playgroud)

python django mod-wsgi

5
推荐指数
1
解决办法
1万
查看次数

在使用 VirtualEnv 时将 Celery 作为守护进程运行

我已经在我的 amazon linux 服务器上设置并测试了 celery,使用 mysql 作为消息后端,并且在直接运行程序时它工作正常。我的 python 项目和 celery 安装位于 virtualenv 中。但是,如果我尝试使用此处的脚本来守护 celery ,该程序将拒绝在后台运行。

我正在使用 CELERYD="/opt/apps/myenv/[celeryd 路径]" 将 celery 的 virtualenv 安装位置传递给配置文件中的守护程序,这等同于在启动 celeryd 时使用标志 --cmd。

脚本总是在启动工作节点 1 后停止并等待,就好像我是直接运行程序而不是对其进行守护程序一样。芹菜此时处于活动状态,但在我关闭终端窗口或按 ctrl-c 后停止。

我试过在没有 --cmd 的情况下运行它,它似乎在后台运行,但工作人员不会启动,并且调用 stop 会返回一个“未知实例”。

任何建议,将不胜感激。

python daemon virtualenv

5
推荐指数
0
解决办法
2423
查看次数

在哪里可以找到 python 结构设置示例?

我想知道您对面料脚本的体验如何?觉得有用吗?是否有用于此的示例脚本?复制、设置服务等

我知道有木偶和厨师,但我正在寻找不使用客户端/服务器设置来部署、设置服务器等的东西

你的意见?

deployment python web-server fabric

5
推荐指数
1
解决办法
2805
查看次数

某些 AWS 实例上的 Google c2dm 瞬态 401 错误

当要求 c2dm 发送通知时,我们如何弄清楚为什么我们会在某些AWS实例上从Google c2dm推送服务中偶尔收到 401 错误?

这是一个暂时性的问题。所有 AWS 实例在向 Google c2dm 发送 HTTPS 请求时大多成功,有些实例 100% 的时间成功,有些实例偶尔会收到 401。因此,我们不认为这是我们的 c2dm 注册或我们已投入生产一年多的通知代码 (python) 的问题。401 错误始于 2012 年 5 月 16 日。

相反,我们认为 Amazon 基础设施中的某些东西,包括 DNS 缓存,可能以某种方式参与了这个问题。谷歌亲切地回复了我们的询问:

我会寻找可能导致不稳定通信的东西。尝试看看您是否在该机器的网络适配器上收到异常数量的损坏或丢失的数据包。

但是,我们没有看到任何“片状通信”的证据。出现问题时实例上的cpu负载接近于0,并且出现问题的机器上的以太网连接数平均低于没有问题的实例。

一个线索是 401 错误似乎是在一个块中发生的(几个发生在大约 4 分钟内),并且这些块通常相隔 10 到 60 分钟(尽管可能有很多小时没有错误)。我们没有看到 I/O 错误或“不稳定的通信”错误,只有来自 Google c2dm 的 401 错误。

服务器故障帖子让我们考虑在 AWS 上进行 DNS 缓存,因为它与 Google c2dm 服务提供的证书中主机名的 SSL 验证有关,但我们使用的 python 2.7 urllib2 似乎没有通过以下方式验证主机默认。

另一个线索是,我们使用“弹性 IP”功能更改了第一个出现问题的 Web 实例的 IP 地址:相同的、持续运行的实例,只是使用了一个新 IP。该实例在 4 天内 …

domain-name-system python amazon-web-services

5
推荐指数
1
解决办法
424
查看次数

Amazon Linux 上的 rsyslog 更新突然将 INFO 级别的消息视为 EMERG

我在一些运行 Amazon Linux 2012.3 的 EC2 实例上遇到了 rsyslog 的奇怪问题。在 yum 将 rsyslog 4.6 升级到 5.8.10 时,似乎每个 INFO 级别的日志消息突然都被视为 EMERG 级别的问题,并且它们正在到处广播。*.emerg *从 /etc/rsyslog.conf 中注释掉消息,但显然这不是一个解决方案。

消息如下所示:

Message from syslogd@hostname at Jul 13 19:35:07 ...
¿<14>processname[1696]: INFO <yadayadayada>
Run Code Online (Sandbox Code Playgroud)

我的大部分日志记录来自带有 logging.handler.SysLogHandler 的 Python 2.6 记录器,我在下面发布了其配置。我没有运气在网上找到关于这个特定问题的任何其他信息,似乎唯一能解决我问题的方法是回滚到 rsyslog 4.6,它立即解决了问题。如果我坚持使用 4.6,这不是悲剧,但是这个问题非常令人不安,让我怀疑我是否配置错误,直到我更新才重新抬头。

这是我的 rsyslog.conf:

#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)

#### GLOBAL DIRECTIVES ####
$ActionFileDefaultTemplate …
Run Code Online (Sandbox Code Playgroud)

python logging amazon-ec2 rsyslog

5
推荐指数
1
解决办法
1047
查看次数

在 linux 后台运行 python 应用程序

这里有一个奇怪的问题,但我正在 Linux 服务器上使用 python 聊天服务器/客户端组合。目前,如果我这样做:

$: cd /path/to/chat/server
$: sudo python ChatServer_Listen.py
Run Code Online (Sandbox Code Playgroud)

这将启动 python 应用程序运行循环,服务器侦听传入的 TCP 连接。

我的问题是,如果我关闭终端窗口,ssh 会话将退出,python 应用程序停止运行,并且客户端无法再连接。我宁愿不在本地 24/7 全天候运行终端实例。我可以将此 Python 应用程序设置为可以在 Linux 后台运行的应用程序吗?如果是这样,如何?理想情况下,它有点像 Apache,它只是作为服务运行。

谢谢你的协助!

linux ssh python terminal background-process

5
推荐指数
1
解决办法
2万
查看次数

插入 mod_wsgi 后 Apache 不会重启

Python 作为一种 Web 脚本语言让我很感兴趣,所以我想在我的测试服务器上设置它。

无法让 Apache 重新启动mod_wsgi。在 win7 64 位上运行 xampp v win32-1.8 w/apache v2.4,python v2.7 32bit。我看到的 Python 注册表文件位于hkey_classes_root. 我不确定这是否正确,但hkey_current_user. 中的一个hkey_local_machine表示未设置默认值。

这是我跑步时得到的 apache_start.bat

Apache 2 正在启动...
httpd.exe:C:/xampp/apache/conf/httpd.conf 第 141 行的语法错误:无法将 C:/xampp/apache/modules/mod_wsgi.so 加载到服务器:指定的程序找不到。

我添加到 httpd.conf 的内容:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /wsgi_handler "C:/xampp/wsgi/mywsgi.py"

<Directory "C:/xampp/wsgi">
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

python xampp mod-wsgi apache-2.2

5
推荐指数
1
解决办法
6038
查看次数

RHEL 6.x - yum 给出“ImportError: No module named cElementTree”错误

我正在对一组 150 台服务器进行一组更改。yum除了一个之外,所有系统都能够通过 成功下载和安装一组特定的 RPM 。在这个特定的系统中,“clean”之外的所有 yum 命令都会将以下内容转储到屏幕上:

[root@dev1v ~]# yum install sssd
Loaded plugins: rhnplugin
/usr/lib64/python2.6/xmlrpclib.py:612: DeprecationWarning: The xmllib module is obsolete.  Use xml.sax instead.
  import xmllib # lazy subclassing (!)
Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in <module>
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 285, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 136, in main
    result, resultmsgs = base.doCommands()
  File "/usr/share/yum-cli/cli.py", line 434, in doCommands
    self._getTs(needTsRemove)
  File "/usr/lib/python2.6/site-packages/yum/depsolve.py", line 99, in _getTs
    self._getTsInfo(remove_only) …
Run Code Online (Sandbox Code Playgroud)

python yum rhel6

5
推荐指数
1
解决办法
1万
查看次数

使用 RPM 部署 Python 应用程序的首选方法是什么?

我是 dev-ops 方面的新手,我一直在努力将 Python 应用程序打包到 RPM(使用 python setup.py bdist_rpm)通过 Yum 部署到 centos VM。Chef 用于管理虚拟机。作为持续部署过程的一部分,Python 应用程序将在 virtualenv 中运行。

RPM 是否应该是智能的和自包含的,执行诸如创建/启动 virtualenv 环境、pip 安装所需的依赖项,然后最终配置一个 init 进程(在这种情况下为 virtualenv 启动 uwsgi REST 服务器进程)等操作?

或者,Chef recipe 是否应该管理构建 virtualenv 和 pip 安装依赖项,而 RPM 本身做一个简单的“python setup.py install”来将我的 Python 模块加载到 virtualenv 的 pythonX.Y/site-packages 文件夹中?

对“yum install/reinstall”调用(比如通过自动化过程)的后续操作适用于任何一种方法,但前者需要更复杂的 RPM,这可能不是“最佳实践”,对吗?前者确实允许独立安装,以后可以更干净地删除,并且更好地分离开发人员(Python)和开发操作员(厨师)之间的问题。请就“通常”所做的事情提出建议。

deployment python rpm chef

5
推荐指数
1
解决办法
1624
查看次数

如何将此 Nginx 调试到 uWSGI 超时?

我正在运行一个接收很少流量的数据库支持的网站。但是,一天一两次,请求会超时,我会在 Nginx 中看到这个(或类似的)错误error.log

2013/06/13 18:32:40 [error] 16723#0: *27796 upstream timed out (110: Connection timed out)
while reading response header from upstream, client: 199.71.215.214, server:
app.mypythonwebapp.com, request: "POST /api?submit_staker_response HTTP/1.1", upstream:
"uwsgi://unix:/var/run/uwsgi/app.mypythonwebapp.com-uwsgi.sock", host:
"app.mypythonwebapp.com", referrer:
"https://app.mypythonwebapp.com/survey/5/791/70ea73eb9a489f2dead804a95c400ab2"
Run Code Online (Sandbox Code Playgroud)

我正在运行 uWSGI 并且在它的日志文件中根本没有任何与此相关的内容(我可以说)。我怀疑它可能与 PostgreSQL 相关,但如果我通过检查它的状态,pg_stat_activity我看不到任何异常。

这是我的 uWSGI YAML 配置文件:

uwsgi:
    socket: /var/run/uwsgi/%n-uwsgi.sock
    workers: 5
    buffer-size: 32768
    callable: app
    wsgi-file: /opt/sites/app.mypythonwebapp.com/run.py
    virtualenv: /opt/virtualenv/app.mypythonwebapp.com
    pythonpath: /opt/sites/app.mypythonwebapp.com
Run Code Online (Sandbox Code Playgroud)

我所在的服务器有两个(虚拟化)内核,所以我做了 1 + cores*2 来确定工作人员的数量。我还提高了buffer-size参数以尝试解决此问题,但错误仍然发生。

我不确定从哪里开始调试。我几乎没有运行 uWSGI(或任何 Python WSGI 实现)的经验。

python nginx wsgi uwsgi

5
推荐指数
1
解决办法
2万
查看次数