このエントリーをはてなブックマークに追加

Python 3のインストール手順@さくらのレンタルサーバ

更新:

さくらのレンタルサーバ(スタンダードプラン)では、自分で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を実行する

実は一番試したかったことが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だけでもよい。


このエントリーをはてなブックマークに追加