mod_wsgiは、ApacheでPythonベースのWebアプリケーションをホストするためのインターフェースを提供するApacheモジュールです。これは、高性能の本番Webサイト、およびWebホスティングサービスで実行されている平均的な自己管理型の個人サイトのホスティングでの使用に適しています。 mod_wsgiを使用して、Django、Web.py、Werkzug、Chery.py、TurboGears、Flaskなどのフレームワークとツールで記述されたアプリケーションを簡単にデプロイできます。
このチュートリアルでは、Ubuntu20.04サーバー上のApacheサーバーでmod_wsgiをインストールしてセットアップする方法を学習します。
- Ubuntu20.04を実行しているサーバー。
- ルートパスワードがサーバーに設定されます。
開始する前に、システムを最新バージョンに更新することをお勧めします。次のコマンドでシステムを更新できます:
apt-get update -y
apt-get upgrade -y
システムを更新した後、システムを再起動して変更を実装します。
Pythonをインストールする
デフォルトでは、PythonはUbuntu20.04サーバーにプリインストールされています。インストールされていない場合は、次のコマンドでインストールできます。
apt-get install python3 libexpat1 -y
インストールが完了したら、次の手順に進むことができます。
Apacheとmod_wsgiをインストールします
次に、ApacheWebサーバーとmod_wsgiPythonモジュールをシステムにインストールする必要があります。次のコマンドを実行してインストールできます:
apt-get install apache2 apache2-utils ssl-cert libapache2-mod-wsgi -y
すべてのパッケージがインストールされたら、次のステップに進むことができます。
mod_wsgi用にApacheを設定
次に、ApacheのデフォルトのWebルートディレクトリ内に新しいPythonスクリプトを作成し、mod_wsgiApacheモジュールを介して提供する必要があります。
次のコマンドで作成できます:
nano /var/www/html/wsgy.py
次の行を追加します:
def application(environ,start_response): status = '200 OK' html = 'html>\n' \ '<body>\n' \ '<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">\n' \ 'Welcome to mod_wsgi Test Page\n' \ '</div>\n' \ '</body>\n' \ '</html>\n' response_header = [('Content-type','text/html')] start_response(status,response_header) return [html]
ファイルを保存して閉じます。次に、次のコマンドを使用して、ファイルの所有権をwww-dataに変更します。
chown www-data:www-data /var/www/html/wsgy.py
次に、Apache仮想ホスト構成ファイルを作成して、HTTPプロトコルを介してこのファイルを提供します。
nano /etc/apache2/conf-available/wsgi.conf
次の行を追加します:
WSGIScriptAlias /wsgi /var/www/html/wsgy.py
ファイルを保存して閉じます。次に、mod-wsgi構成を有効にし、次のコマンドを使用してApacheサービスを再起動します。
a2enconf wsgi
systemctl restart apache2
この時点で、ApacheWebサーバーはHTTPプロトコルを介してPythonファイルを提供するように構成されています。
テストするには、Webブラウザーを開き、URL http:// your-server-ip/wsgiを入力します。次の画面にmod-wsgiテストページが表示されます。
おめでとうございます! Ubuntu 20.04サーバーでmod_wsgiモジュールを使用して、ApacheWebサーバーにPythonスクリプトを正常にデプロイしました。これで、Apacheとmod_wsgiを使用してPythonアプリケーションを本番環境に簡単にデプロイできるようになることを願っています。