作为我学习过程的一部分,我认为如果我对我对apache的了解有了更多的了解,那将是一件好事。我有几个问题,虽然我知道其中一些内容可能需要一个相当冗长的解释,但我希望你能提供一个概述,所以我知道去哪里看。 (最好参考mod_wsgi
)我在google上搜索后已经阅读了一些资源,而且我知道从那里到达,所以请耐心等待。
在收到http请求之前,期间和之后,apache生命周期是什么样的?它是否会生成一个新的子进程来完成工作,或者在其中一个子进程中创建一个线程?
默认情况下,apache是否在www-data
下运行?因此,如果是这种情况,如果我想将项目文件夹下的目录用于日志,我可以只将文件夹组更改为www-data并允许写访问权限?
在被apache调用后,python解释器运行的用户是什么?那些由Popen
或multiprocessing
创建的流程会在哪些流程下运行?
我跑了ps U www-data
。为什么有这么多流程
S 0:00 / usr / sbin / apache2 -k start
答案 0 :(得分:2)
Apache mpm prefork模块在一个进程中处理一个连接。为了快速处理连接而不是按需生成进程,apache维护一个进程池。这就解释了为什么在流程列表中看到如此多的流程。如果连接进入,则将其传递给已存在的进程之一。
此处提供了更多信息:http://httpd.apache.org/docs/2.0/en/mod/prefork.html
问题2)的答案是肯定的,apache总是作为www-data运行,你可以通过将其组权限更改为www-data来授予对任何目录的访问权。
答案 1 :(得分:1)
读:
http://www.fmc-modeling.org/category/projects/apache/amp/Apache_Modeling_Project.html http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
第一个将告诉你Apache内部工作方式的所有细节。后者特别涉及mod_wsgi和进程/线程模型。