Userdir com o Virtual Host (Apache2)

3

Usando o Ubuntu 16.04 e o Apache 2.4.7 Eu quero fazer dois tipos diferentes de userdir.

  1. Os dados estão em /home/user/public_html/ e são acessados somente via www.sample.com/~user/. (www2.sample.com/~user/ não deve funcionar.)
  2. Os dados estão em /home/user/public_html2/ e são acessados somente via www2.sample.com/~user/. (www.sample.com/~user/ não deve funcionar.)

Eu terminei de fazer os dois hosts virtuais usando /etc/apache2/sites-availabile/000-default.conf e tentei modificar o mods-available / userdir.conf. Foi fácil tornar public_html ou public_html2 acessível, mas não conseguiu tornar ambos acessíveis com diferentes nomes de host. Você poderia me ensinar como fazer isso?

Eu não consigo escrever código como é, mas 000-default.conf e userdir.conf são como estes:

000-default.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/www
    ServerName www.sample.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</irtualHost>
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/www2
    ServerName www2.sample.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</irtualHost>

userdir.conf (A primeira metade deste código é o userdir.conf original. Eu simplesmente copiei e colei abaixo do original, e mudei public_html para public_html2.)

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled root
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>
<IfModule mod_userdir.c>
    UserDir public_html2
    UserDir disabled root
    <Directory /home/*/public_html2>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>
    
por Nickel 15.11.2016 / 13:23

1 resposta

0

Não tenho certeza se 100% entendeu sua pergunta, mas suponho que você esteja solicitando dois domínios diferentes em que cada um deles use um UserDir diferente.

EDITAR : você estava no caminho certo. A única coisa que você perdeu, é que você precisava colocar cada uma das duas configurações UserDir em suas respectivas configurações do VirtualHost, como visto abaixo.

Para isso, você precisa criar dois hosts virtuais e cada host virtual teria suas próprias configurações UserDir.

O primeiro host virtual conteria o seguinte:

# /etc/apache2/sites-available/com.sample.www.conf
<VirtualHost *:80>
    ServerName www.sample.com

    <IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root
        <Directory /home/*/public_html>
            AllowOverride FileInfo AuthConfig Limit Indexes
            Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
            <Limit GET POST OPTIONS>
                Require all granted
            </Limit>
            <LimitExcept GET POST OPTIONS>
                Require all denied
            </LimitExcept>
        </Directory>
    </IfModule>
</VirtualHost>

O segundo host virtual conteria o seguinte:

# /etc/apache2/sites-available/com.sample.www2.conf
<VirtualHost *:80>
    ServerName www2.sample.com
    UserDir public_html2

    <IfModule mod_userdir.c>
        UserDir disabled root
        <Directory /home/*/public_html2>
            AllowOverride FileInfo AuthConfig Limit Indexes
            Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
            <Limit GET POST OPTIONS>
                Require all granted
            </Limit>
            <LimitExcept GET POST OPTIONS>
                Require all denied
            </LimitExcept>
        </Directory>
     </IfModule>
</VirtualHost>

Uma vez feito isso, você precisa ativar os 2 arquivos de configuração do host virtual e reiniciar o Apache.

$ sude a2dissite 000-default.conf
$ sudo a2ensite com.sample.www.conf
$ sudo a2ensite com.sample.www2.conf
$ sudo apache2ctl restart

Agora, quando você abrir www.sample.com/~dan/ , usará /home/dan/public_html/ e quando você abrir www2.sample.com/~dan/ , usará /home/dan/public_html2/

    
por Dan 15.11.2016 / 14:59