LoginSignup
5
3

More than 5 years have passed since last update.

ChromebookだけどGoogleCloudPlatformにDjango入れて遊ぶ

Last updated at Posted at 2018-06-22

主に思い出を残すためのメモ。

サーバ準備

GCP(GoogleCloudPlatform)の無料枠を利用する。
基本的にはGoogleアカウントがあればOKだが、無料枠のみの利用でもクレジットカードの登録が必要なので少し心理的にハードルが高い。

  1. GoogleCloudを開く。
  2. 「無料トライアル」で使い始める。名前とかクレジットカードとかの登録とかする。
    01_GCPトップ - Edited.png
  3. GCMのコンソールが開くので、[≡]-[コンピューティング]-[Computer Engine]-[VMインスタンス]からインスタンスを作成。
    1. 名前は適当
    2. リージョンはus(無料のため)
    3. マシンタイプはmicro(無料のため)
    4. ブートディスクはCentOS7(yumりたいから)
    5. ディスクは30GBにしておく
      02_インスタンスを作成.png
  4. 同画面の下の方、[管理、ディスク、ネットワーク、SSH 認証鍵]-[ネットワーキング]-[ネットワークインタフェース]-[外部IP]からIPアドレスを作成する(静的IPにする)
    静的IPアドレスは扱いによってお金が掛かる場合があるので注意。
    インスタンスを消したら静的IPアドレスも開放してください。
    1. このIPはあとで使うから覚えておく。
      03_IPアドレスを作成.png

サーバへのアクセス

前項で作成した[VMインスタンス]の画面から「SSH▼」のところを押すとSSH接続できる。

04_SSH接続.png

各種インストール

参考:[Qiita] CentOS7でとりあえずDjangoを動かしてみたので、その手順を残す

ここからはコマンドベースで。
とりあえず適当にワークディレクトリを作る。

mkdir dev
cd dev

Pythonのバージョン確認してみたり。

python --version

以降、GCEのVMインスタンスだとsudo付けないと権限エラーが起きるコマンドが多いので注意。

Python3、pipのインストール

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

バージョン確認。

python3.6 --version

インストール前にyumできるpython調べる場合は

sudo yum list|grep python3

どうしても最新のPythonの状況とか気になる人はここを見る。

Djangoのインストール

sudo pip3.6 install Django

Djangoのプロジェクト作成

今回はプロジェクト名「apply」でやってます。

一応Django用にもう一個掘っておく。

mkdir django
cd django

sudo django-admin startproject apply

以下のフォルダ、ファイルが作成される。

apply
├ apply
│ ├ __init__.py
│ ├ __pycache__
│ ├ settings.py
│ ├ urls.py
│ └ wsgi.py
└ manage.py

Webサーバ起動

プロジェクトのルートディレクトリに移動。

cd apply

sudo python3.6 manage.py runserver

アクセス確認(内部から)

別の窓からサーバにSSH接続して以下コマンドを叩く。

curl 127.0.0.1:8000

ずらずらとHTMLが出てきたら成功。一応タイトルだけ見ておく。

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Django: the Web framework for perfectionists with deadlines.</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="/static/admin/css/fonts.css">
        <style type="text/css">
          body, main {
            margin: 0 auto;
          }

あと起動したほうの窓にアクセスログが表示されているはず。200ならOK。

[22/Jun/2018 02:31:47] "GET / HTTP/1.1" 200 16348

アクセス確認(外部から)

とりあえず動いているのを止める。

Quit the server with CONTROL-C.ということなのでCtrl+Cで止める。

ファイアウォールへの穴あけ

GCMコンソールを開く。

[≡]-[ネットワーキング]-[VPCネットワーク]-[ファイアウォール ルール]でtcp:8000ポートを開けておく(Djangoでバインドするとこ)

Djangoの許可設定

setting.pyを開いて以下を変更する。

ALLOWED_HOSTS = []

ALLOWED_HOSTS = ['サーバの静的IP']

URLバインドを外して起動

以下コマンドで起動しなおす。

sudo python3.6 manage.py runserver 0.0.0.0:8000

ブラウザでアクセス

ローカル環境から適当なブラウザで以下のURLを開く。

http://サーバの静的IP:8000

なんかDjangoのスタートページみたいのが開いたら成功。

Djangoスタートページ - Edited.png

遊び終わったら片付けましょう

とりあえず試すために色々とノーガードなので、終わったらDjango落としてインスタンスも止めてしまったほうが安全です。
妙なアタックを食らったりするとお金が掛かる可能性があるのでご注意ください。

おまけ 課金データを出力させておく

Djangoでページ表示するのには関係ないですが、GCPの無料枠で本当にお金かかってないか不安になると思います。
以下手順で課金データを毎日報告してもらえるので、2〜3日確認して安心しましょう。

  1. GCPコンソールの[≡]-[Storage]でバケットを作成する。
    1. 名前は適当
    2. デフォルトのストレージクラスはRegional(無料のため)
    3. 場所はus(無料のため)
      05_バケット作成.png
  2. GCPコンソールの[≡]-[お支払い]-[課金データのエクスポート]-[ファイルのエクスポート]から設定する。
    1. バケット名はさっき作ったやつ
    2. 他は適当
      06_課金データをエクスポート.png
  3. 毎日バケットに課金データがエクスポートされるので、3日くらい待って課金されていないことを確認する。
    エクスポートされるのは数日前までの情報らしいので翌日に見ても何も入っていません。
    07_エクスポートされた課金データ1.png
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3