Posted at

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"で終了できます。

続く(かも)