☆☆ 新着記事 ☆☆

2018年12月25日火曜日

これで動く (2/3) !! WebArena VPS(CentOS7)でFlaskを動かす

安さに目が眩んでNTT PC のWebArena VPSで、Flaskを動かしてみました。
CentOS 7 + Python 3.6 + Apache2.4 +mod_wsgi +  Flaskです。 オーソドックスな環境です。

今回は、

1.  mod_wsgiをインストールする。

2.  flaskをインストールする。

3. flask appを用意してアップロード。




1.  mod_wsgiをインストールする。


$ cd /usr/local/src (<- Python3.6 をインストールしたのと同じディレクトリが便利。mustではない。)
$ wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.6.tar.gz

(最新版は、こちらで確認:https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html


$ tar zxvf 4.5.6.tar.gz

(Apacheのextensionのapxsと、mod_wsgiをビルドするPythonのバージョンを指定する。)
(' / ' で)$ find -name apxs
  ./usr/bin/apxs

$ cd /usr/local/src/mod_wsgi-4.5.6

$ ./configure --with-apxs=/usr/bin/apxs --with-python=/usr/bin/python3
 config.status: creating Makefile
$ make && make install

Libraries have been installed in:
   /usr/lib64/httpd/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib64/httpd/modules/mod_wsgi.so

おっ! mod_wsgi.soが出来ました。
[root@ofcm9och mod_wsgi-4.6.5]cd /usr/lib64/httpd/modules/
[root@cnewgwb6 modules]# ls -l
-rwxr-xr-x  1 root root 962648 Dec 28 11:13 mod_wsgi.so
'755' になってますね。


2. flaskをインストールする。

==ここ、エラーが出たので、その対処です。 読み飛ばしてください。==
[root@ofcm9och /]# pip3.6 install flask
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

エラーが出た。 SSL関連らしい。

[root@ofcm9och /]# yum list installed |grep ssl
mod_ssl.x86_64                     1:2.4.6-88.el7.centos          @base
openssl.x86_64                     1:1.0.2k-16.el7                @base
openssl-libs.x86_64                1:1.0.2k-16.el7                @base

どうも、openssl-devel がインストールできていないようなので、再インスール。
[root@ofcm9och /]# yum install openssl-devel
で、
mod_ssl.x86_64                     1:2.4.6-88.el7.centos          @base
openssl.x86_64                     1:1.0.2k-16.el7                @base
openssl-devel.x86_64               1:1.0.2k-16.el7                @base
openssl-libs.x86_64                1:1.0.2k-16.el7                @base
が、入った。

おそらく次の、ncurses-devel  も、インストール出来ていなかったろうから(多分、スペースがなかったのかと思ってる)再インストール。

ツールを再インストールしたので、python3.6.5 ディレクトリで、再度 make / make install を再実行。

== 読み飛ばし部分の終了==

(最新版の確認)
[vpsuser_p@ofcm9och /]$ python3 -m pip install flask==
Collecting flask==
  Could not find a version that satisfies the requirement flask== (from versions: 0.1, 0.2, 0.3, 0.3.1, 0.4, 0.5, 0.5.1, 0.5.2, 0.6, 0.6.1, 0.7, 0.7.1, 0.7.2, 0.8, 0.8.1, 0.9, 0.10, 0.10.1, 0.11, 0.11.1, 0.12, 0.12.1, 0.12.2, 0.12.3, 0.12.4, 1.0, 1.0.1, 1.0.2)
No matching distribution found for flask==

(最新版のインストール)
[vpsuser_p@ofcm9och /]$ python3 -m pip install flask==1.0.2
Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0


3. flask appを用意してアップロード。

ドキュメント・ルート(var/www/html)に以下のflaskのappファイルをアップロード

ファイル名:app.py

# coding: utf-8
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Flask!"

if __name__ == "__main__":
    app.run(host="mossymob.tk", port=8080)
*mossymob.tkは、無料で1年間取得した、自分のドメインです。


・ firewallでポートを開ける。


[root@ofcm9och html]# firewall-cmd --add-port=8080/tcp --zone=public

(一応、今回限りの使用なので、--permanentはつけない、)
success

[root@mk1ouin8 ~]#  firewall-cmd --reload   (<- reloadしたら設定が消えちゃうね)
success
[root@ofcm9och html]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client http https
  ports: 8080/tcp   <= 追加されています。
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


*WebArenaなのでポータルのセキュリティー・グループでもポートを開ける。

[root@ofcm9och html]# python3 app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://mossymob.tk:8080/ (Press CTRL+C to quit)


 
 
とりあえず、Flask Appが
Browserに表示できました。!!


(追記)
”このページは表示できません。
Web アドレス http://mossymob.tk:8080 が正しいか
確かめてください。”

というエラー表示になった場合、app.pyファイルの権限を確認してみてください。

(表示できなかったパーミッション)
-rw-r--r-- 1 root root 210 Dec 28 11:54 app.py
(*Other Groupに実行権限がない。)

(表示できたパーミッション)
-rw-r-xr-x 1 root root 210 Dec 28 11:54 app.py
(*Other Groupに実行権限を付与した。)

0 件のコメント:

コメントを投稿