OSXで以前にMAMPとAMPPSを使用したことがありますが、単にテストを目的としていますが、この質問はApacheサーバー上の実際のproduction Webサイトに関するものです。
ドメイン名がwww.example.com
の場合-これがLinux(おそらくDebianまたはUbuntu)にSudo apt-getとしてインストールされたApacheにあり、MAMPやAMPPなどのGUIを介していない場合は/var/www/public_html/www.example.com
または/var/www/public_html/example
になります
/var/www/public_html/yoururlhere
は、Linuxサーバーで最も一般的なタイプのセットアップですか?
ただし、/var/www/www.example.com
または/var/www/example
でもかまいませんか?
たとえば、http://canada.example.com
などのサブドメインがある場合、次のようになります。
/var/www/public_html/example/canada
または
/var/www/public_html/www.example.com/canada
http://www.example.com/~site1
のようなURLの場合、それは/var/www/public_html/example/site1
でしょうか、それとも何らかの形式のmod_rewriteが必要でしょうか?
一般的に、LinuxホストでApacheを使用するURL、特に主要なWebホスティング会社でこのようなことを行う最も一般的な方法は何ですか?
/var/www/public_html/www.example.comの下にあるのではなく、/ var/www/public_html/exampleにあるのでしょうか
これは完全に個人的な呼び出しです。選択したアンカーパスとその設定方法の両方に対して、(すべての一般的な場合において)技術的な影響はまったくありません。
そのため、何をするかは管理者次第です。最適なスキームを選択するために考慮する必要があるいくつかの考慮事項:
ssh
、sftp
、ftp
など.httpd
またはApache
ユーザーアカウントの下にありますか、またはWebサイトごとに個別のシステムアカウントを持っていますか?そして、より自然に「読む」ものと、たとえば、ファイルシステム上のディレクトリとしてそのまま存在する場合、ウェブサイト名でオートコンプリートを使用する機能。
「マス」仮想ホスティングでは、他のスキームを見つけることもできます。
ドメイン内のラベルの反転(基本的にドメイン名は右から左に読み取られるため):/var/www/public_html/com/example/canada
、/var/www/public_html/com/example/www
など.
特定のディレクトリ内のファイル/ディレクトリが多すぎないようにするには(ファイルシステムがこのケースをうまく処理しないため)、以前のポイントに基づいて、ある種のハッシュを行います。そうしないと、www
十分な識別:/srv/web/example/f/i/www.first.example
、/srv/web/example/s/e/www.second.example
、/srv/web/example/t/h/www.third.example
など(Webサイトwww.first.example
、www.second.example
、www.third.example
など)
他のスキームを想像できると思います。ウェブサイトが何らかのパネルで管理されている場合、パネル自体がファイルシステム上で物事を整理する独自の方法を備えている場合があります。
http://www.example.com/~site1 のようなURLの場合
通常、Unixの標準Apacheは~
をパスの非常に具体的な要素として使用し、これはmod_userdir
によって処理され、以前のURLを/home/site1/public_html
if site1
にマップします。ボックスのUnixユーザーです。しかし、これはすべてApacheの構成に依存します...
https://httpd.Apache.org/docs/2.4/mod/mod_userdir.html を参照してください
Webサイトは、ほぼすべてのディレクトリから提供できます。 /var/www
、/srv/www
、および/home/username
を見ました。 このスレッド によれば、srvディレクトリは「このシステムから提供されるデータ」用であるため、論理的に思えます。最近私が普段使っているものですが、/var/www
は今でも最も一般的だと思います。
複数のサイトをホストするという点では、標準的な手順はサイトごとに個別のディレクトリを使用することです。多くの場合、それぞれに「パブリック」サブディレクトリがあります。それらは、ドメイン、またはそれらを区別するのに役立つ別の名前を付けることができます。たとえば、/var/www/example.com/public
と/var/www/sub.example.com/public
ホスティングしているサイトに応じて、ログ用に個別のディレクトリを使用することができます。 /var/log/Apache2/example.com
などの複数のディレクトリを使用するか、パブリックディレクトリの隣にlogsディレクトリ、つまり/var/www/example.com/logs
を使用できます。
これは、答えるのが少し難しい質問です。質問にUbuntuが表示されてうれしいです。ただし、欠けているのは、ホスティングを使用するか、コントロールパネルを使用するかです。これはトリッキーになるところです。説明させてください。
数年前、Apache 2.0がリリースされたばかりの頃に、構造的な変更が行われましたが、それは常に実行されませんでした。以前は、すべてのサイト構成はApache自体の構成であるhttpd.confに配置されていました。これは必ずしも悪いことではありませんでしたが、より安全で管理しやすいように構成に積極的な変更が加えられました。この変更には2つの問題があり、現在も存在しています。 1つは、ApacheがさまざまなOSインストール用のビルドを作成しなかったこと、2つは、すべてのコントロールパネルが当時のベストプラクティスに従わず、変更もなかったことです。
たとえば、Ubuntuは設定スキーマの更新を暗示していましたが、Redhatはしませんでした。コントロールパネル側では、Webmin/Virtualminは構成スキーマを更新しましたが、cPanelは更新しませんでした。私がどこに行くのか見てください?
ホスティングには、cPanelが広く使用されています。ここでは混乱を頻繁にクリーンアップするため、これは残念です。自分のサイトをホストするほとんどの人にとって、決して存在しないはずのセキュリティ上の問題と運用上の問題を見つけます。
私はUbuntuのみを使用しているため、Apacheのインストールは良好であり、WebminまたはVirtualminを使用する場合もそのままであると言えます。ただし、cPanelの使用を選択した場合、Apacheの構成は可能な限り貧弱になります。コントロールパネルを使用しないことを選択した場合は、問題ありません。
ここで何が起こるかです。
RedhatインストールおよびcPanelインストールは、/ var/httpd/htmlまたは/ var/www/public_htmlにWebスペースを作成します。このディレクトリは、サイトが小さいときの古い伝統に従って小さなパーティションに配置されます。これは常に当てはまるわけではありませんが、サイトオペレーターがディスクスペースをすばやく簡単に使い果たすことが何度もあります。
適切にインストールすると、/ home /ディレクトリまたは/ var/www /ディレクトリの下にデフォルトのサイトが作成され、/ etc/Apache2/sites-available /および/ etc/Apache2/sites-enabled /ディレクトリの下にサイトごとに個別の構成ファイルが作成されます。デフォルトの構成ファイルは000-default.confであり、大部分はそのままにしておく必要があります。これは、すべてのIPベースの要求と、サーバー上に存在しないドメインの要求を処理するキャッチオールサイトを作成するためです。 000-default.confファイルをコピーして、新しいサイトを作成できます。通常、ファイル名の形式はexample.com.confで、sites-availableディレクトリに作成されます。
Webスペースに関しては、これは/home/example.com/や/var/www/example.comなどの構成ファイルと一致する必要があります。個々のサイトに/ var/www /ディレクトリを使用するのは好きではありません。多くの場合、権限の競合が発生します。デフォルトのサイト用に/ var/www/htmlが保存されている場合は、保存します。それ以外の場合、アクセス許可の設定に慣れている場合は、アクセス許可の競合のない/ home /ディレクトリを使用することをお勧めします。
もちろん、Sudo a2ensite example.com.conf
でサイトを適切に有効にし、Sudo service Apache2 restart
でApacheを再起動する必要があります。
では、/ var/www /の使用の何が問題になっていますか? Apacheは、ツリー全体に存在する必要がある特定のアクセス許可で実行されます。たとえば、cPanelの機能に従う場合、最初のサイトは/ var/www/public_html /の下に作成されますが、それ自体は悪くありません。ただし、次のサイトは/ var/www/public_html/example /の下に作成され、www.firstsite.com/example /として作成された最初のサイトのディレクトリとして使用可能になります。悪い。ひどい。さらに、すべてのサイトは1人のユーザー(Apacheのデフォルトユーザー)で実行されます。これは、ルートを含むさまざまな名前にすることができます。ルートが使用されることは一般的ではありません。本当に非特権ユーザーでなければなりません。
サイトを/ var/www /以外のディレクトリ内の完全に別個のディレクトリにセグメント化すると、Apacheが使用するグループに追加された異なるユーザーの下で各サイトを実行できます。これはコメントに記載されているサンドボックス化です。デフォルトのサイトをそのままにしておくと、意図的な攻撃などの不正なリクエストをさらにサンドボックスできます。
構成例については、この回答にいくつかあります。 Virtualhost config:routing and wildcard usage これらは議論の余地がなく、上手く行かなかった場合にうまく機能するはずです。