GMOペパポが運営するレンタルサーバのlolipopではCGIやPHPに加えてRubyやPythonも使えるので、実際にPythonを動かしてみました。
ちょっと気を付けないといけないところもあったのでご参考にしてください。
やりたいこと
pythonコード(pyファイル)をlolipopサーバ上に配置し、ブラウザから直接pyファイルを呼び出して、print文で生成された文字列を表示してみます。
使うツールはVSCode。サーバへのFTPはVSCodeの拡張機能であるSFTPを使います。
なお、本記事ではツールの使い方は割愛していますのでご容赦ください。
試行①
まずはコードを書きます。
lolipopで稼働しているpythonは3.7です(一部サーバは2.7も動くようですが3系使っておけば間違いないです)。パスは下記キャプチャの通りです。
そしてサーバにFTPしてブラウザからアクセスしてみると・・・
あれ???
500エラーになってしまいました。
試行②
pyファイルにアクセスできていないかもしれないので、lolipopのFTPツールでパーミッション(属性)確認してみます。
見てみると644になってます。
lolipopの公式だと700にするよう指定されていたので変更します。
この状態で再度アクセスしてみるも、再び500エラー(泣)
試行③
次に疑ったのはファイルの形式。
サクラエディタで確認すると、改行がCR+LFになってました。
lolipopのサーバはlinuxなので、LFにしておいた方が良さそうなので変換します。
サクラエディタで改行コードをLFにして保存。
変換できました。
変換したファイルをサーバにUPしてブラウザからアクセスしてみると。。。
お!表示された!
でも、文字が化けてますね(泣)
試行④
ファイルがUTF-8になっているのは、試行③のサクラエディタで確認済なので、ブラウザ側でUTF-8だと認識できていないっぽい。
そこで、print文に設定しているContent-Typeにcharsetを設定。
ブラウザで見てみると。。。
ちゃんと見れました!!やった!
まとめ
lolipopでpythonを扱うときに気を付けるのは以下になります。
・ファイルのパーミッションは700
・ファイルの形式はUTF-8で改行はLFにする
・出力する際のContent-Typeにはちゃんとcharset=utf-8を付ける
それにしても、VSCodeのSFTPでのサーバ転送だと、パーミッションや改行の変換ができないのは不便ですね。ffftpなどで自動変換されるのに慣れているとハマってしまいます。
なお、今回使ったソースは以下になります。
#!/usr/local/bin/python3.7
print("Content-Type: text/html; charset=utf-8\n")
print('hello!ハロー!')
次回はサイトの一部情報を動的にpythonで出すようにしてみたいなと思います!
コメント