そんな悩みを解決するためにエックスサーバーでPythonは使えるのか?っていうことをこの記事では書いていきたいと思います。
- エックスサーバーで使えるPythonの確認
- エックスサーバーでPythonを使って動かしてみる
エックスサーバーでPythonを使うことができるのか気になる人は参考にしてみてください。
ちなみにですが、Pythonを普通に使うならレンタルサーバーであるエックスサーバーではなく、同じ会社が運営しているXserverVPSというVPSを使うのがおすすめです。
エックスサーバーにPythonは入っている
エックスサーバーで使えるプログラミング言語を調べてみると、一応Pythonは使うことができる。
バージョンが3つ使えるけど、それぞれのコマンドパスはこう。
ただ実際に使えるかどうかの実感が欲しいので、SSH接続してPythonを実行できるか確かめてみたい。
SSH接続してPythonが使えるか確かめる
エックスサーバーの中に入ってPythonが使えるか確認したいので、SSH設定から鍵を入手しよう。その鍵を使ってSSH接続時に認証を突破します。
確認画面へ進んで生成すると秘密鍵がダウンロードされるので、それを使ってエックスサーバーにSSH接続する。SSH接続したら該当のコマンドパスがある部分を見てみると・・・
python --versionとすると2.75が表示される。
うーんPython2系じゃなくて3使いたいですよね。python3なら3.6.8と出てくる。
2系も3系も使えますね。Pythonが入っているっていうことはPythonのファイルを実行するなんてことはできるはずだからやってみよう。
Pythonのファイルを実行する
適当にPythonファイルを置いてそれを実行してみよう。使うファイルはこんな適当なやつでいいでしょう。ファイルマネージャーから適当に置きます。
これを実行してみると、普通に実行できますね。
まあ普通にPythonを使おうと思えばエックスサーバーでも使える。ただ[python]って打つと2系が使われます。シンボリックリンク見てみると、まあそうなっている。
python3とかpython3.6とか打てば3系のバージョンでPythonを実行できるから、3系で実行したかったらそれらのコマンドを打ってやればOK。
試しにPython3だとエラーが出るコードを実行してみる。(3だとprint関数は()が必要)
これを実行してみるとちゃんとエラーが出てくれますね。
Python3をエックスサーバーで使いたい時にはpython3コマンドを使うと良さそうです。
CronでPythonの実行もできるはず
エックスサーバーにはCronが備わっているので、決まったタイミングで定期的にpythonプログラムを実行したい!っていう時にはcron設定から設定してやるといいです。
コマンドでPythonファイルを実行するコマンドを書けば、指定した時刻にそのコードが動いてくれるはず。コマンドパスを見てみると、pythonじゃなくてもPerlやRubyも一応使える。
pip等のモジュールは使えない
エックスサーバーには管理者権限がないので既に入っているPythonにpipなどのモジュールを追加することはできません。
だからpipを扱うアプリケーションなんかの場合だと自分で自由に扱えるPythonを別でインストールしたりっていうことが必要になったりする。
- Pythonの機能だけならエックスサーバーに入っているPython使えばいい
- 外部モジュールを使う際は管理者権限がないので、自前でPythonをインストールしたりモジュール単体でインストールして使ったりしないといけない
Pythonのフレームワークで作るWebアプリケーションなんかはモジュール使われまくるだろうから、使える環境をエックスサーバーの中で自分で作らないといけないね。
単純にPythonだけで使えるコードならそういう面倒なことをしなくても実行できる。minicondaを入れてPythonを実行するっていうことを以下の記事でやっているから気になったら確認してみてください。
Pythonの仮想環境を作ってPythonを実行する
デフォルトで入っているPython以外のバージョンを使いたかったら、自分でpythonの環境を作りそこにPythonを入れることによって使うことが一応できる。
minicondaやanacondaを入れるとpythonもその中に入っているから、そこで新しいバージョンのpythonを使うことが可能。
以下の記事でFlaskアプリケーションを動かす際にminicondaを入れてっていうことをやっているから、良かったら見てみるといいかもしれない。
CGIでPythonアプリケーションを作る
フレームワークを使ってPythonのアプリケーションを作る場合、エックスサーバーでそれが動く環境を作らないといけない。ただPythonだけでも簡単なものならできそうだなーと思ったのでCGIを使ってちょっとやると、動くものは作れる。
CGIはこんな感じのやつ。
CGIとは、Webサーバが、Webブラウザなどからの要求に応じてプログラムを実行する仕組みの一つ。Web上で最も初期から用いられている動的なプログラム起動のための技術仕様で、多くのWebサーバソフトウェアが対応している。
入力したものを表示しているだけだけど、使ったファイルはhtmlファイルとpythonのファイル。
#form.html
<html>
<head>
<meta charset=utf-8>
<title>CGITEST</title>
<head>
<body>
<form action=index.py method=post style="text-align:center;">
<input type=text name=text>
<input type=submit name=submit>
</form>
</body>
</html>
#index.py
#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
import cgi
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
print('Content-Type: text/html; charset=UTF-8\n')
html_body = """
<!DOCTYPE html>
<html>
<head>
</haed>
<body style="text-align:center;">
<h1>"%s"</h1>
</body>
</html>
"""
form = cgi.FieldStorage()
text = form.getvalue('text', '')
print(html_body % (text))
コードは以下の記事を参考にやりました。
.htaccessには以下のコードを書いてうまいこと動くようにします。
AddHandler cgi-script .py
form.htmlにアクセスして入力するとコードが動いて入力した文言を表示してくれるっていう感じ。
ただちゃんとアプリケーション作る場合はやっぱりフレームワーク使った方が良いですよね。その場合はエックスサーバー内でアプリケーションが動く環境を作りましょう。
エックスサーバーでPythonを使うまとめ
いくつかエックスサーバーでPythonを使うっていうことをやってきたけど、Pythonのコードを書いて動かすことができました。
ただレンタルサーバーにはroot権限がないから自分の好きな環境を簡単に作ることはできません。それにレンタルサーバーは共用サーバーなので、サーバー起動して常時動かしておくっていうこともおすすめしません。
その点を踏まえて使うのなら良いと思います。ちなみにエックスサーバーには10日間の無料期間があります。
root権限が欲しいならXserverVPSを使おう
エックスサーバーの場合root権限がないので、自分で自由に色々インストールすることができません。Pythonを使ったプログラム関係のことをしたいのであれば、XserverVPSをおすすめします。