Onde no Apache 2 você define a diretiva ServerName globalmente?

37

NOTA: Isso está relacionado à minha pergunta: "O Apache 2.4 não será recarregado, tem algum problema com a minha configuração? ".

Estou tentando testar um site local, localmente. Pelo que entendi, o Apache 2 (e talvez o Apache também) tem algo chamado VirtualHost. Meu pouco entendimento me diz que o virtualhosting é uma maneira em que um servidor / endereço IP pode servir vários domínios.

De qualquer forma, estou recebendo o seguinte erro ao executar o Apache 2 configtestpara ver onde estou falhando. Estou executando o Apache 2.4.10-1 e parece que muitas mudanças ocorreram entre o Apache 2.2 e o Apache 2.4, das quais não estou ciente.

$ sudo apache2ctl configtest
[sudo] password for shirish:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Este é o /etc/hostsarquivo:

 $ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    debian mini

Eu também vejo um /etc/hosts.confarquivo vazio . Talvez os dados em /etc/hostsprecisem ser copiados para /etc/hosts.confque o servidor obtenha conhecimento?

Meu nome de host:

$ hostname
debian

Este é o arquivo de configuração do site:

$ cat /etc/apache2/sites-available/minidebconfindia.conf
<VirtualHost mini:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html/in2014.mini/website

    <Directory />
        Options +FollowSymLinks +Includes
        Require all granted
    </Directory>

    <Directory /var/www/html/in2014.mini/website/>
        Options +Indexes +FollowSymLinks +MultiViews +Includes
        Require all granted
    </Directory>
</VirtualHost>

Também li sobre a ligação a endereços e portas , mas não entendi muito bem por várias razões. Ele não fornece / compartilha um exemplo de qual arquivo essas linhas precisam ser colocadas e o que virá antes e depois. Um exemplo teria sido muito melhor.

Fiz isso e reiniciei o servidor, mas ainda recebo o mesmo erro.

~$ sudo apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Parece que existem três arquivos de configuração no Debian que eu preciso conhecer e entender.

/etc/apache2$ ls *.conf
apache2.conf  ports.conf

e

/etc/apache2/conf.d$ ls *.conf
httpd.conf

Aparentemente, apache2.conf É o arquivo de configuração global, enquanto o httpd.conf é um arquivo de configuração do usuário. Também existe o ports.conf. O apache2.conf e o ports.conf estão no padrão, exceto que eu alterei o nível de log do Apache de warnpara debug.

Eu tentei outra coisa:

$ sudo apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
127.0.1.1:80           debian (/etc/apache2/sites-enabled/minidebconfindia.conf:1)
*:80                   127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Talvez alguém tenha mais discernimento.

shirish
fonte

Respostas:

43

O arquivo para editar:

/etc/apache2/apache2.conf

Comando para editar o arquivo:

sudo nano /etc/apache2/apache2.conf

Para um nome de servidor global, você pode colocá-lo na parte superior do arquivo (fora das tags de host virtual).

A primeira linha se parece com:

ServerName myserver.mydomain.com

Em seguida, salve e teste a configuração com o seguinte comando:

apachectl configtest

Voce deveria pegar:

Sintaxe OK

Em seguida, você pode reiniciar o servidor e verificar se não recebe a mensagem de erro:

sudo service apache2 restart
Mark N Hopgood
fonte
2
Esta é a resposta correta do Debian. Eu tentei /etc/apache2/conf-available/fqdn.conf, ou servername.confou httpd.confsem sucesso. Debian Jessie, eapache 2.4.10
Dr. Beco
2
Se você tiver conf-available/e conf-enabled/, crie um arquivo conf-available/e use o comando a2enconfpara habilitá-lo. Desta forma, o dpkg não irá perturbá-lo sobre as mudanças untracked quando / se as apache2-commonatualizações de pacotesapache2.conf
Kevin
O arquivo conf-availableapós isso e uma edição podem estar /etc/apache2/conf-available/servername.confcom conteúdo ServerName myserver.mydomain.com(experimentado no Raspberry Pi, Apache 2.4.10, Debian 8 (Jessie), kernel do Linux 4.4.34).
Peter Mortensen
@PeterMortensen, você poderia usar o exemplo compartilhado para que eu possa entender o que você quer dizer.
Shirish
O arquivo não existe
Preto
5

Você deve definir a diretiva ServerName :

ServerName localhost

No Debian, você pode configurá-lo /etc/apache2/conf.d/httpd.conf.

No macOS, você pode configurá-lo em /private/etc/apache2/httpd.conf .

cuonglm
fonte
5
No Ubuntu, defina-o no /etc/apache2/apache2.conf
macki
1
Debian ou: apache2.conf.
Dr Beco
1
Para quais versões do Apache / Debian isso funciona? Eu não acho que funcione para o Apache 2.4. Poderia ser em /etc/apache2/apache2.confvez disso.
Peter Mortensen
funciona, Apache 2.4 no Debian 8
erajuan
2

Para localizar o arquivo de configuração do Apache, tente executar o seguinte comando:

apachectl -t -D DUMP_INCLUDES

Em seguida, edite esse arquivo e localize a linha com ServerNamee remova o comentário, para que fique assim:

ServerName localhost
kenorb
fonte
0

No arquivo de configuração apache24, você verá a linha ServerName:80:

  1. Deixe em branco.
  2. Então abaixo dessa linha no espaço vazio escreva:
    ServerName www.name (of your official domain or website.com:80)
  3. Salve o arquivo de configuração.
  4. Vá para cmd, abra-o como administrador, altere dirpara onde apache24 está
  5. Em seguida, cd apache24em seguida, cd binem seguida, httpd.exe

Você verá que o problema está resolvido.

Rachel Horsham
fonte