editando arquivos vhosts e hosts ubuntu do apache?

5

Acabei de instalar o Ubuntu (11.04).

Eu instalei o apache / mysql / php etc.

Eu tenho alguns sites em

/var/www/site1  
/var/www/site2  
/var/www/site3  

Eu quero poder acessá-los em

http://site1.local  
http://site2.local  
http://site3.local

Então, no meu arquivo hosts eu tenho

127.0.0.1   site1.local  
127.0.0.1   site2.local  
127.0.0.1   site3.local  

Então copiei /etc/apache2/sites-available/default 3 vezes.

agora eu tenho:

/etc/apache2/sites-available/site1  
/etc/apache2/sites-available/site2  
/etc/apache2/sites-available/site3  

Tudo isso parece (com nomes de sitex apropriados)

<VirtualHost site1.local>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/site1
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/site1/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

No terminal, eu chamo

sudo a2ensite site1 site2 site3 && sudo /etc/init.d/apache2 reload

O que parece funcionar exceto que apenas um dos vhosts funciona ao mesmo tempo (incluindo o padrão), O que estou fazendo errado?

Quando eu executo o comando reload eu recebo
  
  • Como recarregar o servidor web config apache2
      apache2: Não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor,
      usando 127.0.1.1 para ServerName
      [Sex Apr 15 10:45:27 2011] [avisar]   NameVirtualHost *: 80 não tem   VirtualHosts
  •   
    
por Hailwood 15.04.2011 / 00:26

2 respostas

8

Arquivo: / etc / hosts

127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local

Arquivo: /etc/apache2/apache2.conf

[...]
NameVirtualHost *:80
[...]

Arquivos: / etc / apache2 / sites-disponíveis / site {i} .local.conf (em vez de {i} inserir número: 1 ou 2 ou 3)

<VirtualHost *:80>
    ServerName site{i}.local
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/site{i}
    [...]
</VirtualHost>

No diretório / etc / apache2 / sites-enabled / crie links simbólicos:

@site{i}.local.conf

Reinicie o apache e divirta-se:)

    
por vbert 15.04.2011 / 03:17
0

Existe um script que torna isso simples para você - link

Isso eventualmente faz o mesmo, como explica as respostas dadas, mas faz isso em apenas um comando, por exemplo. -

sudo virtualhost create mysite.local my_site

Também permite excluir um host que você criou

sudo virtualhost delete mysite.local my_site

Apenas observe que o "my_dir" assume que ele começa após / var / www

Então, se a pasta do seu site estiver em / var / www / my_site

Você deve executar isto (passar o caminho do diretório sem / var / www) -

sudo virtualhost create mysite.local my_site

Você também pode modificar o arquivo de script & amp; remover o caminho padrão "/ var / www" para que você possa passar um caminho absoluto para o diretório do site

    
por Nitish Dhar 24.05.2014 / 21:59