Я бы хотел, чтобы на моем VPS размещалось несколько приложений. Например
mydomain.com
(Приложение Python Django)git.mydomain.com
(Gitlab)blog.mydomain.com
(Wordpress)Как можно запустить все это на одной физической машине? (Думаю о Heroku-Apps здесь)
Поскольку этот вопрос был отложен из-за того, что он не по теме, и правила гласят, что нужно предоставить хотя бы «попытку решения», вот оно: я настроил Bind9 на своем VPS для перенаправления всех поддоменов на с тем же IP-адресом, я мог затем прочитать запрошенный поддомен из HTTP-запроса в WSGI. Тогда я думал о создании сервера Python, который перераспределяет HTTP-запросы для приложений, которые прослушивают разные порты (например, GitLab на 8000, приложение Django на 8001, Wordpress на 8002). Но это не позволило бы правильно пересылать запросы, отличные от HTTP (например, чтение / запись в репозиторий Git для GitLab).
Я думал, что должен быть другой способ сделать это, но не знал, как это сделать. У меня также не было подходящего ключевого слова, такого как «Именованные виртуальные серверы», по которому я мог бы искать, поэтому мои попытки поиска были довольно неудовлетворительными.
Документация по виртуальному хосту Apache может дать вам хороший обзор.
Проверьте все вопросы [virtualhost] для получения информации о конкретной ОС и используемом вами дистрибутиве.
В системах стиля Debian / Ubuntu вы можете добавить свои субдомены (или другие домены) в /etc/apache2/sites-available/[YOUR_SUBDOMAIN]
а затем запустить a2ensite [YOUR_SUBDOMAIN]
. Не забывай reload
Apache после изменения ваших настроек.
Вы можете легко сделать то же самое с nginx и другими веб-серверами, но вам, вероятно, лучше начать с Apache, если у вас нет большого опыта в этом.
Если вы используете Apache2, вы можете создать виртуальный хост для каждого. Я предпочитаю использовать именованные виртуальные хосты, поэтому мне не нужен новый IP-адрес для каждого.
Я делаю это так: добавляю в файл /usr/local/apache/conf/extra/httpd_vhosts.conf строку включения, которая указывает на каталог, содержащий все файлы вашего виртуального хоста.
------ httpd_vhosts.conf ---------
Listen 80
Include "/usr/local/apache/conf/extra/vhosts/*.conf"
------конец-----------------------
Вам нужен Listen 80 перед виртуальными хостами, иначе вы получите уже используемый порт.
в каталоге vhosts добавьте свои собственные файлы виртуального хоста.
------- vhosts / example.conf --------------
<VirtualHost *:80> ServerName example.com DocumentRoot "/usr/local/apache/htdocs/drupal7" ServerAdmin admin@example.com ServerAlias example.com LogLevel warn ErrorLog "/usr/local/apache/htdocs/logs/example.error.log" CustomLog "/usr/local/apache/htdocs/logs/example.access.log" "%t %a %>s \"%r\" %b %D" <Directory "/usr/local/apache/htdocs/drupal7"> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </Directory> <Location /> Order allow,deny Allow from all </Location> <IfModule mod_suphp.c> suPHP_UserGroup apache apache </IfModule> <Directory /usr/local/apache/htdocs/drupal7> AllowOverride All RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE image/jpg AddOutputFilterByType DEFLATE image/png AddOutputFilterByType DEFLATE image/gif AddOutputFilterByType DEFLATE image/ico </Directory> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 30 days" ExpiresByType text/plain "access plus 30 days" ExpiresByType text/html "access plus 30 days" ExpiresByType text/xml "access plus 30 days" ExpiresByType text/css "access plus 30 days" ExpiresByType application/xml "access plus 30 days" ExpiresByType application/xhtml+xml "access plus 30 days" ExpiresByType application/rss+xml "access plus 30 days" ExpiresByType application/javascript "access plus 30 days" ExpiresByType application/x-javascript "access plus 30 days" ExpiresByType image/gif "access plus 30 days" ExpiresByType image/jpg "access plus 30 days" ExpiresByType image/png "access plus 30 days" ExpiresByType image/x-icon "access plus 30 days" </IfModule> </VirtualHost>
------конец------------------------------
Таким образом, вы добавите новый файл vhost для каждого поддомена, для которого вы хотите создать отдельный хост. Измените директивы ServerName, ServerAlias, <Directory ... и <Location в соответствии с вашими потребностями. т.е. git.example.com, sub1.example.com, sub2.example.com и т. д.