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の画面で停止することを忘れずに。。