Настройка Apache VirtualHost для нескольких сайтов

Настройка Apache VirtualHost для нескольких сайтов

Я пытаюсь настроить веб-сайт на своей машине и у меня возникли некоторые проблемы. Я создал прототип веб-сайта с помощью Flask и отладочного сервера и теперь хотел бы разместить его на некоторое время, пока я его отлаживаю. Это только для внутреннего использования в сети моей компании.

Похоже, я не могу правильно настроить Apache. В настоящее время я использую сайт по умолчанию, который ссылается на мой домашний каталог, поэтому я могу получать файлы с других машин через веб-браузер.

Я вообще ничего не менял apache2.conf, но вот мой httpd.conf

<Location /server-status>
    SetHandler server-status

    Order Deny, Allow
    Deny from all
    Allow from .mycompany.com
</Location>

Моя конфигурация по умолчанию, расположенная в /etc/apache2/sites-available/default, имеет

<VirtualHost *:80>
    ServerAdmin [email protected]

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinksMultiViews
        AllowOverride None
        Order allow,deny
        allow from .mycompany.com
    </Directory>
    <Directory /var/www/home/>
        Options Indexes FollowSymLinks MultiViews
        AllowOVerride None
        Order allow,deny
        allow from .mycompany.com
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

В то время как приложение, которое я пытаюсь включить, имеет следующий файл конфигурации, расположенный по адресу/etc/apache2/sites-available/Powermon

LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so

User p_user
Group p_group
FastCgiServer /home/p_user/Powermon/runp.fcgi -idle-timeout 300 -processes 5

<VirtualHost *:80>
    ServerName powermon
    DocumentRoot /home/p_user/Powermon/app/static
    Alias /static /home/p_user/Powermon/app/static

    AddHandler fastcgi-script fcgi
    ScriptAlias / /home/p_user/Powermon/runp.fcgi

    ErrorLog /home/p_user/Powermon/logs/powermon_error_log

    <Location />
        SetHandler fastcgi-script
    </Location>
</VirtualHost>

В пределах сайтов с поддержкой я увидел

000-default -> ../sites-available/default

Поэтому я добавил

010-powermon -> ../sites-available/Powermon

И когда я бегу, apache2ctl -Sя вижу

VirtualHost configuration:
wildcard NameVirtualHosts and _default_servers:
*:80            is a NameVirtualHost
    default server dhcp-ip-address.mycompany.com (/etc/apache2/sites-enabled/000-default:1)
    port 80 namevhost dhcp-ip-address.mycompany.com (/etc/apache2/sites-enabled/000-default:1)
    port 80 namevhost powermon (/etc/apache2/sites-enabled/010-powermon:7)
Syntax OK

Так что в настоящее время, когда я захожу machine-name/в браузере, я могу перемещаться по домашнему каталогу и просматривать файлы по мере необходимости. В идеале я хочу иметь возможность зайти machine-name/powermonи увидеть, как работает мое приложение.

решение1

Вы говорите, что хотите настроить виртуальные хосты Apache, но затем пишете следующее:

Так что в настоящее время, когда я захожу machine-name/в браузере, я могу перемещаться по домашнему каталогу и просматривать файлы по мере необходимости. В идеале я хочу иметь возможность зайти machine-name/powermonи увидеть, как работает мое приложение.

Путь на хосте не является виртуальным хостом. Ваша конфигурация настроена следующим образом: Трафик на powermonидет на одну конфигурацию. Трафик на dhcp-ip-address.mycompany.comидет на другую конфигурацию.

Таким образом, единственный способ настройки виртуального хоста Apache — это перейти по этому URL-адресу и получить следующее:

dhcp-ip-address.mycompany.com

Затем перейдите по этому URL-адресу и получите еще одну вещь:

powermon

Единственный способ действительно добиться этого через настройку виртуального хоста Apache — изменить /etc/hostsфайл вашего клиента веб-браузера следующим образом. Предположим, что эти виртуальные хосты находятся на сервере с IP-адресом 123.456.78.90. Откройте ваш hostsфайл — я работаю на Mac, поэтому вот как я это сделаю — следующим образом nano:

sudo nano /etc/hosts

И добавьте эту строку в конец файла:

123.456.78.90 powermon

Теперь, когда вы указываете в своем веб-браузере:

http://powermon

Вы получите имеющуюся у вас настройку виртуального хоста Apache.

Но опять же, вы смешиваете концепцию пути сервера с виртуальным хостом сервера. Поэтому вам нужно это уладить, прежде чем что-то делать. Кроме того, ваша конфигурация виртуального хоста powermonкажется разрозненной. Элементы за пределами <VirtualHost *:80>должны быть внутри. В противном случае эти параметры конфигурации просто будут использоваться конфигурацией всего сервера default. И настройки User& Groupтакже кажутся неуклюжими. Скрипты должны быть настроены так, чтобы их мог использовать пользователь и группа Apache. А не наоборот. Но если быть честным, вот как я бы это структурировал:

Пользователь p_user Группа p_group

Имя_сервера powermon DocumentRoot /home/p_user/Powermon/app/static Псевдоним /static /home/p_user/Powermon/app/static

    LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so

    FastCgiServer /home/p_user/Powermon/runp.fcgi -idle-timeout 300 -processes 5

    AddHandler fastcgi-script fcgi
    ScriptAlias / /home/p_user/Powermon/runp.fcgi

    ErrorLog /home/p_user/Powermon/logs/powermon_error_log

    <Location />
        SetHandler fastcgi-script
    </Location>

</VirtualHost>

решение2

Вы уверены, что создали мягкую ссылку на файл: /etc/apache2/sites-available/Powermon?

Некоторые, например:

cd /etc/apache2/sites-enabled/
ln -s ../sites-available/Powermon

Связанный контент