Какова связь между virtualhosting и virtualenv?

#python #virtualenv

#python #virtualenv

Вопрос:

Я немного смущен virtualhosting и virtualenv.

Я знаю, что virtualenv создает изолированные установки python с пакетами, необходимыми для конкретного приложения. Я понял это. Для меня это означает, что вам все равно нужно настроить virtuahosts, чтобы размещать несколько доменов из одного поля.

В типичном VPS каждый пользователь домена изолирован от доступа за пределы своей учетной записи пользователя. Это означает, что вы не можете создавать и поддерживать virtualenv вне пользовательского пространства. Не уверен, что это бросает ключ в машину.

Для конкретного примера, допустим, у вас есть:

 <VirtualHost *:80>
  ServerAdmin you@example_01.com

  ServerName   example_01.com
  ServerAlias  example_01.com *.example_01.com
  DocumentRoot /var/www/example_01/public_html
  ErrorLog     /var/www/example_01/logs/access.log
  CustomLog    /var/www/example_01/logs/error.log combined

  <Directory   /var/www/example_01>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerAdmin you@example_02.com

  ServerName   example_02.com
  ServerAlias  example_02.com *.example_02.com
  DocumentRoot /var/www/example_02/public_html
  ErrorLog     /var/www/example_02/logs/access.log
  CustomLog    /var/www/example_02/logs/error.log combined

  <Directory   /var/www/example_02>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
  </Directory>
</VirtualHost>
  

Каждый ли пользователь обрабатывает и управляет своим собственным virtualenv? В этом случае они могли бы жить в:

 /var/www/example_01/virtualenv/
  

и

 /var/www/example_02/virtualenv/
  

Так ли это делается?

Контекст, опять же, заключается в том, что у вас есть план VPS и у вас есть несколько клиентов, каждый из которых имеет свои собственные домены, размещенные на этом компьютере. Как настроить virtualhosting и virtualenv для этого сценария?

Комментарии:

1. Я бы подумал, что вам нужно что-то более «изолированное», чем virtualenv. Насколько я понимаю, virtualenv просто описывает, какие модули python установлены в данной среде. Ничего общего с разделением сетевого пространства / пространства выполнения / и т.д. Виртуальные машины или, по крайней мере, виртуализация на уровне ядра (lxc, docker и т. Д.) Должны использоваться для размещения нескольких клиентов на одной машине.

2. Я думаю, вы также путаете VPS (у пользователя есть целый виртуальный сервер для себя, т.Е. user == root) с общим веб-хостингом (у пользователя есть учетная запись оболочки и доступ к некоторому предварительно настроенному веб-пространству Apache, как вы описали).

3. @hmn, не уверен, что ваш комментарий был для меня. Во всяком случае, я использовал «VPS» в качестве сокращения для того, что я имел в виду, и, возможно, я был недостаточно ясен. Представьте, что я получаю Linode, а затем использую виртуальный хостинг (не виртуальные машины) для размещения нескольких доменов и предоставляю интерфейс типа cPanel для каждого владельца домена для управления своим сайтом. Как затем управляются virtualenv? Я новичок в Python и virtualenv и вполне могу иметь пробел в моем понимании. До сих пор каждый учебник, с которым я сталкивался, кажется, начинается с того, что один из них является пользователем root, а не одним из 100 человек, управляющих одним из 100 сайтов на сервере.

4. Virtualenv работает через переменные среды, которые могут быть настроены для пользователя при входе в систему и в Apache для каждого виртуального хоста.