Warning
ルートディレクトリであるgohango配下で作業することを前提としています
Note
説明内の@/はルートディレクトリを意味します。
gohango/
├── app/
│ ├── __init__.py # Flaskアプリケーションの初期化とBlueprint登録
│ ├── db.py # データベース接続関連の処理はここ
│ │
│ ├── services/ # APIはここに設置
│ │ ├── __init__.py # 空ファイル
│ │ └── users.py # テーブルごとにエンドポイントを作成
│ │
│ ├── sample/ # サンプル機能のモジュール
│ │ ├── __init__.py # sampleブループリントの定義
│ │ └── routes.py # sample機能のルーティング設定
│ │
│ ├── templates/ # HTMLはここ
│ │ ├── components/ # 使いまわす要素はここで管理
│ │ │ └── header.html
│ │ ├── layout.html # 全体レイアウトはこのファイルで定義
│ │ └── sample.html # 各ページを作成していく
│ │
│ └── static/ # 静的ファイルはここ
│ ├── css/ # HTMLファイル名.cssとかかな
│ │ └── index.css
│ └── js/ # HTMLファイル名.jsとかかな
│ └── sample.js
│
├── docker/ # Docker関連
│ ├── compose.yml # Docker Composeの設定ファイル
│ └── migration/ # DBのマイグレーション
│ └── changelogs/ # マイグレーション。編集不可。必要に応じて追加
│ └── 01_create_tables.sql
├── .env # 環境変数
├── run.py # Flaskアプリを起動するスクリプト
├── readme.md # このファイル
├── pyproject.toml # パッケージリスト
└── .gitignore # .envなどのコミットしたくないフォルダ・ファイルを設定
- UVのサイトにアクセスして
uvをインストール。(uv -Vでパスが通ってることを確認) .envファイルを作成(以下はサンプル)
DB_HOST=localhost
DB_PORT=65435
DB_NAME=gohango
DB_USER=root
DB_PASS=password
- pythonバージョンを確認
uv python list
python3.10.12が無かったら...
uv python install 3.10.12
- ポスグレサーバを作成
cd docker
docker compose up -d
cd ../
- パッケージを同期する
uv sync
- Dockerを立ち上げてポスグレサーバを起動&DB構造を同期
cd docker
docker compose up -d
docker compose run liquibase
cd ../
uv run run.py
uv add パッケージ名
@/app/__init__.pyにBluePrint登録(ここにファイルがあるから読み込んでね!!ってやつ)を行う。
from .フォルダ名.ファイル名 import BP名
app.register_blueprint(BP名, url_prefix='/ルーティング')
-
@/app/フォルダ名フォルダを作成。他の(sampleフォルダ)とかと同じ構成にする。(__init__.py,routes.pyとかもイイ感じに作成) -
作成した
routes.pyに下記を追加
@BP名.route("/") # ルーティング/の後にどのようにルーティングするか
def 分かりやすい関数名():
return render_template("templateフォルダ内のhtmlファイル", 渡す変数)
@/app/templateフォルダ内にhtmlファイルを作成。include,macroを多用しよう。
# まずはプロジェクト全体をzipで固る
zip -r gohango.zip . -x ".venv/*" "*.pyc" "__pycache__/*" ".git/*" "readme.pdf" "gohango.zip"
# zipファイルをサーバーに転送
scp gohango.zip user@xxx.xxx.xxx.xxx:~/
# ローカルのzipはもういらないから消す
rm gohango.zip
# SSHでログイン
ssh user@xxx.xxx.xxx.xxx
# public_htmlがなかったら作る
mkdir -p public_html
# zipを解凍して、中身をpublic_htmlに移動
unzip gohango.zip -d gohango_app
mv gohango_app/* public_html/
rm -r gohango_app # 空になったフォルダは削除
rm gohango.zip # zipファイルも削除
# 作業ディレクトリに移動
cd public_html
# 本番用の.envファイルにリネーム
mv .env.production .env
# .sql を実行
psql -U user -d userdb -f docker/migration/changelogs/各ファイル.sql
# 古いプロセスが残ってたら止める
fuser -k ポート番号/tcp
# nohupでアプリをバックグラウンド起動
nohup python3 run.py &
# nohup.outの中身をリアルタイムで監視
tail -f nohup.out
# プロセスを一つ一つ消す
ps aux | grep run.py # 動いてるプロセスを確認
kill -p プロセスⅠⅮ # 問答無用で落とすuv venv --python 3.10 venv
source ./venv/Scripts/activate
Warning
Linuxはまた別です。
activate の前には半角スペースです
以下でシャットダウン
deactivate
なんかpip install でインストールしたときは下記コマンドでチーム共有 入れる前にチームに連絡
pip freeze > requirements.txt
開発始める前に下記コマンドで同期
pip install -r requirements.txt