ローカル開発用の仮想ホストをセットアップする方法


10

apache2とともにインストールされたUbuntu 11.04および関連するすべてのパッケージがインストールされています。私はほとんどのブログを試し、グーグルや他のフォーラムを親友にしましたが、この問題を解決することはできません。

ローカルシステムに開発用の名前付き仮想ホストを設定する必要があります。

「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>

「sites-available」フォルダにすでに存在していたデフォルトのファイルへ(編集する前にデフォルトのファイルのバックアップを取った)

これを/ etc / hostsにある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.htmlは編集されていますが、Apacheにはいくつかの隠されたものがあるようです。www.vivek.com

そして皮肉なことに、Apacheは正常に起動しましたが、私のサイトは再起動した後www.vivek.com、表示されませんでした(隠されている神が隠されているindex.htmlでさえ!!)。 」

助けてください。私はこれを1週間から設定しようとしましたが、成功しませんでした。

回答:


6

その後、/ var / wwwからindex.htmlを編集しましたが、同じindex.htmlをまだ取得していました(編集前のデフォルト)。すべてのindex.htmlは編集されていますが、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、2番目の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

これは最終的に、与えられた回答で説明されているのと同じシンを実行しますが、たとえば1つのコマンドで実行します。-

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」を削除し、サイトディレクトリへの絶対パスを渡すこともできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.