Як налаштувати віртуальний хост для місцевого розвитку


10

Ubuntu 11.04 встановлений з apache2 та всіма встановленими пакетами. Я спробував більшість блогів і зробив Google та інші форуми своїми найкращими друзями, але я не в змозі вирішити цю проблему.

Мені потрібно встановити названий віртуальний хост у моїй локальній системі для розвитку.

Я створив каталог "vivek" в /var/wwwі скопіював типовий index.html і відредагував деякі елементи.

Я додав файл vivek.comу /etc/apache2/sites-availableтакий спосіб:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</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 ${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>

Тобто я додав наступні рядки

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>

У файл за замовчуванням, який вже був у папці "Доступні сайти" (зайняв резервну копію файлу за замовчуванням перед редагуванням)

Додано це у файл хостів, присутні у / etc / hosts

127.0.0.1 localhost
127.0.1.1 vivek-PC
127.0.0.1 www.vivek.com

Виконував такі операції без помилок:

root@vivek-PC:~# a2ensite vivek.com
Enabling site vivek.com.
Run '/etc/init.d/apache2 reload' to activate new configuration!
root@vivek-PC:~# /etc/init.d/apache2 reload
* Reloading web server config apache2

Коли я ввійшов www.vivek.com, він дав мені за замовчуванням index.html в, /var/wwwале не один присутній у папці / var / www / vivek, яка редагується.

Пізніше я відредагував index.html, /var/wwwале я все одно отримував той самий index.html (за замовчуванням до редагування). Всі index.htmls були відредаговані, але, схоже, Apache має якийсь прихований, який продовжує з'являтися, коли я запитуюwww.vivek.com

Іронічна річ - це після того, як я перезавантажуюсь - Apache підійшов чудово, але мій сайт - www.vivek.comне з'явився (навіть із index.html, який прихований, бог знає де!) .. Тепер мій браузер показує "Неможливо підключитися "

Будь ласка, допоможіть. Я намагаюся налаштувати це з тижня, не маючи успішного результату.

Відповіді:


6

Пізніше я редагував index.html з / var / www, але все одно отримував той самий index.html (за замовчуванням до редагування). Всі index.htmls були відредаговані, але, схоже, Apache має якийсь прихований, який продовжує з'являтися, коли я запитую про www.vivek.com

Читаючи це, я думаю, що ви переглядаєте кешований файл. Замість натискання F5або натискання кнопки «Оновити» пропустіть кеш на оновлення, натиснувши Ctrl+ F5.

Крім того, використовуйте програму командного рядка curl(яка не встановлена ​​за замовчуванням). Приклад використання:

$ curl -i http://localhost/
HTTP/1.1 200 OK
Date: Sat, 02 Jul 2011 00:42:01 GMT
Server: Apache/2.2.17 (Ubuntu)
Last-Modified: Fri, 01 Jul 2011 04:12:49 GMT
ETag: "4507-b1-4a6fa3b114149"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Одне зауваження: я зробив наступне при чистій установці apache:

  • Додайте перший файл конфігурації в /etc/apache2/sites-available/vivek.com
  • (залишити /etc/apache2/sites-available/default недоторканим )
  • Біжи sudo a2ensite vivek.com
  • Біжи sudo /etc/init.d/apache reload

Я отримую ті ж повідомлення, що і ти. Однак сервер не вдалося запустити. Якщо зупинити використання сервера sudo /etc/init.d/apache2 stopта запустити його знову sudo /etc/init.d/apache2 start, він взагалі відмовився запускатись. Переглядаючи журнал помилок, /var/log/apache2/error.logвиявлено деякі помилки:

[Sat Jul 02 00:48:09 2011] [notice] Graceful restart requested, doing restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sat Jul 02 00:48:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Тож порт 80, здається, використовується. Але якщо Apache ще не запущений, я можу підтвердити, що нічого не слухає на порту 80, запустивши sudo netstat -tpln. Я переглянув конфігурацію і дійшов висновку, що рядок Listen 80слід видалити з вашого файлу конфігурації /etc/apache2/sites-available/vivek.com. Після цього я міг запустити сервер заново і, використовуючи curl, я підтвердив, що сервер правильно відповідає на запити.

KISS , ваш другий блок vhost зайвий, оскільки його охоплює /etc/apache2/sites-available/default. Наступний файл конфігурації /etc/apache2/sites-available/vivek.com:

<VirtualHost *:80>
    ServerName www.vivek.com
    DocumentRoot /var/www/vivek

    # Other directives here
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/vivek/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

1

Існує сценарій, який робить це простим для вас - https://github.com/RoverWire/virtualhost

У кінцевому підсумку це робить те саме, що пояснюється наведеними відповідями, але це робиться лише в одній команді, наприклад. -

sudo virtualhost create mysite.local my_site

Це також дозволяє видалити створений вами хост

sudo virtualhost delete mysite.local my_site

Зауважте лише, що "my_dir" передбачає, що він починається після / var / www

Тож якщо папка вашого сайту знаходиться в / var / www / my_site

Ви повинні запустити це (пройти шлях до каталогу / / var / www) -

sudo virtualhost create mysite.local my_site

Ви також можете змінити файл сценарію та видалити шлях за замовчуванням "/ var / www", щоб ви могли пройти абсолютний шлях до каталогу сайту

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.