1.2.5. web2py 管理インターフェース(admin)の設定

Beanstalk にデプロイした web2py の管理インターフェース(admin)は、通常の設定では使用できません。 これには2つの原因があります。

  • (管理インターフェースのセキュリティ確保のため) web2py が動作している環境がローカルであるか、もしくは SSL/TLS(HTTPS)での接続 の場合のみ、管理インターフェースへのアクセスが許可されます。 Beanstalkにデプロイしたアプリケーションは、そのどちらでもありません。
  • WSGI を使用し web2py アプリケーションを動作させているため、管理者パスワードの 設定を行なっていません。このためパスワードがありません。

今回はこれらの問題を解決し、管理インターフェースの動作を試してみます。

1.2.5.1. 接続設定

管理インターフェースへの安全な接続のためには、HTTPS接続にするか、SSHトンネルによる接続が 考えられます。この内、SSHトンネルはより安全な方法なのですが、EC2インスタンスが Beanstalk から間接的に起動されているため、別ポートの web2py を立ち上げるのは簡単ではないようです。 このため今回は、(自己署名証明書による) HTTPS接続を試してみます。

  1. ELB にSSL証明書を登録

    SSL証明書を作成し、ELB(Elastic Load Balancing)に登録する必要があります。 これらの手順は、次のサイトで詳しく説明していますので参照ください

    Beanstalk で生成した EC2 インスタンスに SSH で接続する手順は、次を参照ください。

  2. optionsettings 設定ファイルを修正し、次の記述を追加します。

    [aws:elb:loadbalancer]
    LoadBalancerHTTPSPort=8443
    SSLCertificateId=arn:aws:iam::xxxxxxxx:server-certificate/elb.hoge.com
    

    aws:elb:loadbalancer 名前空間はロードバランサに関する設定を記述します。

    LoadBalancerHTTPSPort は HTTPS ポートの指定を行います。 4438443 を設定できますが、 今回は 8443 を指定します。

    SSLCertificateId は先ほどELBに登録した、SSL証明書を指定します。

  3. eb update で変更をAWSサーバに反映させます。

    C:\web2py>eb update
    Enter an RDS DB master password:
    Retype password to confirm:
    Update environment? [y/n]: y
    

  4. アプリケーションが HTTPS で接続できるか、確認します。

    ポート8443 を設定したので、次のように URLでポートを指定する必要があります。

    https://web2py-env-xxxxxxx.elasticbeanstalk.com:8443
    
  5. ポート 8443 のパスワードファイル作成

    web2py では起動時に管理インターフェースのパスワードを指定しない場合、パスワードはパスワードファイルを 使用します。

    ローカル(作業用マシン)にて、パスワードを指定しない(-a オプションを指定しない)で web2py サーバを起動します。すると GUIのサーバコンソールが起動し、パスワードを入力する必要があります。 この入力したパスワードは、 parameters_8000.py というファイルに保存されます。このファイルの 数字の部分はポート番号です。

    8443 ポートで web2py を起動しパスワードを入力するか、 parameters_8000.py をコピーし parameters_8443.py ファイルを作成してください。 ファイルに登録されるパスワードは、最後に入力した文字列になります。

  6. コードを AWSサーバにプッシュします。

    コードのコミットを行います。

    C:\web2py>git commit -m "test code"
    

    コードをプッシュします。

    C:\web2py>git aws.push
    

  7. ポート 8443 で管理インターフェースが動くのを確認してください。

1.2.5.2. 注意点など

  • 本番環境では必要がなければ、管理インターフェースは使用不可にしておいた方がよいでしょう。 その場合、aws:elb:loadbalancer 名前空間を削除するか、 LoadBalancerHTTPSPort=OFF とします (その後、 eb update を行う必要があります)。 もしくはパスワードファイルを削除します。

    管理インターフェースの機能を停止するという意味では、パスワードファイルを削除することが適切です。