我正在开发一个mod_wsgi脚本..开头是:
sys.path.extend(map(os.path.abspath, ['/media/server/www/webroot/']))
Run Code Online (Sandbox Code Playgroud)
但我注意到,每次更新脚本时,sys.path var都会随着此扩展的重复项而不断增长:
['/usr/lib64/python25.zip'
'/usr/lib64/python2.5'
'/usr/lib64/python2.5/plat-linux2'
'/usr/lib64/python2.5/lib-tk'
'/usr/lib64/python2.5/lib-dynload'
'/usr/lib64/python2.5/site-packages'
'/usr/lib64/python2.5/site-packages/Numeric'
'/usr/lib64/python2.5/site-packages/gtk-2.0'
'/usr/lib64/python2.5/site-packages/scim-0.1'
'/usr/lib/python2.5/site-packages'
'/media/server/www/webroot'
'/media/server/www/webroot'
'/media/server/www/webroot'
'/media/server/www/webroot']
Run Code Online (Sandbox Code Playgroud)
每次重启apache都会重置..是否有任何方法可以确保不会发生这种情况?我希望模块路径只加载一次..
有没有人在Ubuntu 9.04上使用默认的Python安装(2.6.2)成功使用mod_wsgi 2.5?
我有编译错误:
mod_wsgi.c:119:2: error: #error Sorry, mod_wsgi requires at least Python 2.3.0.
mod_wsgi.c:123:2: error: #error Sorry, mod_wsgi requires that Python supporting thread.
Run Code Online (Sandbox Code Playgroud)
哪个Python给/ usr/bin/python和/ usr/bin/python -V返回Python 2.6.2所以我不确定第一个有什么问题,老实说我不知道怎么检查编译中使用的选项Ubuntu上的默认Python.
还有很多其他错误,但这些错误看起来最相关.
还有什么可能是错的?
我正在尝试在服务器上部署基于烧瓶的应用程序,但是我遇到了问题。基本处理程序似乎工作正常,但是我连接到 MySQL 的处理程序给了我错误 500。
我使用 apache 和 mod_wsgi 在 Debian Linux 上以用户 Flask 的身份部署此应用程序。我以该用户身份登录并尝试在不同端口上手动运行该应用程序,然后它工作得很好。
我检查了烧瓶日志,这是我看到的错误:
[Sun Jan 13 14:33:27 2013] [error] [20130113-14:33PM] [susyapi] [ERROR] Exception on /1/product [GET]
[Sun Jan 13 14:33:27 2013] [error] Traceback (most recent call last):
[Sun Jan 13 14:33:27 2013] [error] File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1687, in wsgi_app
[Sun Jan 13 14:33:27 2013] [error] response = self.full_dispatch_request()
[Sun Jan 13 14:33:27 2013] [error] File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1360, in full_dispatch_request
[Sun Jan 13 14:33:27 2013] [error] rv = …Run Code Online (Sandbox Code Playgroud) 我刚刚完成了mod_wsgi的安装,但是我在启动Pyramid应用程序时遇到了问题.
我在CentOS 5.8上使用python 2.7,Apache 2.2.3,mod_wsgi 3.4
这是我的httpd.config文件
WSGISocketPrefix run/wsgi
<VirtualHost *:80>
ServerName myapp.domain.com
ServerAlias myapp
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess pyramid user=apache group=apache processes=1 threads=4 \
python-path=/var/wsgi_sites/site-packages
WSGIScriptAlias / /var/wsgi_sites/myapp/apache.wsgi
<Directory /var/wsgi_sites/myapp>
WSGIProcessGroup pyramid
Order allow,deny
Allow from all
</Directory>
LogLevel debug
ErrorLog /var/log/httpd/myapp_error
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我给了Apache所有的site-package,python-eggs和myapp文件夹.
我用来创建WSGI应用程序appache.wsgi的模块包含以下代码
import os
os.environ['PYTHON_EGG_CACHE'] = '/var/wsgi_sites/python-eggs'
from pyramid.paster import get_app
application = get_app('/var/wsgi_sites/myapp/development.ini','main')
Run Code Online (Sandbox Code Playgroud)
当我重新启动Apache并尝试访问应用程序时,我收到以下错误
mod_wsgi (pid=14842, process='pyramid', application=''): Loading WSGI script '/var/wsgi_sites/myapp/apache.wsgi'.
mod_wsgi (pid=14842): Target WSGI script '/var/wsgi_sites/myapp/apache.wsgi' cannot be loaded as Python module. …Run Code Online (Sandbox Code Playgroud) 注意:我想瓶子框架在这里不相关.Wsgi是.
我已经设法将我的apache配置为使用基于python bottle框架的wsgi和单文件Web应用程序.下面的文件是我现在所拥有的 - apache使用virtualenv并运行包含所有内容的单个wsgi/py文件.
虚拟主机:
<VirtualHost *:80>
ServerName bottle-test
WSGIDaemonProcess bottle-test user=www-data group=www-data processes=1 threads=5
WSGIScriptAlias / /home/tducin/Development/Python/bottle-test/src/app.wsgi
<Directory /home/tducin/Development/Python/bottle-test/src>
WSGIProcessGroup bottle-test
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
ErrorLog /var/log/apache2/wsgi/error-bottle.log
CustomLog /var/log/apache2/wsgi/access-bottle.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
httpd.conf(这是我的virtualenv所在的地方):
WSGIPythonHome /home/tducin/Development/Python/bottle-test
Run Code Online (Sandbox Code Playgroud)
最后,这是app.wsgi:
import os
# Change working directory so relative paths (and template lookup) work again
os.chdir(os.path.dirname(__file__))
import bottle
app = bottle.Bottle()
@app.route('/')
def siema():
return bottle.template('<h1>SIEMA {{arg}}!</h1>', arg='Janie')
@app.route('/hello/<name>')
def hello(name):
return bottle.template('<b>Hello {{name}}</b>!', name=name)
application = app …Run Code Online (Sandbox Code Playgroud) 我编写了一个Python包hwrt(如果你想试试,请参阅安装说明),它在执行时为网站提供服务
$ hwrt serve
2014-12-04 20:27:07,182 INFO * Running on http://127.0.0.1:5000/
2014-12-04 20:27:07,183 INFO * Restarting with reloader
Run Code Online (Sandbox Code Playgroud)
我想让它在http://www.pythonanywhere.com上运行,但是当我开始它时,我得到它
19:19 ~ $ hwrt serve
2014-12-04 19:19:59,282 INFO * Running on http://127.0.0.1:5000/
Traceback (most recent call last):
File "/home/MartinThoma/.local/bin/hwrt", line 108, in <module>
main(args)
File "/home/MartinThoma/.local/bin/hwrt", line 102, in main
serve.main()
File "/home/MartinThoma/.local/lib/python2.7/site-packages/hwrt/serve.py", line 95, in main
app.run()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 739, in run
run_simple(host, port, self, **options)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 613, in run_simple
test_socket.bind((hostname, …Run Code Online (Sandbox Code Playgroud) 我想在 运行 WordPress mysite.com/,因为编辑销售文案等更容易。我想在其中运行我的 Django 网站mysite.com/members/
httpd.conf:
<VirtualHost *:80>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /var/www/mysite.com
WSGIDaemonProcess mysite python-path=/var/www/mysite.com/mysite:/var/www/mysite.com/
WSGIProcessGroup mysite
WSGIScriptAlias / /var/www/mysite.com/mysite/mysite/wsgi.py
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我到底需要做什么才能让 Django/members/在我的域/网站的目录中运行?
使用Apache/2.4.12(Unix)和mod_wsgi-4.4.11并打击apache/conf/extra的配置:
//httpd-mpm.conf
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
//httpd-vhosts.conf
WSGIRestrictEmbedded On
<VirtualHost *:443>
ServerName form.xxx.com
WSGIScriptAlias / /usr/local/apache/services/form/form.wsgi
WSGIDaemonProcess paymentform user=test processes=10 threads=5 display-name=%{GROUP} maximum-requests=100
WSGIApplicationGroup %{RESOURCE}
WSGIProcessGroup form
DocumentRoot /usr/local/apache/services/form
SSLEngine On
//any certification files
<Directory /usr/local/apache/services/form>
Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在这个配置中,我使用Apache jmeter进行测试.
GET : form.xxx.com //only return "index" string
Number of Threads(users):100
Ramp-up Period : 0
Loop count : 10
Run Code Online (Sandbox Code Playgroud)
但结果是......
samples: 1000
Average: 3069
Min : 13 …Run Code Online (Sandbox Code Playgroud) 我试图限制那些在浏览器中直接点击绝对静态图像 url 路径(www.xyz.com/static/img/sam.png)并访问它的用户。
我尝试使用以下 Django 文档:
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/apache-auth/
但这也会阻止登录页面中的那些图像(在验证有效用户之前)。
有没有其他有效的方法来限制未登录的用户?
编辑: 我曾提到过这个Django: Serving Media behind Custom URL,但它与 nginx 而不是 apache 相关。并且黑白静态和媒体内容也有区别。我的问题仅与静态内容有关
我遇到了一大堆错误,试图将我的django网站用Apache生产.最终得到mod_wsgi排序和Apache至少看起来试图加载网站我看到主页无法加载时调试细节中的一些令人困惑的问题.
当我使用python manage.py runserver 10.10.10.214:8080它启动网站时,这些错误都不会出现- 它以这种方式100%正常工作
from x import y- 由于某种原因它只允许我这样做from x import *一个例子是#from django.conf.urls import patterns, include, url错误的 - 我不得不改为from django.conf.urls.defaults import *Cannot resolve keyword 'user_id' into field. Choices are: end_date, id, singleDate, start_date, useruser_id在独立模式下工作正常.TemplateSyntaxError: Caught ImportError while rendering: No module named staticfiles,我只是通过django.contrib.staticfiles在settings.py中注释掉而懒洋洋地绕过它.不用说,这没有解决任何问题几乎感觉这些文件是在独立的基础上处理的,而不是在django框架内.以前有没有人经历过这种出牙问题?我愚蠢地认为我可以插上.我有一种(毫无根据的)乐观的感觉它必须只是某个文件中的指令.
干杯,亚瑟