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

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

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

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

Python

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

解決済

Load Module wsgi_modulesとWSGIScriptAliasを設定すると動かなくなる。

ASAPBYAF
ASAPBYAF

総合スコア2

Apache

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

Python

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

2回答

0評価

0クリップ

705閲覧

投稿2021/09/16 05:36

編集2021/09/16 06:52

#apacheとmod_wsgiの連携をして、ブラウザからアクセスした際に、pythonのファイルを実行して返すサーバーを実装したいです。フレームワークは使用していません。
apacheは2.4.48でmod_wsgiは4.9.0のバージョンを使っています。
#まずmod_wsgiを使わず、apacheのHostとVirtualHostそれぞれにアクセスし、htmlのファイルを返すこと確認しました。
具体的には、curl localhost:80,curl localhost:81を入力して、設定したindex.htmlが表示されました。

#次の段階として、mod_wsgiを連携させたいと考えています。
mod_wsgiは、ソースコードからダウンロードanaconda4.10.1において仮想環境を構築し、その仮想環境の中にpipを使ってインストールしました。
また、この仮想環境にはpython3.9.6もインストールしました。

#このような環境の下で、以下のような4つの設定をしました。
###(1)WSGIScriptAliasの設定(/usr/local/apache2/conf/extra/httpd-vhosts.conf)

Listen 81 <VirtualHost *:81> ServerName wsgiapp.example.com DocumentRoot "/usr/local/vhosts" <Directory "/usr/local/vhosts"> AllowOverride All Require all granted </Directory> Alias /vhalias "/usr/local/vhalias" <Directory "/usr/local/vhalias"> AllowOverride All Require all granted </Directory> WSGIScriptAlias /myapp "/usr/local/www/myapp.wsgi" <Directory "/usr/local/www"> AllowOverride All Require all granted </Directory> </VirtualHost>

###(2)Load moduleの設定(/usr/local/apache2/conf/httpd.conf)

LoadModule wsgi_module /home/vagrant/anaconda3/envs/gaia/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so

このディレクトリはmod_wsgi-express module-configによって確認したものを使っています。
###(3)Include conf/extra/httpd-vhosts.confはコメントアウトを解除(/usr/local/apache2/conf/httpd.conf)

# Virtual hosts Include conf/extra/httpd-vhosts.conf

###(4)myapp.wsgiの設定(/usr/local/www/myapp.wsgi)

def application(environ, start_response): status = '200 OK' output = b'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]

#このように設定し、apacheを再起動すると、curl localhost:80,curl localhost:81,curl localhost:81/myappと打っても何も反応がないです。エラーが発生するわけでもないです。

また設定の方法はいろいろ試しており、
(1)httpd-vhosts.conf側にLoad moduleの設定、httpd-vhosts.conf側にWSGIScriptAlias
(2)httpd.confとhttpd-vhosts.conf側の両方にLoad moduleの設定、httpd-vhosts.conf側にWSGIScriptAlias
のどの場合も同じように動作しないことがわかっています。

#設定方法のわかる方がいらっしゃれば教えていただければと思います。よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yukky1201

2021/09/16 07:13

サーバが動作していれば何も反応がない。ということはないはずです。 「apacheを再起動すると」という事ですが、何を実施して、何を確認しているでしょうか。もしかしたら、起動に失敗したりしてないでしょうか。apacheのstauts確認結果も提示ください。
ASAPBYAF

2021/09/16 07:21 編集

まず、systemctl restart apache2をしました。 そのあと、systemctl status apache2とすると、 --- apache2.service - Apache httpd daemon Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; vendor preset: disabled) Active: active (running) since 木 2021-09-16 16:15:24 JST; 4s ago Process: 27620 ExecStart=/usr/local/apache2/bin/apachectl -k start (code=exited, status=0/SUCCESS) Main PID: 27623 (httpd) Tasks: 5 CGroup: /system.slice/apache2.service └─27623 /usr/local/apache2/bin/httpd -k start --- が得られました。 その後、curl localhostとすると、何も返ってきません。 固まるわけではなく、Ctrl+Cで抜けることはできます。 よろしくお願いします。
holy_

2021/09/16 08:49

/var/log/httpd/error_logはエラーログ出力されていますか?
ASAPBYAF

2021/09/16 09:13 編集

起動していることを確認した後、curl localhostとすると、動かなくなりました。 以下は、その直後に確認したerror_logファイルの対応個所になります。 (/usr/local/apache2/logs/error_log) =============================================== Current thread 0x00007fb7af645740 (most recent call first): <no Python frame> [Thu Sep 16 18:03:55.609686 2021] [wsgi:warn] [pid 10330:tid 140426898331456] (13)Permission denied: mod_wsgi (pid=10330): Unable to stat Python home /home/vagrant/anaconda3/envs/gaia. Python interpreter may not be able to be initialized correctly. Verify the supplied path and access permissions for whole of the path. Python path configuration: PYTHONHOME = '/home/vagrant/anaconda3/envs/gaia' PYTHONPATH = (not set) program name = 'python3' isolated = 0 environment = 1 user site = 1 import site = 1 sys._base_executable = '' sys.base_prefix = '/home/vagrant/anaconda3/envs/gaia' sys.base_exec_prefix = '/home/vagrant/anaconda3/envs/gaia' sys.platlibdir = 'lib' sys.executable = '' sys.prefix = '/home/vagrant/anaconda3/envs/gaia' sys.exec_prefix = '/home/vagrant/anaconda3/envs/gaia' sys.path = [ '/home/vagrant/anaconda3/envs/gaia/lib/python39.zip', '/home/vagrant/anaconda3/envs/gaia/lib/python3.9', '/home/vagrant/anaconda3/envs/gaia/lib/python3.9/lib-dynload', ] Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding Python runtime state: core initialized ModuleNotFoundError: No module named 'encodings' Current thread 0x00007fb7af645740 (most recent call first): <no Python frame> ============================================= よろしくお願いします。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Apache

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

Python

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