日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

さくらインターネット ライトプランに python3をインストール

2018-06-12
python3をインストール : さくらインターネット ライトプラン

さくらインターネットの
Ruby と Python は古すぎて使い物にならない
Ruby /usr/local/bin/ruby 1.8.7
Python /usr/local/bin/python 2.7.6
2018/06

ローカルのcygwinでバージョンを見ると
ruby 2.3.6
Python2  2.7.14
Python3  3.6.4

virtualboxにいれているテスト用のfreebsd9でも Python 2.7.13 が返ってくる(pkg upgradeとうったが最新だよっていわれ、もう更新できない。)

FreeBSD9は tlsv1 なので
最新のものに更新していない古いバイナリを実行すると
'SSLError(SSLError(1, '[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:833)'),)'
などのエラーが発生する

  さくらインターネットで使われている python 2.7.6はいつごろか追うと 2014Q3 ということがわかった。 2014Q4からは、2.7.8になっているので
4年以上も放置されているということになる
ということで、pythonを使いたい人はさくらインターネットの共有サーバーはやめておいたほうがいいでしょう。
OSのアップグレード待つか、新規契約して新しいサーバーに移るしかないですね。

注意点(リスク)
せっかくインストールしてもサーバーOSがアップグレードされると
.soファイルのリンク切れで
自前Buildアプリはすべてダウンしてしまうので気を付けましょう

さくらインターネットは FreeBSD9(FreeBSD 9.1) で
FreeBSD9のFreeBSD公式サポートはかなり前に終了していて(9.1:2014 年 12 月 31 日, 9シリーズ:最終 2016 年 12 月 31 日)
osのライブラリも古いので 自前buildは あまりお勧めしない

現在のFreeBSDのカレントブランチは 11 で 来年には12がリリースされる

perlの切り替えができるので、pythonでも切り替えは技術的には可能なはずなので
サポートに pythonの切り替え機能の要望を出したほうが無難でしょう



ライトプランでbuildするには、
コマンドは、すべて cgi経由になります
home環境変数が設定されていないので、設定してからコマンドを実行しましょう
途中でストップしたくなったときは、コントロールパネルの「リソース情報」から強制終了できます

手順
1. homeディレクトリの確定
ファイル名の先頭から正規表現で抜けば簡単です
'^(/home/[^/]+/)'
これでホームフォルダをゲットできます。
スクリプト内で環境変数 HOME をセットする。
chdirでカレントフォルダを作業フォルダに移動する

2. あとは /home/ユーザー名/local/python3 にインストール
不要になったとき消しやすいので、python3まで指定したほうがいいです
build と install

cgiの呼び出しを /home/ユーザー名/local/python3/bin/python3 に変更し、動作するか確認する



Virtualbox (FreeBSD 9)メモ
pip3 コマンドのインストール
sudo python3 -m ensurepip

django
No module named '_sqlite3'
sudo pkg install databases/py35-sqlite3

# django: pytz が必要
# https://www.djangoproject.com/download/
# https://pypi.python.org/pypi/pytz#downloads
固定バージョンで使う場合
スクリプト内で
sys.path.append("パス")

pythonに常時組み込む場合
pip3 install pytz


python 3.6.5のインストール

https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

curl -O https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
サーバーの仕様で無理(opensl 1.0.xとcurlをソースからbuildしてシステムへいれると直りました)
PCでダウンロードしたものを転送してください
(★さくらのサーバーでは、このエラーは発生しなかった)

tar zxvf Python-3.6.5.tgz
cd Python-3.6.5/

./configure --prefix=$HOME/local/python3
gmake
gmake install

確認
$HOME/local/python3/bin/python3 --version
  Python 3.6.5

$HOME/local/python3/bin/pip3 --version
  pip 9.0.3

Djangoのインストール
$HOME/local/python3/bin/pip3 install Django==2.0.6
  Installing collected packages: pytz, Django

.cgiのパスを変更して動作することを確認
#!/home/ユーザー/local/python3/bin/python3

VirtualboxのFreeBSDのユーザー環境へのインストールで動作確認完了。

同様の手順でさくらインターネット「ライトプラン」にてpython3.6のbuildと動作の確認をした。
du -Hh -s ./
 170M ./
python3.6は 170MB消費するようである。
少し大きめなのでサーバー側で用意してもらったほうがいいので、使いたい場合は、python3.6への対応をサポートへ要望でだしたほうがいいでしょう。


上記の面倒な作業が下記のインストーラーワンクリックで完了♪


インストーラー (更新機能はついていません)
install-python3.cgi
ダウンロード
#!/usr/bin/env bash

#
# Copyright (c) 2018 okamerin
#
echo "Content-Type: text/plain"
echo ;
echo "Welcome to python3 installer"

TARGET_VERSION=3.6.5
TARGET_DJANGO_VERSION=2.0.6

#PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin"
if [[ ! "$HOME" =~ ^(/home/[^/]+)/ ]]; then
        if [[ $(realpath $0) =~ ^(/home/[^/]+)/ ]]; then
                PREFIX="${BASH_REMATCH[1]}/local/python36"
        fi
else
        PREFIX="$HOME/local/python36"
fi
if [[ ! "$PREFIX" =~ ^/home/[^/]+/local/ ]]; then
        echo "HOME フォルダが検出できませんでした"
        exit
fi
if [[ -e "$PREFIX" ]]; then
        echo "インストール済みです"
        exit
fi
tmp_dir="$(dirname $(realpath $0))/tmp_python_build"
if [[ ! -e "$tmp_dir" ]]; then
        mkdir "$tmp_dir"
fi
if [[ ! -e "$tmp_dir" ]]; then
        echo "作業フォルダが見つかりませんでした"
        exit
else
        cd "$tmp_dir"
        if [[ ! "$PWD" == "$tmp_dir" ]]; then
                echo "作業フォルダに移動できませんでした"
                exit
        fi
fi

curl -O https://www.python.org/ftp/python/${TARGET_VERSION}/Python-${TARGET_VERSION}.tgz
if [[ ! -e "$tmp_dir/Python-${TARGET_VERSION}.tgz" ]]; then
        echo "Python-${TARGET_VERSION}.tgz : ファイルが見つかりませんでした"
        exit
fi
if [[ ! -e "$tmp_dir/Python-${TARGET_VERSION}" ]]; then
        tar zxvf Python-${TARGET_VERSION}.tgz
fi

cd "Python-${TARGET_VERSION}"

#export CPPFLAGS="-I/usr/local/ssl/include ${CPPFLAGS}"
#export LDFLAGS="-L/usr/local/ssl/lib {LDFLAGS}"
export SSL=/usr/local/ssl

if [[ ! -e "patch-Setup.dist" ]]; then
        touch "patch-Setup.dist"
        echo "SSL=/usr/local/ssl" >> "patch-Setup.dist"
        echo '_ssl _ssl.c \' >> "patch-Setup.dist"
        echo '     -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \' >> "patch-Setup.dist"
        echo '     -L$(SSL)/lib -lssl -lcrypto' >> "patch-Setup.dist"
#SSL=/usr/local/ssl
#_ssl _ssl.c \
#       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#       -L$(SSL)/lib -lssl -lcrypto
        echo "" >> Modules/Setup.dist
        cat "patch-Setup.dist" >> Modules/Setup.dist
fi

./configure --prefix=$PREFIX

gmake && gmake install

if [[ -e "$PREFIX/bin/pip3" ]]; then
        if [[ "" == "$(python3/bin/pip3 show django)" ]]; then
                $PREFIX/bin/pip3 install Django==${TARGET_DJANGO_VERSION}
        fi
fi

if [[ -e "$PREFIX/bin/python3" ]]; then
        if [[ ! -e "$PREFIX/../python3" ]]; then
                ln -s "$PREFIX" "$PREFIX/../python3"
        fi
        cd ../..
        rm -rf "$tmp_dir"
fi
使用方法:
705などのアクセス権を付けて設置urlにアクセスする
しばらくすると完成する。下にスクロールして、新しい文字がでなくなったら完了
(制限に引っかかると途中で落ちるので再度実行する: コントロールパネル「リソース情報」から確認する)
使用後は、スクリプトをサーバーから撤去すること。

ライトプランで
django2.0の初期デモページが動作することを確認しました(別記事参照)
レスポンス時間 0.5-1.3秒。


PR

[PR]