コアサーバで Python CGI を動かしてみる(前編)

レンタルサーバー

コアサーバにログインできることがわかったので、Python CGIを試してみました。
最初は順調でしたが、ちょっと苦戦してなんとか動きました。

コアサーバーで Python CGI を動かしてみる


前回の記事でコアサーバーにログインまでできるようになった。

今回はコアサーバー上で Python CGI を試してみます。

  Python CGI とは


Python は比較的最近流行ってるプログラム言語のことで、ライブラリが多くて簡単に追加などできるので、難しいプログラムもライブラリを追加することで簡単に作れたりします。

CGI(Common Gateway Interface)とは、Webでアクセスした時にプログラムが動いて画面表示の内容を作って出力するもので、あらかじめ書いてる記事と違い動的に表示を変えたりできます。
例えば、予約できるHPで予約表を見たりすると、データベースから情報を取りだして予約表の画面を作って表示するとか。

先人の知恵を借りる


検索すると既に実施してる人たちがノウハウを公開しています。
最初はとにかく検索して真似をしてみるのが一番てっとり早いです。

今回はコアサーバーで Python CGI を動かしてみたかったので、検索して以下のページを発見しました。
まさにビンゴの内容!やってる内容もいい感じなので、まずはこれを試してみよう!

CORESERVER で Python の CGI を動かす - Qiita
概要 GMOデジロックのレンタルサーバー「コアサーバー」で Python の CGI を動作させる 今回の環境 料金プラン: ビジネスプラン「CORE-B」 (30日間無料お試しトライアル期間中) サーバー: b1....

 まずは Python の動作や Web 環境の確認


記事ではいきなり public_html 配下で CGI を作ってますが、今回の環境は WordPress が入ってるので、public_html のディレクトリ自体が違ってたりします。

そもそも Python ちゃんと動くかとかも試してみます。

自分はレンタルサーバーにコアサーバーを使ってますが、前回調べた結果、/virtual/cuzuser/public_html/teqnobreaker.com 配下が Webのホームディレクトリとわかりました。

この下でいろいろファイルを作ると面倒そうなので、work ディレクトリを作って、その中で作業をすることにします。
ls -l でファイルやディレクトリのアクセス権限を確認してみるとグループにはアクセス権限が無いという不思議な設定。
よくわからないですが、これに合わせて work ディレクトリも chmod 707 しておきました。

Python のバージョンを確認してみます。
通常の Python は 2.7.5、Python3 を指定すると 3.6.8 が動くようです。
参考にしたページのソースでは /usr/local/bin/python3 を指定してるので大丈夫そうです。

次に work 配下でちゃんと web が表示されるか確認してみます。
エディタ(vi)で定番の「Hello, World!」を作って表示されるか試してみます。

それでは、https://teqnobreaker.com/work/hello.html にアクセスしてみます。

出ました!
これで、work 配下でも大丈夫なことが確認できました。

 Hello.cgi を試してみる


それでは、参考の記事にあった「hello.cgi」を試してみます。
同様にエディタで hello.cgi を編集します。
テキストでいいのですが、python スクリプトを実行させるのに実行権が必要となるので、chmod +x で実行権を付けてます。

それでは、https://teqnobreaker.com/work/hello.cgi にアクセスしてみます。

出ました!
あっさりと Python CGI が動くことが確認できました!

 CGIの拡張子で .py が使えるように .htaccess の設定をする


次のサンプル message.py は Web 起動時にパラメータを渡して、そのパラメータを出力するというもののようです。
ファイル名が xxx.cgi では無く、xxx.py と python の拡張子になってます。
この場合、.py ファイルでも CGI として動くように Webサーバーに設定が必要です。
参考の記事の最初の方に、~/public_html/.htaccess に以下を追加するように記載があります。 

実際に xxx.py だと動かないのか確認してみます。
先ほど作った hello.cgi を hello.py にコピーして、https://teqnobreaker.com/work/hello.py にアクセスしてみます。

なるほど、ソースがそのまま表示されてしまいました。

コアサーバーの環境では .htaccess は /virtual/cuzuser/public_html/teqnobreaker.com 配下にあるので、このファイルを編集します。
しかし .htaccess を見ると WordPress の設定が入ってるようで、"BEGIN WordPress" から "END WordPress" までには記載をしないようにコメントがありました。
今回は "END WordPress" の後ろに追加しようと思いますが、問題が起きた時に元に戻せるように、.htaccess ファイルのバックアップを取っておきます。

自分のホームディレクトリは /virtual/cuzuser ですが、Linux では ~ と略すことが可能です。
まずはホームディレクトリ配下に bkup ディレクトリを作成して、.htaccess をコピーします。
その後、/virtual/cuzuser/public_html/teqnobreaker.com 配下の .htaccess をエディタで編集しました。

では、もう一度、https://teqnobreaker.com/work/hello.py にアクセスしてみましょう。

行けました!これで xxx.py でも CGI として動くようになりました。

 message.py を試してみる


では、参考にしているページの「message.py」をエディタで作ってみます。
この時、注意が必要なのは日本語が使える設定がされてない「vi」なので日本語が文字化けします。
でも、文字化けしても気にせずコピペで貼り付けて保存すると大丈夫だったりします。
保存した後、cat で中身を確認してちゃんと日本語が表示されれば ok です。

ただ、ソースの編集をしたい場合、文字化けした状態では画面表示がずれてるので正しく編集できません。
ソース編集が必要な場合は、あらかじめ windows 上で日本語のコメント部分を削ったソースを作ってコピペするか、windows 上でファイルを編集して、winscp などのファイル転送ソフトで編集するたびにアップロードするのが良いと思います。

参照ページにある message.py の日本語コメントを抜いたものを載せておきます。
編集したい場合はこちらをコピペして使ってみてください。

これまでのように、vi message.py で以下を貼り付けます。
また、実行権が無いと動かせないので、chmod +x message.py もしておきます。

パラメータを付けて起動してみて、付けたパラメータが表示されることを確認します。
https://teqnobreaker.com/work/message.py?message=テスト

 外部ライブラリ利用サンプル(draw.py)を試してみる


外部ライブラリは難しい処理を簡単にできるように Python に追加できるもので、使いたいライブラリを追加することで様々な関数を追加することができます。

ここでは NumPy という多次元配列の計算ができるようになるライブラリと、多次元配列からグラフ描画ができる Matplotlib というライブラリを追加しています。

まずは、参考にしてるページの通りに numpy と matplotlib を入れて、参考のソースを作成して起動してみました。
すると、ついにここで問題が発生しました!

ここから、原因がなかなかわからず苦戦しました。。
最終的にはなんとかなったのですが、ちょっと長くなるので本記事はここまでにして、続きは後編にしようと思います。

コメント

タイトルとURLをコピーしました