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 flaskpip 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.03. 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年間取得した、自分のドメインです。from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Flask!"
if __name__ == "__main__":
app.run(host="mossymob.tk", port=8080)
・ firewallでポートを開ける。
[root@ofcm9och html]# firewall-cmd --add-port=8080/tcp --zone=public
(一応、今回限りの使用なので、--permanentはつけない、)
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 件のコメント:
コメントを投稿