Hero Image
Djangoの開発・本番環境構築

0. 初めに Dockerを利用しPython、Django、PostgreSQL、Gunicorn、Nginxの開発・本番環境の構築します。 Dockerとはコンテナ型の仮想環境を作成・配布・実行できるプラットフォームとのことです。Dockerを使えばWebアプリケーションだけでなくサーバーの設定などのインフラもまとめて管理できて、かつバージョンやOSの差を気にすること無く環境の構築ができるというメリットがあります。 Pythonの仮想環境としばしば比較されることがありますが、Pythonの仮想環境はあくまでPythonの依存関係のみをカプセル化し、DockerはOS全体をカプセル化するという違いがあります。 ※参考サイト1 0-1. 開発環境 OS : Ubuntu 22.04.1 LTS on WSL2 Docker : 20.10.22 Docker Compose : v2.14.1 0-2. VPS環境 WebARENA Indigo : メモリ 4G, ストレージ:SSD 80GB, CPU:2コア OS:Ubuntu 22.04 Docker : 20.10.22 Docker Compose : v2.14.1 VPS-IP : 160.248.11.107 Container : Debian GNU/Linux 11 (bullseye) 0-3. 共通環境 Python : 3.11.1 Django:4.1.4 Nginx:1.23.3 Gunicorn:20.1.0 PostgrSQL:14.0 psycopg2-binary:2.9.3 0-4. Python3.11 Python 3.11はPython 3.10と比べて平均で 25%速くなりました。ワークロードにも寄りますが、10%から60%の速度向上が見込めます。これは「起動時の高速化」と「実行時の高速化」の二つによって達成されています。 起動時の高速化:起動時間が10-15%高速化 実行時の高速化:最大 2~20%の速度向上 SSLモジュール Python 3.

Hero Image
Ubuntu22.04 LTSの基本構築

改定箇所 2022-07-05:GitHub Token 修正 コマンドラインでGitHubに接続するためにアクセストークンが必要となりました 「2-8. GitのUbuntuへ導入」を修正 Token:ghp_xxxxx 1. 概要 「システム開発・デプロイ環境の構築」の重要性について、以下の2つ挙げることができます。 開発エンジニアは、開発環境を構築する手間が省き、メンテナンスを容易にする Dockerイメージの中に既に開発に必要なものは入っているので、開発エンジニアが自ら開発環境を構築する必要はない。 開発環境と本番環境で全く同じ構成を実現したい。 開発環境で動作したコンテナをそのまま本番環境で動作させるので、開発環境と本番環境で動作するものは寸分違わず同じものとなる。 開発・デプロイ環境の構築の説明資料として、以下のようにに分けて説明します。 (1-1)WSL+Ubuntuインストール (1-2)GitHubへの登録と設定 (1-3)Netlifyの登録と設定 (1-4)VPSへの登録と設定 (1-5)GoogleDomainの登録と設定(メール) (1-6)WSL+Ubuntu20.04+Dockerに関わる設定 (1-7)WSL2+Ubuntu20.04+Docker-補足 (1-8)(1-8)開発・デプロイ手順 1-1. WSLとは Linux 用 Windows サブシステムを使用すると、開発者は、従来の仮想マシンまたはデュアルブート セットアップのオーバーヘッドなしで、ほとんどのコマンド ライン ツール、ユーティリティ、アプリケーションを含む GNU/Linux 環境を変更せずそのまま Windows 上で直接実行できます。 1-2. WSL2とは WSL 2 は、Linux 用 Windows サブシステムが Windows 上で ELF64 Linux バイナリを実行できるようにする、Linux 用 Windows サブシステム アーキテクチャの新しいバージョンです。 その主な目標は、ファイル システムのパフォーマンスを向上させること と、システム コールの完全な互換性 を追加することです。 1-3. WSL2の機能 OS ファイル システム間でのパフォーマンス Linux ファイル システムのルート: \wsl$\Ubuntu-18.04\home<user name>\Project Windows ファイル システムのルート: C:\Users<user name>\Project

Hero Image
Ubuntu 22.04でPostgres、Nginx、Gunicornを使用してDjangoをセットアップ

1. 初めに Djangoは、PythonアプリケーションやWebサイトを軌道に乗せるのに役立つ強力なWebフレームワークです。Djangoには、コードをローカルでテストするための簡略化された開発サーバーが含まれていますが、本番環境に関連するものでも、より安全で強力なWebサーバーが必要です。 このガイドでは、Djangoアプリケーションをサポートおよび提供するために、Ubuntu22.04にいくつかのコンポーネントをインストールして構成します。デフォルトのSQLiteデータベースを使用する代わりに、PostgreSQLデータベースを設定します。アプリケーションとインターフェイスするように Gunicorn1 アプリケーションサーバーを構成します。次に、GunicornにリバースプロキシするようにNginxを設定し、アプリを提供するためのセキュリティ機能とパフォーマンス機能にアクセスできるようにします。 Digtal Ocean2を参考にWSL上に構築していきます。 2. 前提条件と目標 VPS : Ubuntu22.04 on WebAREANA Indigo フレームワークはDjango DBはPostgreSQL アプリケーションサーバはGunicorn WebサーバはNginx VSCodeからSSH接続環境 VPS-IP : 160.248.11.107 ubuntu : password Djangoは仮想環境内にインストールします。プロジェクトに固有の環境にDjangoをインストールすると、プロジェクトとその要件を個別に処理できるようになります。 データベースとアプリケーションを稼働させたら、Gunicornアプリケーションサーバーをインストールして構成します。これはアプリケーションへのインターフェイスとして機能し、クライアント要求をHTTPからアプリケーションが処理できるPython呼び出しに変換します。次に、Gunicornの前にNginxをセットアップして、高性能の接続処理メカニズムと実装が簡単なセキュリティ機能を利用します。 Python 3.11は、以前の3.10よりも10〜60%高速であると主張し、次の機能を備えています。 3. VPSへのログイン 3-1. OSの初期設定(アップデート、アップグレード) sudo apt update apt list --upgradable (root change) sudo su - 4. 新規ユーザーを追加 以下rootで実行します。 adduser vpsadmin 新しく追加したユーザーにsudo権限を持たせ、sudo権限を持ったユーザーを表示して確認します。 gpasswd -a vpsadmin sudo (確認) cat /etc/group | grep sud sudo❌27:ubuntu,vpsadmin 追加したユーザーのパスワード設定 passwd vpsadmin 5. VSCodeでSSHログイン WebArena Indigoの環境設定を参照