0
1

さくらのレンタルサーバに最新のPythonをインストールする苦行

Last updated at Posted at 2024-09-11

コストの問題など、レンタルサーバで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

以上です。

参考

以下の記事が参考になりました。ただし、既にそのままでは動きませんでした。敢えて苦行に挑むか悩むところです

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1