さくらのレンタルサーバ(スタンダードプラン)では、自分でPythonをインストールして使うこともできる。 ここではCGIが実行できるまでを解説する。
まず、適当なターミナルソフトを使ってSSHでサーバーにログインする。
さくらのホームディレクトリは以下のようになっている。
/home/自分のアカウント名/
インストールする場所はどこでも良いが、ここではこの配下にlocalというディレクトリを作り、そこで作業を行う。 ディレクトリ名はあくまで例であり、自分の好みの名称で良い。
さらにlocalの下にsrcとpython3というディレクトリを作成する。 最終的にディレクトリの構成は以下のようになる。
/home/自分のアカウント名 └local ├python3 └src
このsrcディレクトリに移動し、wgetで現在最新版のPython-3.9.7をダウンロード。 その後、展開(解凍)する。
cd src wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz tar -xvzf Python-3.9.7.tgz
次に、configureの --prefix オプションでインストール先のディレクトリを指定する。 ここでは先ほど作成したpython3ディレクトリを指定する。 $HOME(または~(チルダ))は自分のホームディレクトリのことで、/home/自分のアカウント名/のように直接指定しても良い。
./configure --prefix=$HOME/local/python3/ make make install
それぞれのコマンドを打った後、わりと時間がかかるのでしばらく待機する。
インストール完了後、以下のように打つとバージョンが確認できる。
~/local/python3/bin/python3 -V
ディレクトリを見ると分かるが、python3は同ディレクトリにあるpython3.9へのシンボリックリンクとなっており、これが本体となっている。
さくらのレンタルサーバはデフォルトのシェルがcsh(.cshrc)となっている。 ここではこのファイルを編集してパスを設定する。 なお、パスを設定するか否かは自由で、設定しなくても上記のようにpython3を直接叩けば実行できる。
ホームディレクトリに移動し、viなどで.cshrcというファイルを開く。
cd ~ vi .cshrc
中に以下のような予め設定されているパスがある。
set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)
ここに連ねても良いが見にくいので、下に1行追加して以下のようにする。
set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) set path = ($HOME/local/python3/bin $path)
$pathは上の変数を引き継いでいる。 引き継がないと通常のLinuxコマンド等が使えなくなるので注意する。 また、先に書いたものが優先されるので$pathを後に書く。
編集後、設定を更新。
source .cshrc
ログインしたとき一時的にパスが通れば良いという人は、このパスをコマンドとして打っても良い。
set path = ($HOME/local/python3/bin $path)
パスが通ったか確認する。
python3 -V
Windowsでいうところのショートカットのようなもの。 長いパスを短くしたい場合などに設定する。 ここでは上記localディレクトリの下にbinディレクトリを作成し、そこにシンボリックリンクを作成する。
cd ~/local mkdir bin cd bin ln -s ~/local/python3/bin/python3.9 python3
これで以下のようにコマンドが実行できるようになる。
~/local/bin/python3 -V
実は一番試したかったことがCGIの実行である。 上記の設定を済ませた後、以下の動作確認用のコードを実行する。
#!/home/自分のアカウント名/local/python3/bin/python3 # -*- coding: utf-8 -*- import sys #import io #sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') print("Content-type: text/html; charset=utf-8\n\n") print(""" <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>CGI 動作テスト</title> </head> <body> """) print(sys.version) print(""" </body> </html> """)
パス(シバン)は自分でインストールしたPython本体(インタプリタ)またはそのシンボリックリンクを指定する。 その際、チルダ(~)等は使わず、/home/自分のアカウント名/から記述する。
コメントアウトしているimport ioなどは、日本語を含むと上手く表示されない場合に使用。
なお、ファイルの改行コードはLF、文字コードはUTF-8、パーミッションは755とする。
ファイルの拡張子は.cgiでも良いが、Pythonらしく.pyのまま動かしたい場合は.htaccessに以下のように書く。
Options +ExecCGI AddType text/html .py AddHandler cgi-script .py
AddHandlerだけでもよい。