備忘録: 2018/8/25
標記の通り、さくらインターネットにPython3をインストールする事柄を記載します。
使用OSは、WIN10とMac OSを併用して使っていました。
※個々の環境により異なる場合が想定されますので、手順は絶対という事はありません。ご了承下さい。
まず、結果から述べますと、/home/your_domain/WWW % Python3 -Vと書いて下記の通り表示されました。
Python 3.6.2
もし、/home/your_domain/WWW % Python -V と書きますと下記の通り表示されます。
Python 2.7.6
下記、リンクは、レンタルサーバーのPython比較ですが、さくらインターネットには、Python2までしかインストールされていません。
http://engineer-milione.com/create/python.html
他の、レンタルサーバーでは、Python3.4.xがインストールされていますが、Python3,5.x以上とPython3.4.xではインストールされているモジュールに差があるそうです。見つけたら記録します。
という訳で、Python.3.6.2をインストールすることになったのですが、現在では、Python3.7.xも用意されています。
さて、ここで、上述の % なるものですが、こらは、SSH Terminalという物で、UNIX系のコマンドが使えるものです。
SSHを使えるcygwinでは、エラーが出て、接続できませんでした。
Macでも付属のTerminalがあるのですが、こちらでもエラーが出て接続できません。
前は、接続出来たのですが、いつの間にか接続出来なくなりました。コンピューターのジレンマですね。
そこで、探したのが、WinでもMacでも使用可能な、「poderosa terminal」なるものを使用しましたら、簡単に接続できました。
検索エンジンで探すとすぐ出て来ます。
では、sshでさくらインターネットにログインした前提で記載します。
参考サイトは、下記の通りです。
https://teratail.com/questions/25381
このサイト以外も参考にしたはずなのですが、覚えておりません。
sshでログインしますと、/home/your_domain/に接続されます。
/home/your_domain % mkdir local
ここでなぜか envを作っておりません。他のサイトを参考にしたと思います。
/home/your_domain % cd local
/home/your_domain % wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz --no-check-certificate/home/your_domain /home/your_domain% tar -xjf Python-3.6.2.tar.xz
/home/your_domain % cd Python-3.6.2
/home/your_domein/Python-3.6.2 % ./configure --prefix=$HOME/local/python/
/home/your_domein/Python-3.6.2 % make
/home/your_domein/Python-3.6.2 % make install
各コマンドでリストが沢山表示されます。私の場合は、各々、30秒程度で済みました。
次に、「.cshrc」なるファイルに文を追加しなければなりません。
「.cshrc」は、WWWフォルダ下にあったので、これに下記の文を追記する必要があります。
setenv PYTHONPATH $HOME/local/python/lib/python3.6/site-packages
setenv LD_LIBRARY_PATH $HOME/local/python/libset path = ($path $HOME/local/python/bin)
この「.cshrc」は、ssh terminalで見えなかったのでFFFTPを用いて、ローカルで記載して、アップロードすることにしました。
「.cshrc」は、terapadというテキストエディターを用いました。「.cshrc.txt」として、編集し、アップロードし、レンタルサーバー側でFFFTP
で、「.cshrc」削除、「.cshrc.txt」を名前変更し、.txtを消しました。
不思議なことに、Macでは、どのフォルダでもssh terminalで、Python3 -Vと記載すれば、Python 3.6.2と帰って来ますが、Win10では、
「Python3: Command not found.」と出て来るのです。上手く出て来る時もあります。不思議です。
Python3で認識すれば、print文でhelloが出て来ます。Python3のprinto文はprint('hello')です。
/home/your_domain % Python3
Python 3.6.2 (default, Aug 18 2018, 18:29:25)
[GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9
Type "help", "copyright", "credits" or "license" for more information.
>>> print('hello')
hello
コマンドラインで成功しましたので、OKです。
気がかりは、Win10でPython3コマンドが認識する事もあれば、ない事もあるので厄介です。
解決したら、記載します。
それでは、WEBにHelloを表示する方法について記載します。
/home/yourdomain/www %mkdir cgi
FFFTPでこのcgiフォルダの属性を「755」にします。環境によっては、「705」が良いかもしれません。
ここで、WEBにHelloを表示するためのファイル設定をします。
まず、「.htaccess」ファイルの作成と、保存時の文字コードと改行コードの設定です。
上述と同じ様に、ローカルで、terapadなどのテキストエディタを下記の通り記載します。
Options -Indexes
AddHandler cgi-script cgi
最後の改行でリターンを必ず行います。
保存ファイルの文字コードを「EUC」、改行コードを「LF」にて保存し、cgiフォルダ内にアップロードします。
名前を変更で.txtを消します。
次に、属性は、「755」です。あるいは、「705」
Pythonなどの外部制御文は、このcgiを用いなければなりません。
参考サイト
khatenablog.com/entry/2017/01/12/010504ishibeworld.
何回やっても駄目なケースを知る方法があります。例えば、下記のエラーです。
-----------------------------------------------------
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at support@sakura.ad.jp to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
------------------------------------------------------
それは、ログを見る事です。さくらインターネットのスタンダード版であれば、ログを見る事が出来ます。
他のレンタルサーバーなどで試しましたが、ログをダウンロードしてから見るなど面倒です。
さくらインターネットのコントロールパネル→アクセスログの設定→エラーログをクリックします。
error 500など、様々なerrorを見ました。
さくらのログなら、更新ボタンを押せばすぐ返って来て楽です。
.htaccessの間違いなのか、これから、記載する。hello.cgiの間違いなのか分かります。
これらの事をさくらインターネットに問い合わせても無駄です。
一切、まともな回答は期待できません。
上記のサイトのHelloを記載してアップロードしましよう。
------------------------
#!/usr/local/bin/python
print('Content-type: text/html; charset=UTF-8')
print("\r\n\r\n")
print("Hello world++++++++++++++++++")
------------------------
記載した、hello.pyをcgiにアップロードします。
文字コードと改行の指定は、特に指定していません。
そして、ssh terminalで、python3 hello.pyと下記、Enterします。
-----------------------
/home/yourdomain/www/cgi % python3 hello.py
Content-type: text/html; charset=UTF-8
hello world.------------------------
------------------------
これで成功しますと、正常にPython3が動いたという事です。
そして、hello.pyをhello.cgiに名前を変更します属性を「755」とします。
結果
--------------------------------------
--------------------------------------
となり、成功しました。
このブログを書いている最中に、tera termなるssh terminal ソフトをインストールしたところ、win10でも常にsshログイン出来る様になりました。