A maneira correta de alterar o diretório ou executar a partir de vários diretórios sob uma porta diferente para o apache2 é a seguinte:
Para o apache2, os arquivos de configuração estão localizados em /etc/apache2
e não usam um único arquivo de configuração como nas versões anteriores, mas são divididos em arquivos de configuração menores, /etc/apache2/apache2.conf
sendo o principal arquivo de configuração. Para servir arquivos de um diretório diferente, precisamos de um novo arquivo conf de host virtual. Os arquivos conf do host virtual estão localizados /etc/apache2/sites-available
(não edite arquivos nos sites habilitados). A instalação padrão do apache usa o arquivo conf do host virtual 000-default.conf
.
Comece criando um novo arquivo de host virtual, copiando o arquivo de host virtual padrão usado pela instalação padrão do apache (aquele que é executado no host local na porta 80). Mude para o diretório /etc/apache2/sites-available
e faça a cópia sudo cp 000-default.conf example.com.conf
, edite agora o arquivo sudo gedit example.com.conf
para:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Excluí as linhas não importantes do arquivo acima por questões de brevidade. Aqui DocumentRoot
está o caminho para o diretório no qual os arquivos do site devem ser servidos, como index.html
.
Crie o diretório a partir do qual você deseja servir os arquivos, por exemplo; mkdir example.com
e altere o proprietário e o grupo padrão do diretório, por exemplo, se o seu nome de usuário conectado for ubuntu
alterar as permissões como sudo chown ubuntu:www-data example.com
. Isso concede acesso total ao usuário ubuntu
e permite acesso de leitura e execução ao grupo www-data
.
Agora edite o arquivo conf apache /etc/apache2/apache2.conf
emitindo o comando sudo gedit apache2.conf
e encontre a linha <Directory /var/www/>
e abaixo da tag de fechamento </Directory>
, adicione o seguinte abaixo:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Agora, existem dois comandos para ativar ou desativar os arquivos de configuração do host virtual, que são a2ensite
ea2dissite
respectivamente. Agora, como nosso example.com.conf
arquivo usa a mesma porta ( 80
) usada pelo arquivo de configuração padrão ( 000-default.conf
), temos que desativar o arquivo de configuração padrão emitindo o comando sudo a2dissite 000-default.conf
e ativar nosso arquivo conf de virtualhost,sudo a2ensite example.com.conf
Agora reinicie ou recarregue o servidor com o comando sudo service apache2 restart
. Agora o apache serve arquivos do diretório example.com
na localhost
porta padrão de 80
.
O a2ensite
comando basicamente cria um link simbólico para o arquivo conf no diretório habilitado para site
Não edite arquivos no diretório ativado por sites (ou *), conforme indicado nesta resposta https://stackoverflow.com/a/41568701/2532763
Para alterar a porta e executar a partir de vários diretórios em portas diferentes:
Agora, se você precisar executar o diretório em uma porta diferente, altere o número da porta de 80 para 8080 editando o arquivo virtualhost como:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
e editar /etc/apache2/ports.conf
e adicionar Listen 8080
logo abaixo da linhaListen 80
Agora, podemos ativar o arquivo conf virtualhost padrão que é executado na porta 80, já que o diretório example.com usa a porta 8080, como sudo a2ensite 000-default.conf
Agora reiniciar ou recarregar o servidor com o comando sudo service apache2 restart
. Agora os dois diretórios podem ser acessados localhost
elocalhost:8080