質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

6058閲覧

XserverでベタなPythonファイルを起動させる場合のindex.cgiの内容は?

xap

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/03/15 05:55

前提・実現したいこと

XserverでFlask(Pythonフレームワーク)を利用する方法
上記のサイトを参考に、Python3でFlaskを使ってページ表示はできましたが、
Flaskを使わない、例えばHello worldを表示するだけソースの場合、
index.cgiはどのように記載すべきなのでしょうか?

該当のソースコード

python

1#!/usr/bin/env python3 2# -*- coding: utf-8 -*- 3def main(): 4 print("Content-type: text/html\n\n") 5 print("<!DOCTYPE html><html><body>Hello world!</body></html>") 6 7if __name__ == '__main__': 8 main()

Flaskの場合の参考index.cgi

from wsgiref.handlers import CGIHandler
from [ファイル名] import app
CGIHandler().run(app)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

XSERVERは使ったことはありませんが、上記のマニュアルを見ると、python3(3.4.3)のパスは「/usr/bin/python3.4」になっています。
ですので、

python

1#!/usr/bin/env python3

は、

python

1#!/usr/bin/python3.4

にすべきです。

CGIファイルの先頭に記述するパスは、レンタルサーバによって違ってきますので、使用するレンタルサーバのマニュアルをよく読んで、それに従って対応してください。

投稿2018/08/09 11:36

katsuko

総合スコア3469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsuko

2018/08/09 11:57

私もそう思いました(笑) ただ、少なくとも実行ファイルは「python3.x」とマイナーバージョンまで指定するポリシーなのでは、とも思いました。
mkgrei

2018/08/09 12:06

確かにその可能性もありますね。 もう3.7もリリースされているので、3.6は入って欲しいところですが、そんなに対応してくれるほどのサービスでもないかもしれません。 質問のリンクを見るとpyenvを入れて、それを使うようになっています。 なので、少なくともあの記事が書かれた時点ではenvは使えていたようです。
katsuko

2018/08/09 12:09

> 3.6は入って欲しいところですが 同意しますが、python3が全く入っていないさくらインターネットよりかはマシかと。
mkgrei

2018/08/09 12:33

やっぱり旬はpyenvから自前で入れるしかないのでしょうか。 herokuはあるっぽいんですけどね。
guest

0

ベストアンサー

.htaccess に
AddHandler cgi-script .py
を追加

対象のパーミッションを変更
chmod 705 test.py

コード

python

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3print("Content-type: text/html\n") 4print("<html><body>Python is awesome !</body></html>")

http://your.domain/dir/test.py

って返答ではずれていますかね…?

投稿2018/08/09 07:04

ssmxgo

総合スコア178

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xap

2018/08/12 08:02

この方法で動きました。ありがとうございました。
ssmxgo

2018/08/16 12:52

私は素人の域のもので多くは語れませんが 補足として、opencvなどの重たいライブラリをimportしたら internal server error500が発生してしまいます しかし、コマンドライン上ではライブラリを取り込んでも動きます これを回避する策として、PHPからPythonを起動させて、 出力結果を取得することでCGI?ではなくPHPで動かせました。 PHPもCGIになるのかな?専門的なことはわかりません ご参考ください。
guest

0

http://hukumoto.pe-gawa.com/news/エックスサーバで、perl・ruby・pythonを動かす%E3%80%82

https://qiita.com/utgwkk/items/318985b16337548f4f07

やりたいことの意図がわからないので、的外れかもしれませんが。


https://anopara.net/2013/12/11/ubuntulubuntu13-04でpythonwsgiapacheのhelloworld/

index.cgi

python

1#!/home/ユーザーID/.pyenv/versions/3.4.2/bin/python 2from wsgiref.handlers import CGIHandler 3 4def application(environ, start_response): 5 status = '200 OK' 6 output = 'Hello World!\n' 7 response_headers = [('Content-type', 'text/plain'), 8 ('Content-Length', str(len(output)))] 9 start_response(status, response_headers) 10 return [output] 11 12CGIHandler().run(application)

投稿2018/03/15 11:01

編集2018/03/15 14:01
mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xap

2018/03/15 12:25

XSERVERは、Pythonをindex.cgi経由で動かすのですが、 参考サイトだと、Python+Flaskの場合の例になっていて、 Pythonのみ(私の参考ソース)の動かし方がわからないのです。 参考サイトのindex.cgi、testFlask.pyの組み合わせはわかるのですが…。
mkgrei

2018/03/15 14:03

それともwsgiを使わないHelloWorldがやりたいということでしょうか?
xap

2018/03/15 16:05

XSERVERでのPython起動の情報がなにぶん少なく、的外れな感じもありますが。 参考にしたサイトを確認してもらうとより正確ですが、 .htaccess→index.cgi→pyファイルの形でしか動かないものなのかなと。 HelloWorldがやりたいというよりも、Flaskを使わずにpyファイルを動かす場合、 どう記載するのか?が正確でしょうか。(pyファイルをindex.cgiから呼ぶ出すところ?) 一応頂いたソースのパス修正、属性変更をしてアクセスしてみましたが、 下記が表示されました。 A server error occurred. Please contact the administrator.
mkgrei

2018/08/09 12:02

パーミッションを正しく設定していますか? ssmxgoさんの回答にあるように特定の拡張子しか普通は動きません。 なので、.pyに許可を与えれば、動くようになるはずです。 別の方法には、シェバン行でインタプリタを指定しているので、多分拡張子が違っていても問題ないと思われます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問