🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Apache

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

Python 3.x

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

1回答

9619閲覧

WindowsにてWSGIを連携させたいが、Apacheが起動しない

ryo_0126

総合スコア10

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Apache

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

Python 3.x

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2019/12/10 15:08

編集2019/12/11 03:31

前提・実現したいこと

WindowsにてWSGIとApacheを連携させたいです
(目的はDjangoでWebアプリを作成したいです)

■環境
OS:Windows Server 2012 64bit
Python: ver.3.8 (venv環境)
Apache: ver.2.4

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

Apacheを起動させようとすると、起動しません。
エラーメッセージも出力されずに、終了してしまいます。
エラーメッセージが出ないので、何が悪いのかわからず困っています。。

C:\Apache24\bin>httpd.exe -k start C:\Apache24\bin>httpd -k stop The 'Apache2.4' service is not started. C:\Apache24\bin>

※上記は、起動時にはエラーが出ないが、実際には起動できていない様子です。

error_logファイルには、起動時の下記のメッセージしか出力されていません。
【error_log】

Starting the 'Apache2.4' service The 'Apache2.4' service is running.

該当のソースコード

下記設定ファイルのLoadModule以下を削除するとApacheが正常に起動するので、
下記記述のどこかに問題があるかと思います。
パスに間違いがないことは確認済みです。

httpd.conf

httpd.conf

1LoadModule wsgi_module "c:/~~~/mod_wsgi.cp38-win_amd64.pyd" 2 3WSGIPythonHome "c:/~~~/venv" 4WSGIScriptAlias / "c:/~~~/wsgi.py" 5WSGIPythonPath "c:/~~~" 6 7<Directory "c:/~~~"> 8<Files wsgi.py> 9Require all granted 10</Files> 11</Directory> 12

試したこと

mod_wsgi-express module-configにて出力された情報を、上記httpd.confに記載しています。

■Apache
httpd-2.4.41-win64-VC15
■mod_wsgi
mod_wsgi-4.6.8+ap24vc15-cp38-cp38-win_amd64.whl
→Apacheのバージョン(2.4 VC15)、Pythonのバージョン(3.8)、OSのビット数(64)も全て一致しております

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

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

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

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

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

CHERRY

2019/12/10 21:32 編集

ログファイルに何かメッセージが記録されていないでしょうか? 設定を変更していない場合、通常は Apache のインストールディレクトリの中の logs ディレクトリに保存されています。
ryo_0126

2019/12/11 02:29

error_logファイルには、起動時に下記のメッセージが出力されています。 ``` Starting the 'Apache2.4' service The 'Apache2.4' service is running. ``` 上記以外は特に出力なしです
CHERRY

2019/12/11 03:13

起動成功した記録しかないということですね。 タスクマネージャーなどで起動中のプロセスを確認するとapacheプロセスは存在していますか?
ryo_0126

2019/12/11 03:26

それが存在していないんです。 stopしようとすると 「The 'Apache2.4' service is not started.」と出力されるので起動できていないようです。 上記httpd.confの「LoadModule ~~」を消すとApacheが正常に起動し、タスクマネージャーでもプロセスが確認できます
退会済みユーザー

退会済みユーザー

2019/12/11 03:40

amd64 て AMD 製のCPU 64bit プロセッサ向けなきが・・
退会済みユーザー

退会済みユーザー

2019/12/11 03:53

あと OSとミドルウェア郡のビット数も全部統一する必要がある
退会済みユーザー

退会済みユーザー

2019/12/11 03:58

あ、OSが64でそれ以外は32は可
ryo_0126

2019/12/11 03:58

OS,Apache,Python,PostgreSQLは64bitで統一してあります
ryo_0126

2019/12/11 04:01

コマンドではなくサービスとしてApache起動したところ、Windowsのシステムログに下記エラーが出力されていました。 The Apache service named reported the following error: >>> httpd.exe: Syntax error on line 538 of C:/Apache24/conf/httpd.conf: Cannot load c:/~~~/mod_wsgi.cp38-win_amd64.pyd into server: \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x8 httpd.confのLoadModuleで怒られているので、mod_wsgi.cp38-win_amd64.pydがおかしいようです。。
ryo_0126

2019/12/11 04:27

エラー内容は「指定されたモジュールは存在しません」でした ビットの整合性とパスを再度確認します
take88

2019/12/11 16:00

mod_wsgi の GithubのReadmeを見ると、Cコンパライラのバージョンが重要らしいです。Apacheとmod_wsgiはVC15でビルドされてるっぽいですが、Python 3.8 が VC15でコンパイルされてるかわかりますか?
take88

2019/12/11 16:19

あと、LoadModule の引数から クォートを外すとどうなりますか?
take88

2019/12/11 17:44

色々書きましたが、回答に書きましたのでご確認ください。
guest

回答1

0

ベストアンサー

mod_wsgi-express.exe module-config を実行すると 設定が表示されるのでそのまま httpd.conf にペーストすれば良いと思います。

cmd

1C:\~\Python38\Scripts>mod_wsgi-express.exe module-config 2LoadFile "c:/~/python38/python38.dll" 3LoadModule wsgi_module "c:/~/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd" 4WSGIPythonHome "c:/~/python38"

たぶん、LoadFilepython38.dll をロードすれば良さそうです。

投稿2019/12/11 17:44

take88

総合スコア1467

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

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

ryo_0126

2019/12/12 02:27

仰る通り、LoadFileでpython38.dllを追加したところ正常にApache が起動することを確認しました! 二日くらいずっと詰まっていたので、非常に助かりました!ありがとうございます! taka88さんの技術力の高さに感謝します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問