投稿日: | 最終更新日:
ConoHaのVPSにApacheでPythonWebアプリを作る(WSGI)
ConoHaVPSにWSGIをインストールし、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をレンタルします。
②ConoHaにroot以外のユーザを作ります。
③ConoHaにSSH接続するための設定を行います。
④ConoHaへのrootログインを禁止します。
⑤ConoHaのportを22から変更します。
⑥ConoHaVPSへApacheをインストールしてスタートページを表示します。
⑦ConoHaVPSへ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を使えるようにします。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1