GCEでApacheにWSGI経由のflaskを建てるまで(前半)

WSGI経由とか言葉が合ってるのかよくわからないレベルから開始です。知識的には、pythonやflaskは大体わかるけどWSGIはさっぱりで、linux系はとても弱いです。つまりWindowsでpython触ってきたけど、インフラもlinuxもあまり触ってない人。

GCPは画面構成がよく変わるので、この記事もいつまで有効かわかりませんが、一応メモ。2020/4/11時点。

GCEインスタンスを作成

リージョンは価格に影響する。スピードはあまり気にしないので、一番安いus-central1。

マシンタイプは、スピードを気にしないので、一番遅いfi-micro。1 v-cpu、614MBメモリ。HTTPサーバーくらいなら十分ですね。(たぶん)

ブートディスクで、OSを決める。Debian GNU/Linux 9 (stretch)から、CentOS 7へ。8も選べるけど、なんとなく情報が少ない気がするので7。

HTTPトラフィックを許可にチェック。

・・・で作成。

いろいろインストール

GCEインスタンスができたところから、「SSH」のプルダウンにある「ブラウザウィンドウで開く」。

adminの初期パスワードが設定されてなくてインストール中に聞かれることがあるから設定しておく。

sudo passwd root

インストール開始。yum自体のバージョンアップ。

yum check-update
sudo yum update -y

Apacheのインストール、バージョン確認、起動時に自動的に開始する設定、そして今回は手動で起動。ちなみにバージョンは「Server version: Apache/2.4.6 (CentOS)」でした。

sudo yum -y install httpd
httpd -version
sudo systemctl enable httpd.service
sudo systemctl start httpd.service

GCEの管理画面の外部IPのリンクをクリックすると、別窓でそのIPアドレスが開いて、「Apache HTTP Server Test Page powered by CentOS」が表示された。きちんとHTTPサーバーが立ち上がってるな、よしよし。

あとでWSGIの構築で使うものも入れておく。httpd-devel、gcc

sudo yum -y install httpd-devel
sudo yum -y install gcc

次はPython3のインストール。ちなみに入れる前は、python -V でPython 2.7.5、python3 -V でそんなの知らんという状態でした。まずyumのインストール可能リストをアップデート。

sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm

python3.7あるかなーとか調べる。

yum search python37
yum search python36

python3.7はなくて、python3.6ならあったから、3.6を入れることにした。3.7が出てだいぶ経ってるけどなぁ・・・。

sudo yum install -y python36u python36u-libs python36u-devel python36u-pip
python -V

入ったバージョンは「Python 3.6.8」でした。

WSGIがgithubのリポジトリから入れるため、gitをインストールしてcloneするところまで

sudo yum -y install git
git clone https://github.com/GrahamDumpleton/mod_wsgi​

wsgiをインストール。この中でhttpd-devel、gccを使ってる。ちなみにpip3 install のmod-wsgiは、とあるサイトにやるべしと書いてあったけど、私の環境では既にあると言われた。

cd mod_wsgi
sudo python3 setup.py install
pip3 install mod-wsgi

wsgiの環境ができたところで、wsgi経由のhttpサーバーを立ち上げるのだけれど、その確認のためにGCEのファイアウォールの8000番を開ける。GCPのメニューからVPCネットワーク>ファイアウォール ルール>ファイアウォール ルールを作成。IP範囲を0.0.0.0/0で、tcp:80を開ける設定。これをやった上で、

mod_wsgi-express start-server

これで何かが立ち上がってますよ的な画面になり、ブラウザから:8000でアクセスすると、蛇のお酒漬けみたいな画像と共に「My web site runs on Malt Whiskey」が出ればok。

とりあえずファイアーウォールは無効にしておこう。ポート8000の蛇のお酒のページは見れないけど、ポート80のApacheは見られる状態。

疲れた。ひとまず設定はここまでで終了。

GCEが立ち上がってるとお金がかかり続けるから、作業終了と共にGCPの画面で停止することを忘れずに。。

いいなと思ったら応援しよう!