寺.py

フリーランスでソフトウェア開発してます。適当にプログラミングとかスタートアップとかについて書き垂らします

Google App Engineで無料で趣味開発サービスを公開する(django + vuejs)

どうもーーーー


さて、2018年10月からフリーランスになり、はや3ヶ月経ちました。

学びの多い日々です。

仕事ではコーディング部分はそれなりに把握したので、
年末年始は今まであまり触れていなかったwebpackの設定やbabel, GCPなどについて勉強していました。

やはり何気なくコーディングしているその基礎にあるこうした技術に脱帽です。

ドラマシリコンバレーが好きなのですが、凄腕のハッカーが、「あいつは所詮コーダーだ」みたいな感じで馬鹿にしていたのが
なんとなくわかります。
コーディングするだけなら割と楽で、やはりその背景にあるインフラやその他の設定がめちゃくちゃめんどくさいですね。
もちろん、昔に比べれば今はだいぶ楽だとは思いますが。

もしプログラミング経験が浅い人がいたら、まずは既存のシステムの開発に携わることをおすすめしますよ。
システムを設計した人の知識に乗っかってとりあえずコーダーとしての経験が積めますからね。
ソースコードを読みまくりましょう。そして理解しましょう。
ただ使っている技術が古いところには行かないほうがいいかなと。
そうなるとスタートアップとかになってくるかと思いますが。


それと並行で自分で開発をするのが良いかなと思いました。
自分で開発する際は今まで目を向けていなかったところに目をむける必要があるので勉強になります。

もちろん自分で開発するときは仕事で使っているような技術を使えば良いと思います。
回数を経るごとに、新しい技術を取り入れていけばよいかなと。


まあそんなこんなで、私も個人サービスの開発をdjango, vuejsで行うため、一旦プロジェクトだけ作り、GCPにデプロイを試みました。

色々回り道したので、備忘録として残します。

ポイントとしては
・無料で使うにはGoogle App Engine(GAE)のstandard環境を利用する
・デプロイするためにapp.yamlファイルを書く
ということです。
それだけで無料でサイトを運営できます。


以下手順です。
気をつけるべきところのみ詳しく書きます。

1. GCPアカウント登録
2. プロジェクトの作成
3. Djangoとvuejsのプロジェクトを作成
4. Djangoプロジェクトのトップディレクトリにapp.yamlを作成。内容は以下のような感じで
runtimeはpython3.7しか選べません(2.7は無視)

runtime: python37
entrypoint: gunicorn -b :$PORT プロジェクト名.wsgi

beta_settings:
  cloud_sql_instances: ここにcloud sqlのコネクション名を記載(*1)

handlers:
  - url: /static
    static_dir: static/
  - url: /.*
    script: auto

余分な設定等あるかもしれませんがこれで動くはずです。

*1ですが、cloudsqlというgcpのdatabaseを使うので、そいつの情報です。
取得方法は、適当にcloudsql connection name 取得とかで探してください。

5. vuejsでプロジェクトを作成し、webpack等設定する。
6. production用にbuild
7. buildしたファイルをstaticフォルダーに集める。(python manage.py collectstaticを実行)
settings.pyは以下のように設定

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

8. gcloud app deployでデプロイする(認証などが求められるのでメッセージに従い認証を済ませる)
9. 本番用DBへのmigrate
本番環境では"GAE_INSTANCE"という環境変数が設定されています。
ですのでこのGAE_INSTANCEを設定してやることで本番環境のDBと接続したりできます。
migrateをしたい場合は

GAE_INSTANCE=1 python manage.py migrate

等やってあげると動くことでしょう。

あとはdeploy完了時に出てくるURLを踏むとデプロイ済みのサービスが立ち上がります。

楽しい個人開発ライフを。
プロジェクトは15個まで作れる感じですから。


あとがき
・年末年始は風邪でダウン
・最近着てるコート、探偵って言われる率ほぼ100%
・pycharmのshift連打のプロジェクト内検索がvimでもできることを知り喜ぶ(競合解消時などに役立つ)

:vimgrep 検索したい単語 検索したいパス正規表現可 
例
:vimgrep hoge ./fuga/**
:cw
fugaディレクトリ以下の全ファイルからhogeという単語を検索。
cwで一覧表示。だったはず。

・年末年始のテレビのしょうむなさに焦る(テレビ持ってないため久々に見た)
・macの裏にひびが入っていてショック
・みかんうめぇ
・最近入浴にハマっているので流行りにのっかりbarthを使ってみたが確かによく眠れた。
・しかしそのせいで寝坊してしまうというツイートはどうなのだろう。寝坊しているということはよく寝れていないからではないのか?
・二酸化炭素中毒では?という声もあったし高いので今後は買わない。
・とりあえずサイトの中身を作って整理したらgithubにコードでもあげようかと思う。
・昨日仕事始めたのに昼飯どこもやってなくて泣いた
・2012年ごろから体重ずっと52程度だったのに、10月から57まで増えた。嬉しすぎる。それもこれも全く運動をしないという努力のおかげか。