Precisa de ajuda para configurar o VirtualHost do Apache

1

Eu tenho uma máquina virtual rodando o Ubuntu. Quero digitar o navegador " link " e ver meu site do MediaWiki. Coloquei este site na pasta / var / www / mwiki e configurei o arquivo "default" do Apache. Mas quando eu tento abrir este site no navegador - seguinte página da web aberta: "A URL solicitada / mwiki / não foi encontrada neste servidor Apache / 2.2.11 (Ubuntu) mod_python / 3.3.1 Servidor Python / 2.6.2 na porta localhost 80 ".

Também neste servidor está executando outro site (sistema ReviewBoard). E corre perfeitamente. Quando eu digito "localhost / reviews" eu recebo a página de índice deste site. Eu tenho conhecimento mínimo de configuração do Apache.

Por favor, ajude.

/etc/apache2/sites-available/default :

<VirtualHost *:80>
ServerName localhost
DocumentRoot "/var/www/mwiki"
AddDefaultCharset UTF-8 

    <Location "/mwiki">
    Order allow,deny
    Deny from all
</Location>

</VirtualHost>

<VirtualHost *:80>
ServerName localhost
DocumentRoot "/var/www/reviews.mysite.com/htdocs"
AddDefaultCharset UTF-8 

# Error handlers
ErrorDocument 500 /errordocs/500.html

# Serve django pages
<Location "/reviews/">
    PythonPath "['/var/www/reviews.mysite.com/conf'] + sys.path"
    SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
    SetEnv PYTHON_EGG_CACHE "/var/www/reviews.mysite.com/tmp/egg_cache"
    SetEnv HOME "/var/www/reviews.mysite.com/data"
    SetHandler mod_python
    PythonHandler django.core.handlers.modpython
    PythonAutoReload Off
    PythonDebug Off
    # Used to run multiple mod_python sites in the same apache
    PythonInterpreter reviewboard_reviews_mysite_com
</Location>

<Location "/reviews/media">
    SetHandler None
</Location>

# Serve static media without running it through mod_python
# (overrides the above)
<Location "/reviews/errordocs">
    SetHandler None
</Location>

<Directory "/var/www/reviews.mysite.com/htdocs">
    AllowOverride All
</Directory>

# Alias static media requests to filesystem
Alias /reviews/media "/var/www/reviews.mysite.com/htdocs/media"
Alias /reviews/errordocs "/var/www/reviews.mysite.com/htdocs/errordocs"
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    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 /var/log/apache2/error.log

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

CustomLog /var/log/apache2/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>
    
por upstream 26.05.2011 / 16:14

1 resposta

2

Você não entendeu como <VirtualHost > funciona. Ao usar a hospedagem virtual baseada em nome (ou seja, o mesmo IP, vários nomes de host para distingui-los), você precisa ter o ServerName s exclusivo.

Além disso, você definiu seu DocumentRoot para /var/www/mwiki , o que faz com que http://localhost/ mostre seu wiki. Como você tem apenas um ServerName ( localhost ), sugiro adicionar um Alias em vez de um host virtual.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/var/www/reviews.mysite.com/htdocs"
    AddDefaultCharset UTF-8
    Alias /mywiki /var/www/mwiki
    # ...

Os Hosts Virtuais só são úteis se você tiver vários IPs ou nomes de host. Exemplos:

# Use ServerNames to distinct virtual hosts on 127.0.0.1
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
    ServerName site1.example.com
    DocumentRoot /var/www/site1.example.com
</VirtualHost>
<VirtualHost 127.0.0.1:80>
    ServerName site2.example.com
    DocumentRoot /var/www/site2.example.com
</VirtualHost>
<VirtualHost 127.0.0.2:80>
    ServerName meh.example.com
    DocumentRoot /var/www/meh.example.com
</VirtualHost>

Adicionado a /etc/hosts :

127.0.0.1   site1.example.com
127.0.0.1   site2.example.com
# note: the next line is not included in the vhost config
127.0.0.1   invalid.example.com
127.0.0.2   meh.example.com

Agora você pode visitar os hosts usando os domínios {site1, site2, meh} .example.com. Se você abrir 127.0.0.1 ou invalid.example.com , o primeiro vhost ( site1.example.com ) será escolhido.

    
por 26.05.2011 / 16:43