使用 mod_wsgi 进行动态海量托管

发布于 2024-08-25 07:17:01 字数 1935 浏览 4 评论 0原文

我正在尝试使用 mod_wsgi 配置 apache 服务器进行动态批量托管。每个用户都会有自己的 python 应用程序实例,位于 /mnt/data/www/domains/[user_name] 中,并且会有一个 vhost.map 告诉我哪个域映射到每个用户的目录(该目录将具有相同的名称)作为用户)。我不知道如何编写 WSGIScriptAliasMatch 行,以便它也获取 vhost.map 文件中的路径。 我想做的是这样的:我可以在我的服务器上拥有不同的域,例如 www.virgilbalibanu.com 或 virgil.balibanu.com 和 flaviu.balibanu.com,其中每个域都属于另一个用户,用户名没有与域名的必要连接。我想这样做,因为一个用户,当他创建一个帐户时,会收到类似 virgil.mydomain.com 的内容,但如果他有自己的域名,他可以稍后将其更改为该域名,例如 www.virgilbalibanu.ro,这样我就可以只需要更改 vhost.map 文件中的行 到目前为止,我有这样的事情:

Alias /media/ /mnt/data/www/iitcms/media/
#all media is taken from here

RewriteEngine on

RewriteMap lowercase int:tolower

# define the map file
RewriteMap vhost txt:/mnt/data/www/domains/vhost.map

#this does not work either, can;t say why atm
RewriteCond %{REQUEST_URI} ^/uploads/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/media/uploads/$1

#---> this I have no ideea how i could do
WSGIScriptAliasMatch ^([^/]+) /mnt/data/www/domains/$1/apache/django.wsgi

<Directory "/mnt/data/www/domains">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<DirectoryMatch ^/mnt/data/www/domains/([^/]+)/apache>
  AllowOverride None 
  Options FollowSymLinks ExecCGI
  Order deny,allow
  Allow from all
</DirectoryMatch>

<Directory /mnt/data/www/iitcms/media>
  AllowOverride None
  Options Indexes FollowSymLinks MultiViews 
  Order allow,deny 
  Allow from all 
</Directory>

<DirectoryMatch ^/mnt/data/www/domains/([^/]+)/media/uploads>
  AllowOverride None
  Options Indexes FollowSymLinks MultiViews 
  Order allow,deny 
  Allow from all 
</DirectoryMatch>

我知道我用 mod_rewrite 所做的部分不起作用,不能真正说出为什么不,但到目前为止这并不那么重要,我很好奇我如何编写 WSGIScriptAliasMatch 行以便完成我的目标。 我将非常感谢任何帮助,或任何其他与我如何处理这个问题有关的想法。另外,如果我能够设法让每个站点在 wsgi 守护进程模式下运行,那就太好了,但这并不那么重要。

谢谢, 维吉尔

I am trying to configure an apache server using mod_wsgi for dynamic mass hosting. Each user will have it's own instance of a python application located in /mnt/data/www/domains/[user_name] and there will be a vhost.map telling me which domain maps to each user's directory (the directory will have the same name as the user). What i do not know is how to write the WSGIScriptAliasMatch line so that it also takes the path from the vhost.map file.
What i want to do is something like this: I can have on my server different domains like www.virgilbalibanu.com or virgil.balibanu.com and flaviu.balibanu.com where each domain would belog to another user, the user name having no neccesary connection to the domain name. I want to do this beacuse a user, wehn he makes an acoount receives something like virgil.mydomain.com but if he has his own domain he can change it later to that, for example www.virgilbalibanu.ro, and this way I would only need to chenage the line in the vhost.map file
So far I have something like this:

Alias /media/ /mnt/data/www/iitcms/media/
#all media is taken from here

RewriteEngine on

RewriteMap lowercase int:tolower

# define the map file
RewriteMap vhost txt:/mnt/data/www/domains/vhost.map

#this does not work either, can;t say why atm
RewriteCond %{REQUEST_URI} ^/uploads/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/media/uploads/$1

#---> this I have no ideea how i could do
WSGIScriptAliasMatch ^([^/]+) /mnt/data/www/domains/$1/apache/django.wsgi

<Directory "/mnt/data/www/domains">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<DirectoryMatch ^/mnt/data/www/domains/([^/]+)/apache>
  AllowOverride None 
  Options FollowSymLinks ExecCGI
  Order deny,allow
  Allow from all
</DirectoryMatch>

<Directory /mnt/data/www/iitcms/media>
  AllowOverride None
  Options Indexes FollowSymLinks MultiViews 
  Order allow,deny 
  Allow from all 
</Directory>

<DirectoryMatch ^/mnt/data/www/domains/([^/]+)/media/uploads>
  AllowOverride None
  Options Indexes FollowSymLinks MultiViews 
  Order allow,deny 
  Allow from all 
</DirectoryMatch>

I know the part i did with mod_rewrite doesn't work, couldn't really say why not but that's not as important so far, I am curious how could i write the WSGIScriptAliasMatch line so that to accomplish my objective.
I would be very grateful for any help, or any other ideas related to how i can deal with this. Also it would be great if I'd manage to get each site to run in wsgi daemon mode, thou that is not as important.

Thanks,
Virgil

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文