0

私たちのシステム管理者は、私が取り組んでいるプロジェクトを去ったばかりで、私は本番サーバーを TEST (すべてが機能する場所) に一致するように構成しようと奮闘しています。私はサーバー構成に関してはあまり知識がなく、多くの行き止まりに陥っています。

TEST/var/www を PROD にコピーして、コードを TEST から PROD に昇格させました。その結果、PROD のアプリケーションは PROD/var/www/www に置かれるようになりました。Production 上のアプリケーションのランディング ページ (my.production.com/www) にアクセスできるようになりましたが、var/www/www/ のサブディレクトリにあるファイルにはアクセスできません。404 Not Found エラーが発生し続けます。

サイトの構成 (「realto」というファイル) を TEST から PROD にコピーし、a2ensite を実行してサイト対応フォルダーへのシンボリック リンクを作成しましたが、まだ運用環境で 404 エラーが発生します。

問題の可能性について誰かにアドバイスしてもらえますか、または正しい方向に向けてもらえますか?

編集: httpd.conf、ports.conf、およびサイト構成ファイルのテキストを以下に含めました。

httpd.conf:

ServerName    my.server.com
ServerSignature Off
ServerTokens Prod
<Directory />
  Order Deny,Allow
  Deny from all
  Options None
  AllowOverride None
</Directory>
<DirectoryMatch /var/www/*>
  Order Allow,Deny
  Allow from all
  AllowOverride All
  Options None
</DirectoryMatch>
<DirectoryMatch phpmyadmin>
  Order Allow,Deny
  Allow from all
  Options None
</DirectoryMatch>

サイト構成ファイル:

    <VirtualHost *:80>
    ServerAdmin xxx@xxxxxxxx.xxx

    DocumentRoot /var/www/www
    <Directory />
        #Options FollowSymLinks
        #AllowOverride None
                Order Deny,Allow
                Deny from All
    </Directory>
    <Directory /var/www/>
                #RewriteEngine On
                #RewriteBase /
                #RewriteCond %{REQUEST_FILENAME} -s [OR]
                #RewriteCond %{REQUEST_FILENAME} -l [OR]
                #RewriteCond %{REQUEST_FILENAME} -d
                #RewriteRule ^.*$ - [NC,L]
                #RewriteRule ^.*$ index.php [NC,L]
                Order Allow,Deny
                Allow from all

        Options -Indexes FollowSymLinks MultiViews
        AllowOverride All
    </Directory>
    <Directory /var/www/www/application/configs/>
          <Files ~ "\.ini$">
                Deny from All
          </Files>
    </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>

ポート.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
4

1 に答える 1

0

最初に行うことは、DocumentRoot とエントリを一致させることです。

DocumentRoot /var/www/www
<Directory /var/www/www>
    #RewriteEngine On
    #RewriteBase /
    #RewriteCond %{REQUEST_FILENAME} -s [OR]
    #RewriteCond %{REQUEST_FILENAME} -l [OR]
    #RewriteCond %{REQUEST_FILENAME} -d
    #RewriteRule ^.*$ - [NC,L]
    #RewriteRule ^.*$ index.php [NC,L]
    Order Allow,Deny
    Allow from all

    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All
</Directory>

この DocumentRoot を使用すると、サイトにアクセスすると、/var/www/www の内容が提供されます。つまり、http://example.com/wwwにアクセスすると、実際には /var/www/www/www でファイルが検索されます。

DocumentRoot ディレクティブと Directory ディレクティブが一致したので、本当にすべての mod_rewrite ルールをコメントアウトしますか? 現在、/var/www/www に物理的に存在しないファイルを要求すると、404 が返されます。アプリでリクエストを index.php にルーティングする必要がある場合は、これらの行のコメントを解除する必要があります。(テストのためにコメントアウトされているかもしれませんが、念のため...)

補足として、将来的には、混乱の少ない docroot パスを提案します。単語や文字の繰り返しが見にくい場合があるため、繰り返しの少ないものを使用するとタイプミスを特定しやすくなります。

私は次のようにアプリケーションをセットアップするのが好きです:

/var/www/example.com/test/htdocs
/var/www/example.com/www/htdocs

そうすれば、自分がどの環境にいるかがすぐにわかり、それほど混乱することはありません。

于 2012-09-09T21:20:19.563 に答える