コストの問題など、レンタルサーバでPythnを使いたい場合が多くあります。その場合には、かなりの苦行が必要ですが下記の手順で操作します。
ポイントは下記の通り:
- SSH接続が必要なので「スタンダードプラン」以上が必要
- pyenvを使って最新版をインストール
- OpenSSLを最新版にアップデートする必要がある
レンタルサーバとの接続
スタンダードプラン以上を契約し、以下のコマンドでサクラに接続します。
ssh (初期ドメイン)@(初期ドメイン).sakura.ne.jp
設定ファイルの変更
続いて、シェルをBashに切り替えます。
chsh -s /usr/local/bin/bash
コマンドを実行したら、SSHコマンドでサーバーに接続しなおします。
その後、下記のコマンドを実行して、各種設定を行います。
# ~/.bash_profileを作成する
echo 'if [ -f ~/.bashrc ]; then' >> ~/.bash_profile
echo ' . ~/.bashrc' >> ~/.bash_profile
echo 'fi' >> ~/.bash_profile
# pyenvをインストール
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# pyenvを有効にする
cat << EOS >> ~/.bashrc
export PATH
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
export TMPDIR=/home/nashio/tmp
eval "$(pyenv init -)"
pyenv rehash
EOS
source ~/.bashrc
上記を実行したら切断して、もう一度SSHでログインし直します。
OpenSSLを最新にアップデート
続いて、OpenSSLのインストールの準備です。
mkdir -p $HOME/local/src
cd $HOME/local/src/
OpenSSLの最新版を以下のサイトから一度ローカルにダウンロードします。
この記事を書いたときの最新版は、OpenSSL 3.3.2でした。
openssl-3.3.2.tar.gz
をローカルにダウンロードしたら、それを、FTPを使って、レンタルサーバーの$HOME/local/src/
にアップロードします。
なぜか、curlコマンドがまともに動かなかったため。
その後、以下のコマンドを実行してOpenSSHをビルドします。それなりに時間がかかります。
tar xvfpz openssl-3.3.2.tar.gz
cd openssl-3.3.2
./config --prefix=$HOME/local/openssl/3.3.2 --openssldir=/etc/ssl
make
make install_sw
これで、パス$HOME/local/openssl/3.3.2
にOpenSSLがインストールされました。
echo 'export LD_LIBRARY_PATH=$HOME/local/openssl/3.3.2' >> ~/.bashrc
source ~/.bashrc
Pythonのインストール
# install
CONFIGURE_OPTS="--with-openssl=$HOME/local/openssl/3.3.2" \
PY_UNSUPPORTED_OPENSSL_BUILD=static \
TMPDIR="${PWD}/tmp" \
pyenv install 3.12.6
# pyenvを有効に
pyenv global 3.12.6
バージョンを試してみましょう。
$ python --version
Python 3.12.6
以上です。
参考
以下の記事が参考になりました。ただし、既にそのままでは動きませんでした。敢えて苦行に挑むか悩むところです