2017-05-23 3 views
0

私はこのコマンドで提供しているFlask/Angularアプリケーションを持っています。 Flask、Angular、mod_wsgi-expressはすべてこのプロジェクトの必須コンポーネントです。mod_wsgi-express CSS/JSファイルやブラウザクラッシュの損失を引き起こす書き換えルール

$ mod_wsgi-express start-server run_apache_server.wsgi --rewrite-rules rewrite_psyche_data.conf 

run_apache_server.wsgipsyche_data_masterはgitのレポとpsyche_dataフラスコアプリのためのPythonモジュールである)次のようになります。

# run_apache_server.wsgi 

import sys 

#Expand Python classes path with your app's path 
sys.path.insert(0, "/Users/Jakob/Desktop/dev_projects/psyche_data_master/psyche_data") 
from psyche_data import app 

#Initialize WSGI app object 
application = app 

私は取得のヘルプフォーラムに基づいて、ここでいくつかのことを試してみました404エラーが修正されました(これらは、私が使用する必要のあるこのHTMLオプションを使用している場合の経路の問題によるものです)。

1)rewrite_psyche_data.confの場合は

Options FollowSymLinks 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /#/$1 [L] 

...私は生のHTMLのように見えて、 "予期しないトークン:<"というコンソールエラーが表示されます。エラーをクリックすると、JSファイル自体がHTMLで埋められます。

---------------------> 8 --------------------

2)rewrite_psyche_data.confは、次のようになりますとき:

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

# Rewrite everything else to index.html to allow html5 state links 
RewriteRule^index.html [L] 

...私は、ルートURL(ローカルホストでインデックスページ自体に404エラーが表示されます。私は、実行時に8000) コマンドは失敗していないようですそれ:

$ mod_wsgi-express start-server run_apache_server.wsgi --rewrite-rules rewri_psyche_data.conf 
Server URL   : http://localhost:8000/ 
Server Root  : /tmp/mod_wsgi-localhost:8000:503 
Server Conf  : /tmp/mod_wsgi-localhost:8000:503/httpd.conf 
Error Log File  : /tmp/mod_wsgi-localhost:8000:503/error_log (warn) 
Rewrite Rules  : /Users/Jakob/Desktop/dev_projects/psyche_data_master/rewrite_psyche_data.conf 
Request Capacity : 5 (1 process * 5 threads) 
Request Timeout : 60 (seconds) 
Startup Timeout : 15 (seconds) 
Queue Backlog  : 100 (connections) 
Queue Timeout  : 45 (seconds) 
Server Capacity : 20 (event/worker), 20 (prefork) 
Server Backlog  : 500 (connections) 
Locale Setting  : en_US.UTF-8 

...これらの2行は、エラーログファイルに表示されます。

[Mon May 22 21:17:00.788635 2017] [mpm_event:notice] [pid 12005:tid 140735965213632] AH00489: Apache/2.4.23 (Unix) mod_wsgi/4.5.15 Python/2.7 configured -- resuming normal operations 
[Mon May 22 21:17:00.789013 2017] [core:notice] [pid 12005:tid 140735965213632] AH00094: Command line: 'httpd (mod_wsgi-express) -f /tmp/mod_wsgi-localhost:8000:503/httpd.conf -D MOD_WSGI_MPM_ENABLE_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_WORKER_MODULE -D MOD_WSGI_MPM_EXISTS_PREFORK_MODULE -D FOREGROUND' 

--------------------- 8 --------------------私はこれを実行すると

3)、アプリは動作しますが、私は404エラー私は、角ルーティングによって生成されたURLのいずれかをリフレッシュする任意の時間を取得:

$ mod_wsgi-express start-server run_apache_server.wsgi 

が、私は他の何かをやるべき

その --rewrite-rules --include-fileが好き?

答えて

0

私はいくつかは、今のところ問題は固定しているようだフラスコ側に掘り、これをやってなかった:私は、URLの変更など、私は「/約」と呼ばれるルートをロードしたときに今

# routing for basic pages (pass routing onto the Angular app) 
@app.route('/') 
@app.route('/about') 
@app.route('/contact') 
@app.route('/studies') 
def basic_pages(**kwargs): 
    return make_response(open('psyche_data/templates/index.html').read()) 

をそれをリフレッシュすることができ、404エラーはありません。書き換えルールがなくても。

+0

mod_wsgi-expressによって静的ファイルに使用されるディレクトリに静的ファイルを置く場合は、書き換えルールを必要とすべきではありません。どこかのディレクトリにすでに静的ファイルがある場合は、単に '--document-root''オプションを使用して、それらがどこにあるかを指定するだけです。 –

+0

'--document-root'はプロジェクトルートを指す' sys.path.insert'を使用して無用にしていると思います – JacobIRR

+0

'' --document-root''はPythonコードとは関係がありません。静的ファイルを含むディレクトリです。あなたが言及した最初の書き換えルールは、デフォルトで既に '' mod_wsgi-express''によって使われています。ルールは、ディレクトリ内の静的ファイル( '' --document-root''で指定されたもの)とURLが一致すると、静的ファイルが提供されるようにします。 URLが静的ファイルと一致しない場合、要求は処理する代わりにPython WSGIアプリケーションに渡されます。 –