pythonでWebアプリケーションの勉強をしたいけど、いきなりVPSサーバーを借りるほどじゃない。出来るだけ費用を抑えるために、まずは共有レンタルサーバーでやりたいと思い、ロリポップ!でFlaskを導入できるか試してみました。
SSHを使えるのは、スタンダードプラン、ハイスピードプラン、エンタープライズプランです。36か月契約ならスタンダードプランで440円(税込)、ハイスピードプランで550円(税込)となり、かなり魅力的な価格です。以前は、ロリポップ!は遅いと言われていましたが、10日間の無料体験をしたところ、今契約しているエックスサーバーと体感的な速さは変わらず、どちらも速くストレスなくページが表示されました。しかも、無料体験中にプラン変更もできるので、すべてのプランを試せます。
また、ハイスピードプラン以上のプランを1契約すると、ドメインが2つも無料で使えるので、サーバーを移行するか迷っています。エックスサーバーには全く不満はないのですが、私のような個人ブログではオーバースペックな感じもするので、ロリポップ!の方がいいのかなと心が揺れ動いています。
もくじ
SSHでサーバーにログインする
事前に【サーバーの管理・設定】からSSHを有効にして、【サーバー】【アカウント】【接続ポート】【SSHパスワード】を確認したら、TeraTermなどのターミナルソフトやPowerShellから、サーバーにログインします。
PowerShellからだと、以下のように入力し、その後、パスワードを入力するとログイン出来ますが、パスワードがすごく長いので面倒です。
ssh -p 接続ポート アカウント@サーバー
詳しい説明はこちら
SSHは、スタンダードプラン、ハイスピードプラン、エンタープライズプランで利用できます。
pipを使えるようにする
python3系のバージョンを確認
python3 --version
Python 3.7.3でした。
pipの導入
最初は、pipを使えないので、まずはpipを使えるようにする必要があります。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user
PATHを通す
これで、pipが使えるようになりますが、まだPATHが通っていません。PATHを通すのにカレントディレクトリを確認しておきます。
pwd
これで、/home/users/番号/ユーザー名と出力されるはずです。
次に、PATHを通すのに、.bash_profileを作成します。
vi .bash_profile
source .bash_profile
確認
pip3 list
Package Version
---------------------- -----------
mysql-connector-python 8.0.17
mysqlclient 1.4.2.post1
pip 20.2.4
protobuf 3.9.0
PyMySQL 0.9.3
setuptools 40.8.0
six 1.12.0
wheel 0.35.1
appdirs==1.4.4
asgiref==3.2.10
beautifulsoup4==4.9.3
boto==2.49.0
bottle==0.12.18
branca==0.4.1
certifi==2020.6.20
chardet==3.0.4
click==7.1.2
cycler==0.10.0
distlib==0.3.1
Django==3.1.2
docutils==0.16
dominate==2.6.0
filelock==3.0.12
Flask==1.1.2
Flask-Bootstrap4==4.0.2
folium==0.11.0
idna==2.10
importlib-metadata==2.0.0
itsdangerous==1.1.0
japanmap==0.0.22
Jinja2==2.11.2
joblib==0.17.0
kiwisolver==1.2.0
lxml==4.6.1
MarkupSafe==1.1.1
matplotlib==3.3.2
mysql-connector-python==8.0.17
mysqlclient==1.4.2.post1
nose==1.3.7
numpy==1.19.2
oauthlib==3.1.0
opencv-python==4.4.0.44
packaging==20.4
pandas==1.1.3
pbr==5.5.1
Pillow==7.2.0
pip-review==1.1.0
plotly==4.11.0
protobuf==3.9.0
pyasn1==0.4.8
PyMySQL==0.9.3
pyparsing==2.4.7
PySocks==1.7.1
python-dateutil==2.8.1
pytz==2020.1
PyYAML==5.3.1
requests==2.24.0
requests-oauthlib==1.3.0
retrying==1.3.3
scikit-learn==0.23.2
scipy==1.5.3
simplejson==3.17.2
six==1.12.0
sklearn==0.0
soupsieve==2.0.1
sqlparse==0.4.1
threadpoolctl==2.1.0
tweepy==3.9.0
urllib3==1.25.11
virtualenv==20.0.35
visitor==0.1.3
Werkzeug==1.0.1
xlrd==1.2.0
zipp==3.3.1
Flaskの環境構築
Flaskをインストール
pip3 install flask
ソースコードを配置
ルートフォルダにソースコードをおいて、きちんと動くかテストしていきます。階層はこんな感じです。
/
└─flask-test
│ .htaccess
│ helloFlask.py
│ index.cgi
│
└─templates
render.html
flask-testフォルダの中
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /flask-test/index.cgi/$1 [QSA,L]
パーミッションは、604。フォルダ名がflask-testでない場合は、/flask-test/index.cgiの部分を変更してください。
from flask import Flask , render_template
app = Flask(__name__)
@app.route('/')
def hello():
return '<h1>Hello World</h1>'
@app.route('/render')
def index():
return render_template('render.html')
if __name__ == '__main__':
app.run(debug=True)
パーミッションは、600
#!/usr/local/bin/python3
from wsgiref.handlers import CGIHandler
from helloFlask import app
CGIHandler().run(app)
パーミッションは、700。.pyファイル名をhelloFlask.pyから変えている場合は、helloFlaskの部分を変更してください。
templatesフォルダの中
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>render template</h1>
</body>
</html>
パーミッションは、604
ファイルのパーミッション
出典:ロリポップ!
CGI設置についての注意事項
万が一、CGIを暴走させるなどしてサーバーをダウン及び負荷をかけるような場合は、以降、一切CGIを利用できなくなります。利用前にローカル環境で十分にテストしましょう。
詳しくは、こちら。
動作テスト
/flask-test
/flask-test/render
問題なく動作しています。
これなら、ロリポップ!に移行しても大丈夫そうですね。ここまでかなり試行錯誤しながらだったので、ものすごく時間がかかりましたが、10日間も無料体験できたので、スタンダードプラン、ハイスピードプランの2つとも試せました。
pwdで確認した番号とユーザー名を入力してください。