CentOS7 に Python3 をインストールして Apache 上で CGI として動かす

タイトルのとおり。CentOS 7 系のサーバに、とりあえず何らかの Python 3 系をインストールして、Apache 上で CGI として動かせるようにした。

目次

Python3 をインストールする

本稿執筆時点では、Yum でサクッと入れられる Python は v3.6 系が最新だった。

$ yum install -y https://centos7.iuscommunity.org/ius-release.rpm
$ yum install -y python36u python36u-libs python36u-devel python36u-pip

# 以下のようにインストールされた
$ which python3
/bin/python3
$ which python3.6
/bin/python3.6
$ python3 -V
Python 3.6.8

# pip3 もインストールされている
$ which pip3
/bin/pip3
$ pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

pythonpip コマンドはデフォルトでインストールされていた v2.7.5 のモノを指しているので、Python3 系を使いたい場合は python3pip3 ですな。

Apache で CGI として使えるようにする

Apache の設定ファイルを開き、次のような設定を入れていく。

$ vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
    Options Indexes FollowSymLinks ExecCGI
    AddHandler cgi-script .cgi .rb .py
    AllowOverride All
    Require all granted
</Directory>

こんな感じで、Options ExecCGI とか、AddHandler cgi-script .py とかを入れていけば OK。

設定ができたら、

$ apachectl

を叩いて再起動してみて、設定ファイルにエラーがないか確認し、設定を反映する。

Python スクリプトを書いてみる

次のような Python CGI スクリプトを書いて、動作確認してみる。

$ vi /var/www/html/example.py
#!/usr/bin/python3

import os

print('Content-Type: text/html; charset=UTF-8\n')
print('TEST : ' + os.environ['SCRIPT_NAME'])

コレで

にアクセスして、TEST : /example.py と表示されたら OK。

以上

コレで Python を CGI として動かせる CentOS Apache サーバができた。