さくらインターネット ライトプランに python3をインストール
カテゴリー: レンタルサーバーやcgi
2018-06-12
python3をインストール : さくらインターネット ライトプラン
さくらインターネットの
Ruby と Python は古すぎて使い物にならない
ローカルのcygwinでバージョンを見ると
virtualboxにいれているテスト用のfreebsd9でも Python 2.7.13 が返ってくる(pkg upgradeとうったが最新だよっていわれ、もう更新できない。)
FreeBSD9は tlsv1 なので
最新のものに更新していない古いバイナリを実行すると
さくらインターネットで使われている python 2.7.6はいつごろか追うと 2014Q3 ということがわかった。 2014Q4からは、2.7.8になっているので
4年以上も放置されているということになる
ということで、pythonを使いたい人はさくらインターネットの共有サーバーはやめておいたほうがいいでしょう。
OSのアップグレード待つか、新規契約して新しいサーバーに移るしかないですね。
注意点(リスク)
さくらインターネットは 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ディレクトリの確定
2. あとは /home/ユーザー名/local/python3 にインストール
cgiの呼び出しを /home/ユーザー名/local/python3/bin/python3 に変更し、動作するか確認する
Virtualbox (FreeBSD 9)メモ
pip3 コマンドのインストール
django
No module named '_sqlite3'
# django: pytz が必要
# https://www.djangoproject.com/download/
# https://pypi.python.org/pypi/pytz#downloads
固定バージョンで使う場合
pythonに常時組み込む場合
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
確認
Djangoのインストール
.cgiのパスを変更して動作することを確認
VirtualboxのFreeBSDのユーザー環境へのインストールで動作確認完了。
同様の手順でさくらインターネット「ライトプラン」にてpython3.6のbuildと動作の確認をした。
少し大きめなのでサーバー側で用意してもらったほうがいいので、使いたい場合は、python3.6への対応をサポートへ要望でだしたほうがいいでしょう。
上記の面倒な作業が下記のインストーラーワンクリックで完了♪
インストーラー (更新機能はついていません)
install-python3.cgi
ダウンロード
使用方法:
さくらインターネットの
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
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("パス")
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
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
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
Installing collected packages: pytz, Django
.cgiのパスを変更して動作することを確認
#!/home/ユーザー/local/python3/bin/python3
VirtualboxのFreeBSDのユーザー環境へのインストールで動作確認完了。
同様の手順でさくらインターネット「ライトプラン」にてpython3.6のbuildと動作の確認をした。
du -Hh -s ./
170M ./
python3.6は 170MB消費するようである。170M ./
少し大きめなのでサーバー側で用意してもらったほうがいいので、使いたい場合は、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秒。
ライトプランで
django2.0の初期デモページが動作することを確認しました(別記事参照)
レスポンス時間 0.5-1.3秒。