ConoHa VPS(CentOS7)+Flask+Nginx+uWSGIでWEBアプリを作ってみる(1)


1. はじめに

WEBアプリ開発初心者の備忘録です。

まずは,VPS上でPython3.6+Flaskを動かして,Flaskの開発用サーバで公開してみます。
下記を参考にしました。

2. VPSについて

ConoHa VPSのプランは下記の通りです。

  • メモリ 1GB/CPU 2Core
  • SSD 50GB

サーバ構築後,セキュリティ関係の初期設定をしますがここでは省略します。(下記参照)

ConohaにVPSを設置して、SSHログイン、ポート番号変更、rootログイン禁止までを30分で!

ちなみに,sshのポート番号がデフォの22のときは結構総当たり攻撃がありましたが,
22から変更したらなくなりました。(当然か)

3. ライブラリのインストール

Python3.6, Nginx, uWSGIをインストールします。

$ sudo yum install -y nginx
$ sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
$ sudo yum install -y python36u python36u-libs python36u-devel python36u-pip
$ sudo yum groupinstall "Development Tools"
$ sudo yum install -y uwsgi

インストール後,必要であれば,/bin/以下にシンボリックリンク(Python3とか)を貼ります。

4. Python仮想環境の構築

venvで仮想環境を作ります。Flask関係のファイルはホームディレクトリ以下にappというディレクトリを作って,
まとめておくことにします。

$ cd
$ mkdir app
$ cd app
$ python3.6 -m venv env
$ source env/bin/activate
(env) $ pip3 install flask uwsgi
(env) $ deactivate

5. FlaskでHello World!

app以下にFlaskでHello World!するためのPythonコードを書きます。
コードのファイル名はapp.pyとします。

$ touch app.py
$ emacs app.py
app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello! shikao-yuzu page!"

if __name__ == "__main__":
    app.run(host="X.X.X.X" ,port=8080)

host="X.X.X.X"にはVPSのグローバルIPを入れます。

6. ポート開放

firewalldでTCPポート8080を開放します。

$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo firewall-cmd --reload

7. Flaskの開発用サーバ起動

Flask組み込みの開発用サーバを起動します。

http://X.X.X.X:8080
にアクセスして,"Hello! shikao-yuzu page!"と表示されたら成功です。

$ source env/bin/activate
(env) $ python3 app.py

なお,サーバは"Ctrl+C"で終了できます。

続く(かも)