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

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

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

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1633閲覧

apacheの設定方法とwsgiファイルを外部公開する方法を教えてください

shuntakahashi

総合スコア14

Flask

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/05/12 08:52

編集2019/05/12 09:01

flaskを使って外部公開すためにまずwsgiファイルを作成しました。

wsgiを使って、pythonのファイルを外部公開したいです。
apacheの/etc/httpd/conf.d/mod_wsgi.conf
のディレクトリ以下に

mod_wsgi.conf

1#LoadModule wsgi_module modules/mod_wsgi.so 2 3WSGIScriptAlias /?????/myapp /home/h0/?????/webapps/myapp.wsgi 4<Directory "/home/h0/?????/webapps"> 5 Order allow,deny 6 Allow from all 7 #SSLRequireSSL 8</Directory>

と書き込みました。
?????は私のpublic_htmlです。

https://ドメイン名/?????/myapp にアクセスすると
Not Found になります。これはmyappというファイルを作成していないからでしょうか?
必要ならどのような設定で必要でしょうか。

またhttps://ドメイン名/?????/webapps/myapp.wsgi
にアクセスするとインターナルサーバーエラーが出力されます。

myapp.wsgiの中身は

wsgi

1#/usr/local/bin/python3 2 3def application(environ, start_response): 4 start_response('200 OK', [('Content-type', 'text/plain')]) 5 return [b'Hello, world']

です。

権限は755に変更してあります。

そもそも、/usr/local/python/lib/python3.5/site-packages
にアクセスしてみると、mod_wsgiがダウンロードされていません。

このサーバーは共有サーバーであり、一般ユーザーの私に権限がありません。

mod_wsgi.confファイルは以前使われていた方の真似をして自分の名前だけを変えて追加書き込みしてもらいました。
管理者の方曰く、以前の方々はこの設定でpythonファイルを実行できていたそうです。
今は、その方達がいないため何も聞くことができないため、この場で質問させていただきます。

外部公開するための
wsgiファイル、apacheやディレクトリなどのアドバイスをお願いします。

現在調べても何もわからず八方塞がりです。よろしくお願いいたします。

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

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

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

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

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

CHERRY

2019/05/14 09:15

サーバーの設定変更語に Apache を再起動していますか? > またhttps://ドメイン名/?????/webapps/myapp.wsgi にアクセスするとインターナルサーバーエラーが出力されます。 Apache のログに 詳細なメッセージが記録されていると思いますので、エラーメッセージを確認してください。
shuntakahashi

2019/05/14 16:15

コメントありがとうございます。 はい、サーバーの設定変更後に再起動はしましたが依然エラーが出力されます。 Apache のログを確認してみると ''' [@自分のドメイン]$ ./public_html/webapps/myapp.wsgi ./public_html/webapps/myapp.wsgi: line 3: 期待してない token `(' のあたりにシンタックスエラー ./public_html/webapps/myapp.wsgi: line 3: `def application(environ, start_response):' ''' とエラー出力されます。どの例文をコピーして貼り付けても全く同じとこでエラーが出るので原因がわからないところです。
gh640

2019/05/15 01:14

ちなみに、該当するドメインに対する Apache の設定は、記載されているものですべてですか?もし他にも関連する設定行が存在するのであればそのあたりも含めてご提示になると、状況がより伝わりやすくなると思います。 (「 https://ドメイン名/?????/webapps/myapp.wsgi にアクセスするとインターナルサーバーエラーが出力されます」とのことですが、ご提示の WSGI の設定だけではそのような挙動にはならないのではないかと思い、このコメントです)
shuntakahashi

2019/05/17 07:30

コメントありがとうございます。 この設定で全てです コードは、上記で示した .wsgiで ./webapps/myapp.wsgi: line 3: 期待してない token `(' のあたりにシンタックスエラー ./webapps/myapp.wsgi: line 3: `def application(environ, start_response):' と出力されます。 このファイルをwebに公開せずに、ローカルのターミナル環境で実行するとエラーは出力されず実行されます。
guest

回答1

0

mod_wsgi.conf の中身が本当に記載されているとおりなのであれば、まずは LoadModule の行をアンコメントして mod_wsgi を適切にロードする形に変更する必要があるのではないでしょうか。

patch

1- #LoadModule wsgi_module modules/mod_wsgi.so 2+ LoadModule wsgi_module modules/mod_wsgi.so

そして、もし mod_wsgi のインストールをまだ行っていらっしゃらなければ、まずは mod_wsgi をインストールするところから、かと思います。

リポジトリの README と公式ドキュメントをまずはご覧になってみてください。

その上で、うまく行かなければ何らかのエラーがログが出ると思いますので、 CHERRY さんのおっしゃるようにログを確認するとよいのではないかと思います。

追記 1

コメント欄でいただいた質問に回答します。

modules ディレクトリには mod_wsgi.so がインストールされているのですが

/usr/local/python/lib/python3.5/site-packages には、mod_wsgiがインストールされていません。

site-packages 以下のmod_wsgi と modules ディレクトリ以下の mod_wsgi.so は全く違う挙動でしょうか?
wsgiファイルを動かすためには、どちらもインストールする必要があるのでしょうか?

mod_wsgi.so ファイルが modules 以下にあるか site-packages 以下にあるかは単純にインストール方法による違いだと思います。ですので、 modules 以下に正しく動くものがすでに入っているのであれば site-packages には mod_wsgi 関連のものが入っていなくても問題ないと私は考えます(ただし一般論としてのお話です。前の担当の方が特殊なことをされていたらわかりません)。

その感じだと Quick Installation Guide のページをまだご覧になっていらっしゃらない、ですよね?まずは Quick Installation Guide をじっくりお読みになって & LoadModule の行をアンコメントして mod_wdgi.so が読み込まれるかどうかを確認されてみるのはいかがでしょうか。

追記 2

質問者さんが同内容の質問を別に立てられたようなので、重複を防ぐためこちらの回答は終了します:

投稿2019/05/14 12:41

編集2019/05/25 07:50
gh640

総合スコア1407

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

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

shuntakahashi

2019/05/14 15:55

コメントありがとうございます。 modules ディレクトリには mod_wsgi.so がインストールされているのですが /usr/local/python/lib/python3.5/site-packages には、mod_wsgiがインストールされていません。 site-packages 以下のmod_wsgi と modules ディレクトリ以下の mod_wsgi.so は全く違う挙動でしょうか? wsgiファイルを動かすためには、どちらもインストールする必要があるのでしょうか?
shuntakahashi

2019/05/17 07:28

コメントありがとうございます。 コメント頂いた通り、load moduleをコメントアウトすると読み込めました。 しかし、設定したwsgiファイルに置いて依然、Internal Server Error が出力されます。  コードは、上記で示した .wsgiで ./webapps/myapp.wsgi: line 3: 期待してない token `(' のあたりにシンタックスエラー ./webapps/myapp.wsgi: line 3: `def application(environ, start_response):' と出力されます。 このファイルをwebに公開せずに、ローカルのターミナル環境で実行するとエラーは出力されず実行されます。
gh640

2019/05/19 12:05

少し意思疎通がうまくいっていない感じがします。 > コメント頂いた通り、load moduleをコメントアウトすると読み込めました。 「 `LoadModule` の行をアンコメントして」というのは「 `LoadModule` のコメントアウトを解除して」、つまり「先頭の `#` を削除して」という意味でした。わかりづらくて申し訳ありません。 まずは `mod_wsgi` の読み込みを正しく行う必要があるので、まずはそこを目指してください。できているかどうかわからなければコマンド等でチェックしましょう。 参考: https://www.shellhacks.com/list-loaded-enabled-apache-modules/ > しかし、設定したwsgiファイルに置いて依然、Internal Server Error が出力されます。  これはどの URL にアクセスしたときの話をされていますか? wsgi として動かしたいのであれば、 `https://ドメイン名/?????/myapp` で確認する必要があるものと思いますが、この URL のことをおっしゃっていますか? また、「リポジトリの README と公式ドキュメントをまずはご覧になってみてください」というコメントがスルーされているような気もするのですが、いかがでしょう。本来複雑なことではないはずなので、いちどドキュメントをご覧になることをおすすめします。 > 管理者の方曰く、以前の方々はこの設定でpythonファイルを実行できていたそうです。 もしかしたら、実は wsgi ではなく cgi として実行されていた、という可能性はありませんか?念のためチェックされるとよいかもしれません。 最後に余談ですが、 `myapp.wsgi` の shebang 行は `#` ではなく `#!` 始まりにする必要がある気がします(質問文だけのタイポであればスルーしてください)。
shuntakahashi

2019/05/23 06:11

コメントありがとうございます。 上記で示して頂いた通りに、コメントアウトを解除して読み込みました。 またリポジトリの README と公式ドキュメントも読み、私が使っているapacheサーバーにmod_wsgiがインストールされていることを確認しました。 シェバンのコメントもありがとうございます。正しいシェバンにしています。 しかし、https://ドメイン名/?????/myapp でアクセスすると、internal server error が依然出力されブラウザに出力されない状況が続いています。 どうか、お力をお貸しいただければと存じます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問