ホーム >  VPS >  ConoHaのVPSにApacheでPythonWebアプリを作る(WSGI)


Posted:2018/02/19 9:00:25 AM|Category : VPS

ConoHaのVPSにApacheでPythonWebアプリを作る(WSGI)

ConoHaVPSWSGIをインストールし、PythonでWEBアプリケーションを作ります。

PythonをApacheで使うにはWSGIが必要

サーバとWebアプリケーションをつなぐ共通のインターフェースをPythonで定義したものが、PEP333のWSGI(Web Server Gateway Interface)です。いきなりPythonをApacheで使用することはできないので、WSGIと呼ばれるインターフェースをインストールします。WSGIはウィズギーと読みます。Apacheのモジュールで、Pythonを実行できるようにしてくれます。

※目標は、Apache + mod_wsgi + Djangoという形式のWEBアプリケーションです。

準備

以下の準備を行います。

①ConoHaをレンタルします。

ConoHaVPSをレンタルしてみる

②ConoHaにroot以外のユーザを作ります。

ConoHaのroot以外のユーザを作る

③ConoHaにSSH接続するための設定を行います。

ConoHaのSSH接続

④ConoHaへのrootログインを禁止します。

rootからのログインを禁止

⑤ConoHaのportを22から変更します。

SSH接続するportを22から変更

⑥ConoHaVPSへApacheをインストールしてスタートページを表示します。

ConoHaのVPSにApacheインストール

⑦ConoHaVPSへPython3をインストールします。

ConoHaのVPSにPython3環境を作る

必要なもの

レンタルサーバ ConoHaのVPSサーバ
独自ドメイン ムームードメインで、独自ドメインのみ取得。2年契約で(2,000〜3,000円)くらい?

ConoHaVPSの環境

アプリケーションサーバ OS CentOS7.4
Apache 2.4.6 (CentOS)
Python 3.6.4
mod-wsgi 4.5.24

クライアントPC

操作開発用のクライアントPCを用意します。windowsでもmacでも可能ですが、今回はubuntuを利用します。

OS Ubuntu 16.04.1 LTS 64bit

WSGIをインストール

Apacheを利用しますので、「mod_wsgi」パッケージをインストールします。

①VPSにログインします。

前回作った仮想環境を起動します。

cd
. test_django/bin/activate

③mod_wsgiをインストールします。

pip install mod_wsgi

yumでmod_wsgiを入れるとsystemのpython2と紐付きます。python3と紐づけられるpipでインストールします。しかし、いきなりpipで入れようとするとapxsが存在しないとエラーが出ます。先にyumでhttpd-develを入れます(参考ページ)。

RuntimeError: The ‘apxs’ command appears not to be installed or is not executable. Please check the list of prerequisites in the documentation for this package and install any missing Apache httpd server packages.

動作確認

①mod_wsgiの場所を探します。リンクをコピーして下さい。

find / -name "*mod_wsgi*"
    
/root/test_django/bin/mod_wsgi-express
/root/test_django/lib/python3.6/site-packages/mod_wsgi
/root/test_django/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
/root/test_django/lib/python3.6/site-packages/mod_wsgi-4.5.24-py3.6.egg-info

②apacheファイル(wsgi.conf)を作成します。wsgi.confファイルが存在しなければ新規で作成します。

vi /etc/httpd/conf.d/wsgi.conf

以下のように記述します。

WSGIScriptAlias /test_wsgi /var/www/html/test_wsgi.py
LoadModule wsgi_module /root/test_django/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

③Apacheを再起動します。

systemctl start httpd

④PythonとApacheが連動できたかテストします。Apacheが参照している位置にpythonのスクリプトを作成します。

vi /var/www/html/test_wsgi.py 

⑤以下のコードを記述します。内容は参照しているpythonのバージョンを表示します。

import sys

def application(environ,start_response):
    status = '200 OK'
    versions = sys.version_info
    output = str(versions).encode('utf-8')
    response_header = [('Content-type','text/plain'),
                        ('Content-Length',str(len(output)))]
    start_response(status,response_header)
    return [output]

⑥Apacheを再起動します。

systemctl restart httpd

⑦以下のURLでアクセスします。

http://VPSのグローバルIPアドレス/test_wsgi

OR

http://VPSに設定した独自ドメイン/test_wsgi

pythonのバージョンがsystemで使用されている2系ではなく、3系が表示されていれば成功です。

次回

次回はVPSにDjangoをインストールして、ApacheでDjangoを使えるようにします。

ConoHaのVPSにDjango環境を作る


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告