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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

Q&A

1回答

615閲覧

XserverでFlaskのhello worldアプリが起動できない (python)

donfodonfo

総合スコア0

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

0グッド

0クリップ

投稿2022/10/29 17:02

編集2022/11/05 13:31

前提

Xseverで簡単なhello worldと表示させるだけの簡単なFlaskのアプリを以下のサイトに沿って作成しておりましたが500 エラーが表示され続けております。
https://codeaid.jp/webapp-xserver/
かなり長時間調べましたが回答が見つかりませんでしたのでこちらで質問させて頂きます.お知恵をお貸しいただけると幸いです

実現したいこと

発生している問題・エラーメッセージ

web側

500 Internal Server Error

サーバーログ

[Sun Oct 30 01:41:40.981167 2022] [cgid:error] [pid 29962:tid 30001] [client 133.114.51.153:54376] End of script output before headers: index.cgi

該当のソースコード

.htaccess(644権限)

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.cgi/$1 [L] </IfModule>

(600権限)

hello.py

1from flask import Flask 2 3app = Flask(__name__) 4 5@app.route('/') 6def hello_world(): 7 return 'Hello, World!'

(755権限)

index.cgi

1#! /home/ユーザー名/miniconda3/envs/py39/bin/python 2from wsgiref.handlers import CGIHandler 3from hello import app 4import os 5os.environ["REQUEST_METHOD"] = "GET" 6 7CGIHandler().run(app) 8print("Content-Type: text/plain\nStatus: 200\n\nSuccess.")

試したこと

index.cgiの記載が間違っている旨のエラーが出ていたのでpython 環境が正しいか which pythonで確認したところとなっていたため問題ないかと思いました。

~/miniconda3/envs/py39/bin/python

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

maisumakun

2022/10/29 23:43

「以下のサイト」はどこでしょうか。
quickquip

2022/10/30 01:02

「以下のサイト」に書いてあるかもしれませんが mod_rewrite を使わずに普通にcgiとしての起動は確認しているんでしょうか
donfodonfo

2022/10/30 04:32 編集

python index.cgiとしたところ500 internal errorが出てしまっておりましたので以下のサイトを参考にindex.cgiファイルを再度修正しました。 https://k-kuro.hatenadiary.jp/entry/20211124/1637684105 その結果、python index.cgiを再度実行するとコンソール上でstatus 200でhello worldと表示されましたがサーバー、ブラウザのエラー内容は現状のままとなってしまっております。 cgiの起動の確認が不適切でしたら指摘いただけると幸いです。 「以下のサイト」に書いてあるかもしれませんが mod_rewrite を使わずに普通にcgiとしての起動は確認しているんでしょうか
guest

回答1

0

ウェブサーバーは、相手と通信する時に、データを「ヘッダー」と「ボディー」に分けて送ります。
ヘッダーにはボディーの形式やステータスコードなどボディーの読み取りや通信に必要な情報を、
ボディーには送信するデータが入ります。
Webサーバーは、cgiスクリプトを実行した際、出力の上部をヘッダー、ヘッダーより下の出力をボディーと解釈してそれをクライアントに送ります。
例えばcgiスクリプトの出力が

Content-Type: text/plain Status: 200 hogehoge

だと、上の二行がヘッダー、下のhogehogeがボディーと解釈され、クライアント(ブラウザ)にはhogehogeが表示されます。
このようにヘッダーとボディーの分け目は改行2つで表されるのですが、あなたのindex.cgiは何も出力せずに終了しているため、ヘッダーがないので相手に通信できずエラーを起こしています。
なので、index.cgiの最後に

py

1print("Content-Type: text/plain\nStatus: 200\n\nSuccess.")

などを追記することで出力にヘッダーとボディーを追加することでエラーを解消できるはずです。

投稿2022/11/04 08:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

donfodonfo

2022/11/05 13:33

回答ありがとうございます。上記実施いたしましたがサーバー側、フロント側のエラー内容は現状と変わらずでした。概要欄に修正後のindex.cgiを載せてありますのでご確認いただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問