web-dev-qa-db-ja.com

CentOS 7でpython3.5を使用してApache 2.4+用のmod_wgsiをインストールする方法

タイトルに「CentOS 7にpython3.5のmod_wgsiをインストールするには」とありますか?

$ pip3.5 install mod_wgsiが機能しませんでした

Collecting mod_wgsi
  Could not find a version that satisfies the requirement mod_wgsi (from versions: )
No matching distribution found for mod_wgsi

Sudo yum install libapache2-mod-wsgi-py3も失敗しました:

Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
This system is not registered with Subscription Management. You can use subscription-manager to register.
Loading mirror speeds from cached hostfile
 * base: mirror.daniel-jost.net
 * epel: mirrors.n-ix.net
 * extras: mirror.daniel-jost.net
 * ius: mirror.amsiohosting.net
 * remi: mirror.23media.de
 * remi-php56: mirror.23media.de
 * remi-safe: mirror.23media.de
 * updates: mirror.daniel-jost.net
No package libapache2-mod-wsgi-py3 available.
Error: Nothing to do

CentOS 7でpython3.5を使用してApache2.4 + mod_wsgiを実行する方法についての提案は大歓迎です!

10
uzla

すでにIUSリポジトリが有効になっているようです。 SCLフープを飛ばさなくても、通常のパッケージをインストールするだけで済みます。

yum install python35u-mod_wsgi

これは標準のファイルシステムの場所を使用して、標準のApache HTTPD 2.4で動作します。

/etc/httpd/conf.modules.d/10-wsgi-python3.5.conf
/usr/lib64/httpd/modules/mod_wsgi_python3.5.so
10
carlwgeorge

Carl's answer を試してみましたが、問題は解決しませんでした。インストールしたバージョンでは、インストール後にいくつかの追加の構成手順が必要であることがわかりました。

バックグラウンド

mod_wsgiアップグレードをインストールする前に、Apacheのmodulesフォルダーを確認しました。

$ ls -l /lib64/httpd/modules
[...]
-rwxr-xr-x. 1 root root 172800 Oct 30 22:44 mod_wsgi.so

次に、SCLリポジトリをインストールし、mod_wsgiのどのバージョンが利用可能かを調べました。

$ Sudo yum install -q -y centos-release-scl
[...]
$ yum search mod_wsgi
[...]
koschei-frontend.noarch : Web frontend for koschei using mod_wsgi
mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
python27-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
python33-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
rh-python34-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
rh-python35-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
rh-python36-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
viewvc-httpd-wsgi.noarch : ViewVC configuration for Apache/mod_wsgi
[...]

Python 3.6を使用しているため、一致するバージョンをインストールしてApacheを再起動しました。

$ Sudo yum install -q -y rh-python36-mod_wsgi
[...]
$ Sudo systemctl restart httpd

悲しいことに、それは問題を解決しませんでした。 Apacheのmodulesフォルダを見ると、何も変わっていません。おかしい!

$ ls -l /lib64/httpd/modules
[...]
-rwxr-xr-x. 1 root root 172800 Oct 30 22:44 mod_wsgi.so

それで、何がインストールされましたか?

$ rpm -ql rh-python36-mod_wsgi
/opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-rh-python36-wsgi.conf
/opt/rh/httpd24/root/usr/lib64/httpd/modules/mod_rh-python36-wsgi.so
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18/CREDITS.rst
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18/LICENSE
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18/README.rst

追加の構成手順

必要なファイルをインストールしましたが、便利な場所にはありませんでした。 README.rstファイルからのヒントを使用して、適切な場所にコピーしました。

Sudo cp /opt/rh/httpd24/root/usr/lib64/httpd/modules/mod_rh-python36-wsgi.so /lib64/httpd/modules
Sudo cp /opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-rh-python36-wsgi.conf /etc/httpd/conf.modules.d
Sudo systemctl restart httpd

これで正しいバージョンのmod_wsgiができました。私のDjangoアプリはApacheの下で実行されます。

10
Don Kirkby

Rh-python35-mod_wsgiパッケージを提供するrh-python35ソフトウェアコレクションを確認しましたか?

SCLの詳細については、以下を参照してください。

1
Remi Collet

私は python 3.6 のSCLパッケージを使用します(ただし、以下の3.5を自由に置き換えてください)。

始めること:

yum install centos-release-scl
yum install rh-python36 rh-python36-mod_wsgi

SCLパッケージhttpd24-httpdとmod_wsgiファイルをそのインストールに配置します。そのインストールを使用し、ベースCentOS httpdパッケージをではなくインストールすることをお勧めします。執筆時点では、CentOS 7の場合、httpdパッケージは2.4.6であり、httpd24-httpdパッケージは2.4.37です。

次に、以下を使用してvirtualenvを作成します。

/opt/rh/rh-python36/root/usr/bin/python -m venv /path/to/venv36
source /path/to/venv36/bin/activate
pip install ...

これで、サイトの構成を/opt/rh/httpd24/root/etc/httpd/conf.d/mysite.conf、これには次のようなものを含めることができます:

<VirtualHost *:80>
    LoadModule wsgi_module modules/mod_wsgi.so

    ErrorLog /var/log/httpd24/mysite-err.log
    CustomLog  /var/log/httpd24/mysite.log combined

    # recommended way of setting Django_SETTINGS_MODULE http://stackoverflow.com/a/25496668/3189
    WSGIProcessGroup mysite.settings.production
    WSGIDaemonProcess mysite.settings.production python-path=/path/to/mysite/:/path/to/venv36/lib/python3.6/site-packages
    WSGIScriptAlias / /path/to/mysite/wsgi.py process-group=mysite application-group=%{GLOBAL}
</VirtualHost>

ここで、SCL Apacheを次のように起動します。

systemctl start httpd24-httpd

そして、あなたのサイトは機能しているはずです。

0
Hamish Downer