0

以外の場所から admin インターフェースと appadmin インターフェースにアクセスできるように web2py サーバーをセットアップするのに大変な時間を費やしていますlocalhost。ブラウザまたは X サーバー。localhost外部から web2py の admin または appadmin インターフェイスにアクセスするには、SSL/HTTPS を使用する必要があることを理解しています。

web2py のドキュメントでは、これを行う 2 つの異なる方法が宣言されているようです。まず、一般的な web2py スタートアップ チュートリアルから:

mod_proxy を使用して Apache の背後で web2py を実行しない限り、管理インターフェース admin は localhost からのみアクセスできます。管理者がプロキシを検出すると、セッション cookie はセキュアに設定され、クライアントとプロキシ間の通信が HTTPS 経由でない限り、管理者ログインは機能しません。

これにより、web2py の背後にある web2py と apache をセットアップする方法を Web で検索し、web2py 展開レシピ ページに移動しました。このページでは、 mod_proxy の代わりに mod_wsgi を使用して apache の背後に web2py をセットアップする方法について説明しています。/etc/apache2/sites-available/web2pyこれらは、ファイルをapache2.4構文に更新し、ServerNameディレクティブの値を「foo.bar.com」に変更することを除いて、私が現在正確に従っている指示です(省略:サーバーを含むクラウドボックスのドメイン名、これは、この質問全体で foo.bar.com に置き換えられます)。

しかし、私が

Apache を再起動すると、すべてのリクエストが Rocket wsgiserver を経由せずに web2py に渡されます。

その web2py+apache+mod_wsgi チュートリアルの一部ですが、Apache は web2py に何も渡していないようです。チュートリアルの次のステップで説明されているように、先に進み、wsgihandler.pyファイルを移動しました。現在の状態は次のとおりです。

  • foo.bar.com:80別のマシンからブラウズすると、Apache2 Ubuntu デフォルト ページ ("It works!" ページ) が表示されます。
  • (web2py ポート)をブラウズするfoo.bar.com:8000と、web2py サーバーのデフォルト インターフェースになりますが、チャネルが安全でないため、admin または appadmin にアクセスできません。
  • をブラウズしようとするとfoo.bar.com:443、汎用の「Index of /」Apache サーバー ページが表示されます。このページの "/" には 1 つのディレクトリ リンク "html" が含まれており、これは Apache2 Ubuntu デフォルト ページ ("It works!" ページ) へのリンクです。

その他の情報:

  • に移動した/home/www-data/web2pyことを除いて、web2py の未変更のインスタンスがインストールされています。/home/www-data/web2py/handlers/wsgihandler.py/home/www-data/web2py/wsgihandler.py
  • /etc/apache2/site-available/私のディレクトリ の内容は次のとおりです。
    • 000-default.conf(私には触れていません)
    • default-ssl.conf(私には触れていません)
    • web2py(私が作成しました)
  • 手動でweb2pyを起動しましたpython ~/web2py/web2py.py --ip 10.7.166.27(これはfoo.bar.comのIPです(実際のドメイン名は省略されています))
  • apache2 はユーザーとして実行されていますwww-data
  • サーバーOSはUbuntu Server 14.04 x64

これは私の /etc/apache2/sites-available/web2py ファイルです:

<VirtualHost *:80>
  ServerName foo.bar.com
  WSGIDaemonProcess web2py user=www-data group=www-data display-name=%{GROUP}
  WSGIProcessGroup web2py
  WSGIScriptAlias / /home/www-data/web2py/wsgihandler.py

  <Directory /home/www-data/web2py>
    AllowOverride None
    Require all denied
    <Files wsgihandler.py>
      Require all granted
    </Files>
  </Directory>

  AliasMatch ^/([^/]+)/static/(.*)            /users/www-data/web2py/applications/$1/static/$2
  <Directory /users/www-data/web2py/applications/*/static/>
    Order Allow,Deny
    Allow from all
  </Directory>

  <Location /admin>
    Require all denied
  </Location>

  <LocationMatch ^/([^/]+)/appadmin>
    Require all denied
  </LocationMatch>

  CustomLog /private/var/log/apache2/access.log common
  ErrorLog /private/var/log/apache2/error.log
</VirtualHost>

<VirtualHost *:443>
  ServerName foo.bar.com
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/server.crt
  SSLCertificateKeyFile /etc/apache2/ssl/server.key

  WSGIProcessGroup web2py

  WSGIScriptAlias / /users/www-data/web2py/wsgihandler.py

  <Directory /users/www-data/web2py>
    AllowOverride None
    Require all denied
    <Files wsgihandler.py>
      Require all granted
    </Files>
  </Directory>

  AliasMatch ^/([^/]+)/static/(.*)         /users/www-data/web2py/applications/$1/static/$2

  <Directory /users/www-data/web2py/applications/*/static/>
    Require all granted
  </Directory>

  CustomLog /private/var/log/apache2/access.log common
  ErrorLog /private/var/log/apache2/error.log

</VirtualHost>
4

1 に答える 1

0

大丈夫!これを書いているときに愚かな間違いを見つけました。Apache自体を適切に構成することを気にしたことはありませんでした:

  1. /etc/apache2/sites-available/000-default.conf/etc/apache2/sites-available/default-ssl.confをブラウジングしたときに見たものをfoo.bar.com:80それぞれ見ていfoo.bar.com:443ました。
  2. apache2.4 には.confon 構成ファイルが必要なようですが、私はそれを持っていなかったので、名前を変更/etc/apache2/sites-available/web2pyしました/etc/apache2/sites-available/web2py.conf
  3. /etc/apache2/sites-available/web2pyatへのシンボリックリンクがなかった/etc/apache2/sites-enabled/web2pyので、作成しました。

だから、今のところ:

  • ブラウズするfoo.bar.com:80と、同じApache2 Ubuntu Default Pageが表示されますが、
  • ブラウズするfoo.bar.com:80/web2pyと内部サーバー エラーが発生します。これは、apache ログが wsgihandler.py からの python インポート エラーであることを示しています。これは、apache<->mod_wsgi<->web2py リンクが稼働中であることを意味します。
  • をブラウズするfoo.bar.com:443/web2pyと、Chrome の黄色い画面に自己署名証明書について不平が表示されます。クリックスルーすると、おそらく web2py/SSL でまだ設定していない何かが原因で、アクセス許可が拒否されたページが表示されます

これは、元の質問に回答したことを意味しますが、SSL を機能させるために再び困惑した場合は、ここに戻ってコメント/編集する可能性があります。

于 2014-07-11T18:43:51.067 に答える