Server

Python(bottle)をApacheで動かす

投稿日:2017年5月22日 更新日:

はじめに

以前、「配牌からアガれるかアガれないか予測する」を公開しました、tonnyです。
最近はもう少しスケールダウンさせて、何切る問題でディープラーニングを利用してみようと思っています。

データを収集するために、Webで公開してみようと思い、今回ブログ記事にまとめさせていただきます。
(以前はherokuで公開していたのですが、無料だと制約が大きかったので。。。)

環境

・CentOS 7.3.1611
・Python 3.6.1
・Apache 2.4.6
・bottle 0.13-dev

サーバーの立ち上げ

私のお試しサーバーであるConohaちゃんで構築しようと思います。

ユーザー作成などは以前の記事でまとめましたので、そちらをご参考ください。

Conohaのサーバーを借りて、CentOS+MySQL+nginxの環境を作ってみた。

[追記]
rootユーザーでPythonなどをインストールしないと、 mod_wsgi 絡みでエラーが起こるようなので、rootユーザーで進めました。
このあたりはちゃんと調査しないと。

Pythonのインストール

CentOS 7にはPython 2.7がデフォルトで入っているようですが、ローカルでは3系なので、3.6をインストールします。

こちらの記事を参考にさせていただきました。
Python 3 を CentOS 7 に yum でインストールする手順

IUS Community Project の yum リポジトリ

IUS Community Project という、最新のRPMパッケージを提供してくれる団体があるようなので、そちらからPython 3.6のyumリポジトリを追加させていただきます。

Python 3.6を検索すると、ちゃんと見つかることが分かります。

インストール

これで、Pythonがインストールされたので、バージョン確認しておきます。
ちなみに、オプションの -V は大文字です。

このままでも良いのですが、デフォルトの python コマンドには2系のシンボリックリンクが貼られているので、こちらを3系に切り替えます。

これで python コマンドに3系が紐付きました。

同様にして、 pip コマンドのリンクも変えておきます。

Apacheのインストール

yumの修正

どうやら yum 関連のファイルはPython2系で動いているようです。
そして、先ほど python コマンドを3系に紐付けたので、 yum でコケるようになります。

これを回避するために、下記のファイルを修正しておきます。

  • /bin/yum
  • /usr/libexec/urlgrabber-ext-down

どこを修正するかというと、1行目の #! /usr/bin/python です。
こちらを下記のように2系で修正します。
お使いの環境によってはマイナーナンバーが違うかもしれません。
こちらのサイトを参考にさせていただきました。)

Apacheのインストール

Apacheを起動させて、表示確認をしておきます。

自動起動設定もしておきます。

WSGIを使用してPythonを動かす

WSGI(Web Server Gateway Interface)はWebアプリケーションからPythonを動かすインターフェースのことです。
What is WSGI?
こちらとApacheを連携させます。

こちらのサイトを参考にさせていただきました。
ApacheでPythonを動かしてみた(bottle利用)

各種インストール

mod_wsgi がApacheでPythonを動かすために必要なモジュールです。

httpd.conf に追記

/etc/httpd/conf/httpd.conf に下記を追記し、Apacheを再起動します。

adapter.wsgi を作成

テスト用に「Hello World!」を出力するwsgiファイルを作成します。

これで、ブラウザに再度アクセスして「Hello World!」が出力されれば成功です。

bottleとApacheの連携

軽量FWで有名なbottleを使用したいと思います。

bottleのソースファイルを取得

bottleはファイル1つのみですので、 wget で取得してしまいます。

adapter.wsgiの修正

先ほど作成した adapter.wsgi を以下に変更します。

index.pyの作成

テスト用のPythonスクリプトを作成します。

これで、「Hello from bottle」が表示されれば、 index.py が実行されていることが分かります。

さいごに

mod_wsgi 周辺でかなり詰まりました。

今回は、テスト表示のみでしたが、実際にファイルを作成した場合にまた記事を書くことになりそうです。
本日はこのあたりで!

blog-page_footer_336




blog-page_footer_336




-Server

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Docker上でTensorFlowのチュートリアルをやってみた

1 はじめに1.1 環境2 TensorFlowのコンテナを起動する3 チュートリアルをやってみた3.1 ソースコード4 さいごに はじめに こんにちは、最近個人的な勉強でPython、ディープラーニ ...

InnoDBでauto_incrementの値が戻る?

はじめに 花粉症が辛い季節になりました。 花粉症も困りますが、本日はMySQL関連で困って調べたことをまとめたいと思います。 タイトルですが、InnoDBだとDBを再起動した際にauto_increm ...

aws

Amazon Linux 2でLet’s Encryptが使えない

1 はじめに2 Amazon Linux 22.1 Amazon Linux Extras Library3 Let’s Encrypt4 本題5 さいごに はじめに 知人からタイトルのよ ...

MySQL 5.7 オプティマイザの改善〜UNION ALL〜

1 はじめに2 「UNION」と「UNION ALL」の違い3 MySQL 5.7での「UNION ALL」の改善とは4 MySQL 5.7での実行計画4.1 UNION ALL実行計画4.2 UNI ...

RubyでOSM Nominatimを使ってみた

1 はじめに2 導入3 検索3.1 建物名による検索の実装例3.2 住所による検索の実装例4 リバースジオコーディング4.1 実装例5 住所の整形6 Open Street Map Nominatim ...

フォロー

blog-page_side_responsive

2017年5月
 123456
78910111213
14151617181920
21222324252627
28293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。