我一直在使用WSGI开发部署在Apache服务器上的Django Web应用程序,一切都进展顺利.今天,我对我的应用程序进行了一些小的更改,admin.py试图自定义内置的Django Admin界面,并且最初产生了语法错误(一个未闭合的括号).这意味着当我触摸wsgi.py并加载代码时(我在我的虚拟主机上以守护进程模式运行WSGI),我的网站被替换为内部服务器错误,因为WSGI在遇到语法错误时停止了.
所以我修复了语法错误,检查了我没有更多manage.py check,并触及wsgi.py重新部署.但我的网站仍然显示内部服务器错误!检查Apache日志,这是我看到的:
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Create interpreter 'quotes.cs.cornell.edu|'.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/extra/www/html/quotes/quotes_django' to path.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/' to path.
[Sun Nov 23 13:52:46 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/ …Run Code Online (Sandbox Code Playgroud) 当我更新我的网站上的代码时,我(自然地)重启我的apache实例,以便更改生效.
不幸的是,每个apache实例所服务的第一个页面非常慢,而它首次将所有内容加载到RAM中(此特定站点为5-7秒).
后续请求只需0.5到1.5秒,所以我想为我的用户消除这种影响.
是否有更好的方法将所有内容加载到RAM而不是执行wget x次(其中x是我的http.conf中ServerLimit定义的apache实例的数量)
编写一个重新启动apache并运行wget 5次的重启脚本对我来说似乎有些不好意思.
谢谢!
我在虚拟环境中有一个名为python2.7inside的文件夹lib.
在阅读了六篇教程之后,我无法弄清楚我想将WSGIPythonPath指向的确切内容.我已经看到一些指向site-packages但有些已经是冒号:分隔列表.
Syntax error on line 1019 of /etc/httpd/conf/httpd.conf:
WSGIPythonPath cannot occur within <VirtualHost> section
Run Code Online (Sandbox Code Playgroud)
WSGIPythonPath应该指向我的virtualenv?
我正在更改网站的域名.在一段时间内,我希望旧域名和新域名指向该站点.我正在运行一个Python Django站点.
我最初的Apache2 conf工作正常,基础是:
<VirtualHost *:80>
ServerAdmin name@gmail.com
ServerName originalsite.co.uk
ServerAlias www.originalsite.co.uk
DocumentRoot /var/www/originalsite
WSGIDaemonProcess originalsite python-path=/var/www/originalsite:/var/www/originalsite/env/lib/python2.7/site-packages
WSGIProcessGroup originalsite
WSGIScriptAlias / /var/www/originalsite/originalsite/wsgi.py
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我设置了一个新的conf文件,只有以下更改:
ServerName newsite.co.uk
ServerAlias www.newsite.co.uk
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
名称重复以前的WSGI守护程序定义.
我该如何解决?谢谢你的帮助
我想在我的 docker 容器中显示一个 env var。PHP 脚本如下所示:
<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
<?php
print "env is: ".$_ENV["USER"]."\n";
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我使用 OpenShift 来启动容器。PHP - 容器显示:
env is:
Run Code Online (Sandbox Code Playgroud)
现在我更改了容器的 dc 配置:
oc env dc/envar USER=Pieter
deploymentconfig "envar" updated
Run Code Online (Sandbox Code Playgroud)
当我访问容器时。USER 的环境变量是 Pieter
docker exec -it 44a0f446ae36 bash
bash-4.2$ echo $USER
Pieter
Run Code Online (Sandbox Code Playgroud)
但是我的脚本仍然显示:“ env is:”它没有填充变量。
我是openshift和k8s的新手.我不确定这两个术语之间有什么区别,开放式路线与k8s进入?
是否有一种简单的方法可以在buildout配置中转义用于变量替换的魔术字符,这样就可以保留字符串.换句话说,我说的地方:
[part]
attribute = ${variable}
Run Code Online (Sandbox Code Playgroud)
我实际上并不希望它扩展$ {variable},而是将其保留为文字值.
实际上,我遇到的具体问题不是在buildout配置文件本身,而是在由配方'collective.recipe.template'处理的模板文件中.这使用配置文件中使用的buildout中的相同变量替换引擎.问题是我想用作模板的文件已经将'$ {variable}'语法与最终使用该文件的应用程序配置系统结合使用.
我找到解决问题的唯一方法是使用类似的东西:
[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $
Run Code Online (Sandbox Code Playgroud)
在模板输入文件中,然后有:
${dollar}{variable}
Run Code Online (Sandbox Code Playgroud)
代替:
${variable}
Run Code Online (Sandbox Code Playgroud)
它已经有了.
这样做是因为使用模板对该部分查找'dollar'属性并将其替换为'$'.
而不是必须这样做,有点希望人们可以这样做:
\${variable}
Run Code Online (Sandbox Code Playgroud)
或者甚至是:
$${variable}
Run Code Online (Sandbox Code Playgroud)
并且消除了必须具有虚拟属性以欺骗它做我想要的事情的需要.
查看buildout的源代码,它匹配变量替换的方式似乎不提供转义机制.
如果确实没有办法,那么也许有人知道可以进行变量扩展的另一个构建模板配方,但是它提供了一种表示变量的任何方式的转义机制,这样可以避免可能存在冲突的问题.模板系统扩展机制和模板文件中的文字数据.
我试图在Windows 10中安装mod_wsgi.
该命令pip install mod_wsgi给我错误,
RuntimeError: No Apache installation can be found. Set the MOD_WSGI_APACHE_ROOTDIR environment to its location.
我的Apache目录是F:\Apache24\.
我的问题是,如何设置MOD_WSGI_APACHE_ROOTDIR环境?
谢谢,Sambhav
Django如何在生产环境中处理多个请求?
假设我们有一个Web服务器:Apache,Nginx,gunicorn等.
那么来自Web浏览器的任何请求的那些服务器是否启动新进程来提供该请求?
如果这是真的,它不会造成巨大的开销吗?
如果不是这样,那么同一个视图(让它被def hello(request)视图绑定到/hellourl)如何同时处理多个请求.
我已经看到问题的答案"...处理多个用户"
我想知道应用于命名空间中所有图像的标签。有没有oc命令可以查看命名空间中的标签?
在发布这个问题之前,我用谷歌搜索了。然而我没有找到任何。所以我在这里发布这个问题。
python ×6
django ×5
mod-wsgi ×5
apache ×3
openshift ×3
wsgi ×2
buildout ×1
django-wsgi ×1
docker ×1
kubernetes ×1
pageload ×1
performance ×1
php ×1
pip ×1