Como altero o diretório raiz de um servidor apache? [fechadas]

241

Alguém sabe como alterar a raiz do documento do servidor Apache? Eu basicamente quero localhostvir do /users/spencer/projectsdiretório em vez de /var/www.

Editar

Acabei descobrindo. Alguns sugeriram que eu alterasse o httpd.confarquivo, mas acabei encontrando um arquivo /etc/apache2/sites-available/defaulte alterei o diretório raiz de /var/wwwpara /home/myusername/projects_foldere funcionou.

Spencer Cooley
fonte
Stack Overflow é um site para perguntas sobre programação e desenvolvimento. Esta questão parece estar fora de tópico, porque não se trata de programação ou desenvolvimento. Consulte Quais tópicos posso perguntar aqui na Central de Ajuda. Talvez a falha no servidor ou a troca de pilha do webmaster seja um lugar melhor para perguntar.
jww 24/09/18

Respostas:

209

Você precisa alterar a DocumentRootconfiguração do seu httpd.confarquivo. Provavelmente, estará sob algo como/etc/apache2/conf/httpd.conf

Use seu editor favorito (eu recomendo o Vim ), procure DocumentRoote mude para /users/spencer/projects. Além disso, veja um pouco mais abaixo uma configuração parecida com esta:

<Directory "/var/www">

Você também deseja alterar o conteúdo das aspas para o seu novo diretório. Isso dá ao Apache acesso para ler esse diretório quando um usuário faz uma solicitação que o chama.

Agora reinicie o serviço apache ( httpd -k restart) e você deve estar pronto.

Edit : os arquivos de configuração do site Apache2 agora são normalmente mantidos em /etc/apache2/sites-available/ (Debian, Ubuntu, etc.).

RDL
fonte
6
Abri o /etc/apache2/httpd.conf, mas o arquivo estava em branco. Estou abrindo com o gedit.
Spencer Cooley
3
O arquivo pode estar em /etc/httpd/conf/httpd.conf, dependendo do seu sabor do Linux.
Chris Henry
3
o arquivo httpd.conf está vazio, mas eu encontrei um arquivo em etc / apache2 / sites-available / default e alterei o diretório raiz lá. Eu provavelmente deveria ter mencionado que isso não está em um servidor real. Estou configurando um ambiente de desenvolvimento local. Não tenho certeza se isso faz a diferença
Spencer Cooley
3
Seria possível ativar / var / www e / home / myusername / projects_folder ao mesmo tempo? E como devo configurar? obrigado.
Paul Lo
3
A "resposta" é realmente obsoleta. A resposta correta de acordo com os documentos do Ubuntu 18.x é Alterar o diretório raiz do Apache ou mover o projeto para / var / www / html. Para alterar o diretório raiz do Apache, execute: cd / etc / apache2 / sites-available. Em seguida, abra o arquivo 000-default.conf usando o comando: nano 000-default.conf. Edite a opção DocumentRoot: DocumentRoot / path / to / my / project. (ver askubuntu.com/questions/337874/… )
sea26.2
263

Observe que isso se aplica apenas ao Ubuntu 14.04 LTS e a versões mais recentes.

No meu Ubuntu 14.04 LTS, a raiz do documento foi definida como /var/www/html. Foi configurado no seguinte arquivo:

/etc/apache2/sites-available/000-default.conf

Então, basta fazer um

sudo nano /etc/apache2/sites-available/000-default.conf

e altere a seguinte linha para o que você deseja:

DocumentRoot /var/www/html

Faça também um

sudo nano /etc/apache2/apache2.conf

e encontre isso

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

e mude /var/www/htmlpara o diretório preferido

e salve.

Depois de salvar as alterações, basta reiniciar o servidor da web apache2 e pronto! :)

sudo service apache2 restart


Se você preferir um editor de texto gráfico, poderá substituí-lo sudo nanopor a gksu gedit.

katze_sonne
fonte
1
@ Paul Lo: Eu não tentei isso no Ubuntu 13.10, apenas no Ubuntu 14.04; Como tenho certeza de que na primeira vez em que configurei o apache (que estava no Ubuntu 12.04), não havia esse diretório. Então, sim, acho que isso está disponível apenas no Ubuntu 14.04 LTS e mais recente. No entanto, você pode dar uma olhada nas outras respostas. Os upvotes sugerem que eles ajudaram outras pessoas, talvez eles também trabalhem com o Ubuntu 13.10.
55568 mozzbozz #
1
No entanto obrigado por perguntar, eu apenas editado esta informação em resposta a fim de que não havia mais ninguém entra na armadilha de tentar isso com versões mais antigas do Ubuntu (y)
mozzbozz
3
@mozzbozzm, você está certo. Apenas 14.04. Realmente uma escolha estranha, agora de repente tendo var/www/htmlcomo raiz padrão. Eles estão realmente tentando desperdiçar o tempo das pessoas? :)
davidkonrad
4
Estou recebendo um erro proibido You don't have permission to access / on this server.ao pressionar localhost: 80 no meu navegador. Preciso mudar a porta?
Costa
3
@Costa Resolvi o problema adicionando <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> o arquivo /etc/apache2/apache2.conf
Keenan Gebze
42

Eu tive que editar /etc/apache2/sites-available/default. As linhas são as mesmas mencionadas por RDL.

usuario
fonte
3
Uma edição sugerida por @pabloab dizia o seguinte: "O Apache 2.4 e superior requerem .confno final e, por padrão, têm o 000-prefixo". O resultado é /etc/apache2/sites-available/000-default.conf. Eu não testei isso, mas pode ajudar algumas pessoas.
Nick
^^ isso consertou. Onde está documentado que eu exijo .conf no final dos arquivos disponíveis nos meus sites?!? Eu tenho cerca de 20 hosts virtuais que foram desativados e off-line após uma atualização e, após algumas horas, localizá-lo e renomear os arquivos disponíveis nos sites corrigiram isso para mim.
James Perih
23

Isto é para Ubunutu 14.04:

No arquivo /etc/apache2/apache2.conf, deve ser o seguinte, sem o nome do diretório:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

e no arquivo /etc/apache2/sites-available/000-default.confvocê deve incluir o nome do diretório personalizado, ou seja, www:

DocumentRoot /home/username/www

Caso contrário, ocorrerá um erro ao carregar o servidor: Forbidden You don't have permission to access / on this server

androsfat
fonte
Obrigado amigo :) Isso funcionou para mim no Ubuntu 16.04
Magesh Kumaar 21/16/16
2
Também funcionou no Debian 8
androsfat
15

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/apache2e 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.confsendo 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-availablee faça a cópia sudo cp 000-default.conf example.com.conf, edite agora o arquivo sudo gedit example.com.confpara:

<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 DocumentRootestá 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.come altere o proprietário e o grupo padrão do diretório, por exemplo, se o seu nome de usuário conectado for ubuntualterar as permissões como sudo chown ubuntu:www-data example.com. Isso concede acesso total ao usuário ubuntue 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.confe 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 a2ensiteea2dissite respectivamente. Agora, como nosso example.com.confarquivo 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.confe 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.comna localhostporta padrão de 80.

O a2ensitecomando 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.confe adicionar Listen 8080logo 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 localhostelocalhost:8080

lordvcs
fonte
4

Eu estava trabalhando com o LAMP e, para alterar a pasta raiz do documento , editei o arquivo padrão que está lá na pasta / etc / apache2 / sites-available . Se você quiser fazer o mesmo, edite da seguinte maneira

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Depois disso, se você digitar localhost no navegador, ele carregará o conteúdo * / home / nome de usuário / new_root_folder * .

Shashidhara
fonte
4

Se você não pudesse encontrar http.confe seguisse o caminho de Nick.

Reinicie o Apache usando sudo service apache2 restart

Nitin
fonte
4

Para o apache2 no Linux Mint 17.3 Cinnamon de 64 bits, o seguinte funciona:

  1. Na /etc/apache2/sites-available/abrir o 000-default.confarquivo e mudar a raiz do documento para o caminho absoluto do seu diretório.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. Em /etc/apache2/aberto httpd.conf, e adicione uma <Directory>tag referenciando seu diretório e contendo exatamente as mesmas configurações da tag var/www.

    sudo vim /etc/apache2/apache2.conf

    Na minha máquina, era assim:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Nota: Na primeira etapa, você provavelmente deseja alterar a raiz do documento no default-ssl.confarquivo também para fins de SSL. Mas, até onde sei, isso não é necessário para que um ambiente geral de desenvolvimento esteja em execução.

stackato
fonte
2

No apache versão 2.4.18 (Ubuntu).

1. vá para este arquivo /etc/apache2/apache2.conf procure <Directory /var/www/>e substitua no seu diretório ......

2. vá para /etc/apache2/sites-available/000-default.conf procure DocumentRoot /var/www/htmle substitua no seu DocumentRoot ....

habibun
fonte
Eu fiz as duas coisas. Ele ainda mostra Proibido Você não tem permissão para acessar / neste servidor.
programador
verifique a permissão da pasta se não estiver no diretório inicial.
habibun
2

Caso você esteja usando o Ubuntu 16.04. Atualize o 000-default.conf no diretório / etc / apache2 / sites-available.

aqui -> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html / YourFolder

Shashank Saxena
fonte
1

Eu fiz o /var/wwwlink para o diretório necessário (por exemplo /users/username/projects) e as coisas ficaram bem depois disso.

No entanto, naturalmente, o original /var/wwwprecisa ser excluído - ou renomeado.

maan81
fonte
0

Se alguém instalou LAMPna /optpasta, /etc/apache2não é isso que você está procurando.

Procure o httpd.confarquivo em/opt/lampp/etc/httpd.conf .

Mude a linha nesta pasta e salve-a no terminal.

Yogesh Gupta
fonte
0

No RedHat 7.0: /etc/httpd/conf/httpd.conf

ehacinom
fonte
0

Se você estiver usando o Linux Mint (opinião pessoal, de todas as distros que esta está me deixando feliz), siga este:

1- Vá para / etc / apache2 / sites-available e edite 000-default.conf 2- Procure por DocumentRoot, exemplo DocumentRoot / var / www / html, você muda para o seu respectivo diretório; 3- Abra o terminal e digite: sudo service apache2 restart

EDITADO ----- Percebo que no Mint você acessa o /etc/apache2/apache.conf, substitua / var / www no seu respectivo caminho, em vez de reiniciar o servidor (etapa 3).

É isso aí.

Marcelo Agimóvel
fonte
0

Aplica-se ao Ubuntu 14.04 e versões posteriores. Certifique-se de fazer o backup dos seguintes arquivos antes de fazer alterações.

1. Abra /etc/apache2/apache2.confe procure a <Directory /var/www/>diretiva e substitua o caminho por /home/<USERNAME>/public_html. Você pode usar * em vez de.

2. Abra /etc/apache2/sites-available/000-default.confe substitua a DocumentRootpropriedade value de /var/www/htmlpara /home/<USERNAME>/public_html. Também <Directory /var/www/html>para <Directory /home/<USERNAME>/public_html.

3.Abrir /etc/mods-available/php7.1.conf. Encontre e comente o seguinte código

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

Não ligue php_admin_flag engine OFF sinalizador, pois o motivo é mencionado no comentário acima do código da diretiva. Também a versão php pode ser 5.0, 7.0 ou qualquer coisa que você instalou.

Criar public_htmldiretório em home/<USERNAME>.

Reinicie o Apache serviço por comando de execução sudo service apache2 restart.

Teste executando o script de amostra no servidor.

user1184294
fonte
-3

Se você está (como eu) encontrando esta postagem pelo Google:

Encontrei-o em /etc/apache2/sites-available/000-default.conf

Borkee
fonte
4
descreva sua resposta detalhada com código incorporado, em vez de apontar para um arquivo externo.
Christian MICHON