我有一个处理“/ admin /”和“/ myapp /”的Django应用程序。 所有其他请求应该由Apache处理。 我试过使用LocationMatch,但我不得不写一个负面的正则expression式。 我已经用/ admin /前缀尝试了WSGIScriptAlias,但是随后wsgi_handler接收到/ admin / part中断的请求。 有一个更简洁的方法,使mod_wsgi只处理特定的请求?
我有一些使用Apache2和mod_wsgi部署的Django站点。 在configurationWSGIDaemonProcess指令时,大多数教程(包括官方文档)build议将WSGI进程作为代码所在的主目录中的用户来运行。 例如: WSGIScriptAlias / /home/joe/sites/example.com/mod_wsgi-handler.wsgi WSGIDaemonProcess example.com user=joe group=joe processes=2 threads=25 但是,我想知道是否将wsgi守护进程作为开发代码的相同用户(具有相应的权限)运行是非常明智的。 我应该build立一个服务帐户,其唯一的特权是对代码的只读访问,以便有更好的安全性? 还是我的担忧被夸大?
我有一个像这样的虚拟主机设置Apache 2.0: <VirtualHost *:80> ServerName wackystore ServerAlias wackyprojects Alias /media/admin /opt/python/lib/python2.7/site-packages/django/contrib/$ Alias /media /opt/DjangoProjects/wacky/media #mod_wsgi setup WSGIScriptAlias / /opt/DjangoProjects/wacky/django.wsgi </VirtualHost> 我有我们的DNS设置,所以“wackystore”和“wackyprojects”去这个服务器。 我想要发生的是mod重写将wackproroject的url改为wackprojects / tools。 例子: http://wackystore -> no change http://wackystore/something -> no change http://wackyprojects/ -> http://wackyprojects/tools http://wackyprojects -> http://wackyprojects/tools http://wackyprojects/something -> no change
我试图在Ubuntu上通过mod_wsgi设置Python3和Python2,所以我已经安装了mod_wsgi_py3软件包,但也希望运行py2版本,并根据虚拟主机configuration中的标志进行切换。 有没有办法用Apache 2.2做到这一点?
我使用默认安装中的mod_wsgi设置了Apache,使用一个非常简单的testing应用程序test.wsgi : def application(environ, start_response): status = '200 OK' output = 'Path: %s' % environ['PATH_INFO'] response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output] Apache本身基本上是这样configuration的: WSGIScriptAlias / /home/user/wsgi_test/test.wsgi 现在,如果我访问该服务器上的URL,我得到以下输出: GET /test/../test/./test => Path: /test/test GET /test/%2E%2E/abc => Path: /abc GET /test%2fabc => 404 Not found (由于AllowEncodedSlashes off ,我想) 因此,在我看来,Apache在将这些URL传递给应用程序之前parsing/预处理这些URL,这很好,因为它可以防止文件path不属于查询string的大量本地文件包含和目录遍历攻击。 一个人可以依靠这种行为,或者有一些/test/foo/../bar方法来欺骗Apache实际上传递像/test/foo/../bar的URL到应用程序? 如果可能的话,它会是一个Apache的bug吗?
假设在服务器上我有: mod_wsgi加载和启用 无所不能的htaccess , 我可以使用mod_wsgi而不需要编辑全局的apacheconfiguration文件吗? 我没有在服务器上的pipe理权限。 使用modpython可以完成根文件夹的htaccess 。 如果答案是否定的,就像QuickConfigurationGuide似乎build议的那样,我可以向系统pipe理员要求什么是最好的,以便他们可以编辑一次configuration,而不再和我说话? 考虑一个多用户系统,例如你在共享主机或大学的用户页面中find的系统。 我试图部署一个框架,如Django,樱桃py或web.py,但我不认为这应该有所作为。
我试图设置我的服务器与亚马逊EC2服务器上的Apache,但现在它不能正常工作。 在configuration文件中, 在/ etc / apache2中,我有: httpd.conf中: LoadModule wsgi_module modules/mod_wsgi.so WSGIPythonHome /home/ubuntu/www/env modwsgi.conf: WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On WSGIDaemonProcess pyramid user=Wiz group=admin threads=4 python-path=/home/ubuntu/www/env/lib/python2.7/site-packages WSGIScriptAlias /Visus /home/ubuntu/www/env/pyramid.wsgi <Directory /home/ubuntu/www/env> WSGIProcessGroup pyramid Order allow,deny Allow from all </Directory> 在我的virtualenv,我有: pyramid.wsgi: from pyramid.paster import get_app, setup_logging ini_path = '/home/ubuntu/www/env/Wiz/production.ini' setup_logging(ini_path) application = get_app(ini_path, 'main') 而当我去基地网站,默认的apache网页出现,说服务器正在运行,但是当我去example.com/Visus,我得到一个404,当我得到我的应用程序。 怎么了?
我正在使用mod_itk作为MPM来提高共享环境中的安全性。 我也有一个我主持的VHosts之一的Firefox同步服务器。 该虚拟主机通过AssignUserId user group限制到某个用户。 问题是socket /var/run/wsgi…whatever.sock是chmodded srwx——并且由Apache的wwwrun拥有。 当我configuration虚拟主机 WSGIProcessGroup sync WSGIDaemonProcess sync user=djechelon group=djechelon processes=1 threads=5 我仍然得到了Apache想要访问一个无法访问的套接字的错误,并且因为这个错误。 是否有可能configurationmod_wsgi为了创build不同的拥有不同的所有者为不同的应用程序套接字或以不同的方式(不太安全)chmod其套接字? 目前,我正在运行Firefox Sync作为唯一的WSGI应用程序。 把它移动到不AssignUserId的虚拟主机可以解决这个问题,但会迫使我改变URL(并购买额外的SSL证书),所以我不会考虑这个
对于apache和django的组合,我相当陌生,坦白地说,如何处理multithreading。 具体来说,我运行在Windows服务器上,所以我知道MPM只是基于线程的。 我有一个服务于网站页面的应用程序,另一个应用程序执行一个不断发生的cpu密集型后台进程,时间长达30秒左右。 我担心我可能会遇到性能问题,并有几个问题,我希望这些也可以帮助其他人… apache如何在线程之间分配并发请求? 和CPU之间? 什么样的逻辑驱动这个? 每个请求是否生成一个单独的线程? 我可以手动指定某个应用程序在独立的CPU上运行吗? 例如,如果我有一台带有4个CPU的机器,我可以为网站请求设置1个CPU,还可以根据需要设置3个CPU来运行后台进程? multithreading如何读/写同一个数据库? 我不希望有冲突,因为写作是按用户进行的,但是我不知道这是如何处理的。 如果我有多台这样的机器,例如在EC2上运行并且有多个实例,会发生什么? 如何分发请求? 谢谢
我正在使用Apache + mod_wsgi运行Django应用程序,我已经在Amazon EC2上安装了6个中等Ubuntu服务器,其中2个用于mongo,4个用于Django和apache,使用ebs作为postgresql并在所有Apache服务器周围configuration了一个负载均衡器,每个服务器有4 GB的内存,但在重负载系统变得缓慢,我看到使用顶部命令,Apache使用7个进程,吃大约2.4 GB的RAM。 下面是apache MPM prefork模块configuration <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> 这是wsgi守护进程 WSGIDaemonProcess example user=abc group=abc processes=2 threads=25 然后我通过以下这篇文章http://fuscata.com/kb/set-maxclients-apache-prefork改变MaxClients到12,但我得到“请求标头读取超时”错误在Apache错误日志。 请帮助我调整Apache以获得更好的性能。