ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.

代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

序章


Pythonプログラミング言語は、他のタスクの中でも特にWebプログラミングに簡単に使用できる多用途の高級言語です。 Webアプリケーションの構築は、自分で困難で面倒な場合があります。 Webフレームワークは、手間のかかる作業の多くを実行し、Webアプリケーションを簡単に構築するためのテンプレートを設定できます。

PythonにはさまざまなWebフレームワークがあります。 最も興味深いものの1つは、web2pyです。 Web2pyは、Webアプリを完全に開発するために使用できるフルスタックWebフレームワークです。 SQLデータベース統合、マルチスレッドWebサーバーがあり、プログラムを設計するための完全なWebIDEが付属しています。

これにより、Webブラウザにアクセスできる場所ならどこからでも、統一されたインターフェイスで簡単にプログラミングできます。 同じインターフェイスでアプリケーションを簡単に作成してテストできます。

このフレームワークをUbuntu12.04VPSにインストールして操作します。

Web2pyソフトウェアをインストールします


Ubuntuサーバーインスタンスには、デフォルトでPythonがインストールされているはずです。 これは、web2pyを正常に実行するために必要な唯一のものの1つを処理します。

インストールする必要がある他のソフトウェアはunzipパッケージだけです。これにより、ダウンロードするzipファイルからweb2pyファイルを抽出できます。

sudo apt-get update
sudo apt-get install unzip

これで、プロジェクトのWebサイトからフレームワークを取得できます。 これをホームフォルダにダウンロードします。

cd ~
wget http://www.web2py.com/examples/static/web2py_src.zip

これで、ダウンロードしたファイルを解凍して、内部に移動できます。

unzip web2py_src.zip
cd web2py

web2pyディレクトリ内にいるので、どのようにインストールしますか? さて、web2pyの素晴らしいところの1つは、インストールしないことです。 次のように入力すると、このフォルダから直接実行できます。

python web2py.py

ただし、これにより、ローカルマシンでアクセス可能なWebインターフェイスのみが起動されます。 これはセキュリティ機能ですが、フレームワークがリモートドロップレットでホストされているため、役に立ちません。

サーバーを停止するには、ターミナルで「CTRL-C」と入力します。 Webアクセスの問題をすぐに解決します。

リモートアクセスを許可するSSL証明書を作成する


リモートアクセスを許可するには、SSLを使用してWebフレームワークを開始する必要があります。 その前に、証明書を作成する必要があります。 幸い、opensslパッケージはすでにインストールされています。

次のコマンドを使用して、証明書の生成に使用するRSAキーを作成できます。

openssl genrsa -out server.key 2048

このキーを使用して、.csrファイルを生成できます。

openssl req -new -key server.key -out server.csr

最後に、これら2つの部分を使用してSSL証明書を作成できます。

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

これで、web2pyディレクトリにserver.keyserver.csr、およびserver.crtファイルが作成されます。 これらを使用して、呼び出し時にいくつかのパラメーターをweb2pyに渡すことにより、安全な方法でインターフェースを起動できます。

 Python  web2py.py  -a'admin_password ' -c server.crt -k server.key -i 0.0.0.0 -p 8000

フレームワークWebインターフェースへのログインに使用するパスワードを選択できます。 「0.0.0.0」を使用すると、リモートシステムからこれにアクセスできます。

次のサイトにアクセスして、インターフェースにアクセスできます。

https:// your_ip :8000

SSL証明書が既知の認証局によって署名されていないことを示す警告が表示されるはずです。

DigitalOcean SSL not trusted

キー自体に署名したので、これは正常です。 とにかく続行できるボタンをクリックします。

Webインターフェイスを使用してプログラムを設計する方法


サイトにアクセスすると、デフォルトのweb2pyアプリケーションが表示されます。

DigitalOcean web2py default app

「管理インターフェース」ボタンをクリックすると、サーバー起動時に選択したパスワードでサインインできます。

完了したら、管理インターフェースに移動する必要があります。

DigitalOcean web2py admin interface

左側には、3つのフォルダーがあります。 これらは実際にはサンプルアプリケーションに含まれています。 フォルダのタイトルをクリックすると、ライブアプリに移動します。 1つは、現在使用している「管理」インターフェースです。 「ウェルカム」アプリは、サインインする前に見た基本的なアプリケーションです。

[管理]ドロップダウンメニューをクリックして[編集]を選択すると、このインターフェイス内からこれらすべてのアプリケーション(管理者を除く)を編集できます。

DigitalOcean web2py edit app

これを行った場合は、上部のナビゲーションバーにある[サイト]リンクをクリックして、メインインターフェイスに戻ります。

アプリケーションの右側にある「Newsimpleapplication」フィールドから新しいアプリを作成しましょう。 「sample_app」という名前を付けます。

DigitalOcean web2py new app

これにより、新しい「sample_app」アプリケーションの編集インターフェイスに移動します。 標準のMVC(モデル、ビュー、コントローラー)ファイルのほか、言語ディレクトリ、静的ページディレクトリ、モジュール、プラグイン、プライベートファイルのディレクトリが一覧表示されます。

DigitalOcean web2py main edit

これは実際には、ファイルシステムで何が起こっているかをグラフィカルに表現したものにすぎません。 CTRL-Cを使用してWebサーバーを停止し、web2pyディレクトリ内で「applications / sample_app」フォルダーに移動すると、これらのカテゴリーに一致するフォルダーが表示されます。

次のサイトにアクセスしてサイトにアクセスした場合:

https:// your_ip :8000 / sample_app

デフォルトで含まれているウェルカムアプリとほぼ同じように見えることがわかります(唯一の違いはタイトルです)。

Web2pyのMVC実装の調査


Web2pyは、完全に機能するアプリを形成するために必要な多くの詳細を処理します。 ただし、このシステム内で効果的に開発するには、それがどのように相互作用するかを知っている必要があります。 Web2pyは、「設定より規約」のポリシーを実装しています。

設定より規約は、開発者が下さなければならない決定の数を減らすために選択される設計上の選択です。 つまり、開発者は、コンベンションから離れる時期を指定するだけで済みます。

たとえば、アプリケーションのコントローラーが「image_blog.py」と呼ばれ、「main」と呼ばれる関数がある場合、web2pyは「image_blog/main.html」と呼ばれるビューでこのページを提供しようとします。 コントローラで他の拡張子が指定されていない場合、「。html」の部分がデフォルトになります。 この規則に違反した場合、代替案を指定する必要があります。 それ以外の場合、これは自動的に行われます。

default.pyというコントローラーがあることがわかります。 これは、他に指定されていない場合に使用されるデフォルトのコントローラーです。 このコントローラーの左側にある[編集]ボタンをクリックすると、コントローラーが定義する機能を確認できます。

DigitalOcean web2py default functions

メインの編集インターフェイスに戻ると(上部のナビゲーションバーの[編集]リンクをクリックして)、ユーザー向けのアクションを定義する関数のビューが一致していることがわかります。

DigitalOcean web2py matching view

サンプルコントローラーを作成して表示する


最初に独自のコントローラーを作成して、これを試してみましょう。 [コントローラー]セクションで、[作成]をクリックして新しいコントローラーを作成します。

DigitalOcean web2py hello controller

このファイルを編集すると、他に要求されていない場合に呼び出される「インデックス」関数が定義されていることがわかります。 これはデフォルトとして機能します。 この関数は、「hello from hello.py」という値を持つmessageという変数を格納する辞書を返すだけです。

# coding: utf8
# try something like
def index(): return dict(message="hello from hello.py")

これを編集し、ディスクアイコンをクリックして作業を保存できます。 私たちの目的のために、これは私たちが望んでいることを正確に実行します。

次に、返される情報(メッセージを定義する辞書)をレンダリングするための対応するビューを作成する必要があります。 「編集」ボタンまたは「<

[ビュー]セクションで、新しいビューを作成します。 このビューを自動的に適用するには、コントローラーと関数を一致させる必要があります。

DigitalOcean web2py hello view

左側のボタンをクリックしてファイルを編集します。 次のようなものを含むデフォルトのビューが表示されます。

{{extend 'layout.html'}}
<h1>This is the hello/index.html template</h1>
{{=BEAUTIFY(response._vars)}}

このファイルは、layout.htmlビューを拡張するか、それから構築されます。 これは、すべてのページ間で一貫した外観を維持するための便利な方法です。 ブラウザでページにアクセスすると、そのページがどのように表示されるかを確認できます。

このページにアクセスするには、次のサイトにアクセスしてください。

https:// your_ip :8000 / sample_app / hello

DigitalOcean web2py hello render

見出しの下の辞書に結果が表示されていることがわかります。 ビューを編集することで、これを直接印刷できます。

次の2行を削除すると、表示する完全なメッセージが形成されるため、メッセージテキストに置き換えることができます。

{{extend 'layout.html'}}
<h1>{{=message}}</h1>

これで、コントローラーが渡したメッセージが表示され、h1ヘッダーとしてレンダリングされます。

DigitalOcean web2py modified render

スタイリングを削除したい場合は、トップラインを削除できます。

{{=message}}は、ファイル内にPythonコードを埋め込むことができる方法です。 これにより、プログラムの作成時に必ずしも利用できるとは限らないコンテンツを動的に生成できます。

結論


これで、web2pyフレームワークの非常に基本的な理解ができたはずです。 さらに重要なことは、このフレームワークでの開発がいかに簡単であるかを理解できるはずです。 テキストファイルまたはWebインターフェイスを介して開発できるという柔軟性は、さまざまな環境でうまく機能できることを意味します。

Webインターフェイスには、成長するアプリケーションを操作するための多数のツールも付属しています。 バグが発生したときにスタックトレースを確認したり、アプリケーションをデプロイ用に簡単にパッケージ化したり、開発中にアプリケーションで発生したすべてのエラーのログを表示したりできます。

Web2pyは、フレームワーク、IDE、および開発スイートがすべて1つのパッケージに含まれています。

ジャスティン・エリングウッド