11

Web 開発作業用に、cnm を含むさまざまな仮想ホストがあります。の

sites-available/cnm

私のファイルは非常に簡単に言います:

<VirtualHost *:80>
    ServerName cnm
    DocumentRoot /var/www/cnm/public_html
</VirtualHost>

Ubuntu 13.10 にアップグレードし、ブラウザで cnm/ にアクセスすると、デフォルト ファイルに示されていると思われる /var/www/index.html ファイルが表示されます。

sites-available/000-default.conf

これは(とりわけ)次のように述べています。

<VirtualHost *:80>
    DocumentRoot /var/www

cnm/ を参照するときに Apache に cnm ドキュメント ルートを読み取らせるにはどうすればよいですか?

ノート:

  1. 私はすでに、sites-available/cnm ファイルの名前を sites-available/cnm.conf に変更して、 および で有効にしようとa2ensite cnmservice apache2 reloadました。それは良いことですが、何も変わりません。

  2. <VirtualHost *:80><VirtualHost cnm.localhost>または に変更しようとしました<VirtualHost cnm>。それは何もしませんでした。

4

7 に答える 7

12

Ubuntu 13.10 は apache 2.4を使用します。すべての apache 構成を確認する必要があります。ただし、この現在のケースでは、 /etc/apache2/sites-available で終わっていない場合、 a2ensiteandコマンドはファイルを表示できないことに注意してください。そのため、名前を変更して実行します。a2dissite.confsites-available/cnm.confa2ensite cnm

次に、仮想ホストの定義は確かに の方が優れています。これは、この仮想ホストがポート 80*:80のすべての IP インターフェイス ( ) に対してアクティブ化されていることを意味します。または、ここでは有効な値ではありません。IP 番号 (Apache サーバーの IP) のみ、またはすべて、およびポート番号.*cnm.localhostcnm*

次に、これらのコマンドを実行して、構成がApacheによってどのように読み取られるかを確認します。

# load apache env
# be careful, there is a dot and a space
. /etc/apache2/envvars
# Check apache Virtualhosts config
apache2 -S

次のようなものを取得する必要があります。

VirtualHost configuration:
*:80                   is a NameVirtualHost
     default server something (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost something (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost cnm (/etc/apache2/sites-enabled/cnm.conf:4)

問題がなく、hostsファイルに正しいIPがありcnm、pingでそれをテストできる場合は、 ServerNamehttp://cnm/に cnm を持つ仮想ホストを使用する必要があります。

デフォルトの Virtualhost から応答がある場合は、Apache が、その IP/ポートで使用可能な ServerName と ServerAlias のリストの Host ヘッダーで使用されている名前を見つけられず、デフォルトの Virtualhost にフォールバックしていることを意味します。本当に立ち往生している (そして再起動するのを忘れていない) 場合は、いつでもデフォルトの仮想ホストを削除して、作業中のものだけを保持できます。

于 2013-11-07T16:58:51.457 に答える
5

私の問題に対する答えを見つけました。/etc/apache2/sites-enabled 内のファイルを削除する必要がありました。

  1. /etc/apache2/sites-enabled 内のファイルを削除します
  2. /etc/apache2/sites-available 内の構成ファイルの名前を変更して、末尾が .conf になるようにします。
  3. サイト利用可能なファイルごとに、 を実行しますsudo a2ensite mysite
  4. 走るsudo service apache2 reload
于 2013-11-07T17:47:27.533 に答える
1

この問題に対する答えを見つけました:

にアップグレードする場合Ubuntu 13.10DocumentRoot違いはないようです。

これは、Apache 2.4 がディレクトリ構成を別の場所に移動したためです。古い.confファイルにはまだ次の行があります。

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

ディレクティブを削除 (またはコメント アウト) して、次の<Directory>もののみを作成します。

    DocumentRoot "/var/www/myVhost"

service apache2 reload設定をリロードしてくださいDocumentRoot。:)

于 2013-11-19T15:51:35.107 に答える
0

000-default を無効にして apache をリロードする方法と同じ問題がありますが、同時に vhost を 1 つだけ持つ必要があるため、これは解決策ではありません :(

sudo a2dissite 000-default.conf
sudo service apache2 reload
于 2014-07-29T22:42:45.920 に答える
0

同様の問題に遭遇しました。サーバー名と FQDN はデフォルトと同じで、/var/www/html ディレクトリで実行されていました。デフォルトの構成を無効にすると、サイトは簡単に機能しました。ありがとう@regilero。

sudo a2dissite 000-default.conf

私のためにそれを修正しました。

于 2015-11-28T06:46:44.707 に答える
0

ファイル構成「cnm」の名前を拡張子 .conf に変更します。

mv sites-available/cnm sites-available/cnm.conf
a2ensite sites-available/cnm.conf

そして準備完了!

service apache2 reload
于 2014-01-31T22:20:47.407 に答える