WSL2を使ってWindows11からDjangoをデプロイしよう

WSL2からDjangoをデプロイ

前回の記事では、windowsにWSL2(Windows Subsystem for Linux)をインストールする方法を紹介しました。 では今日はWSL2を使ってDjangoをデプロイする方法を説明していきます。UbuntuサーバーからDjangoをデプロイする方法はこちらの記事を参考にしてください。 ※今回はwindows11で作業を行っています。SWL2であれば問題はないと思いますが、Windows11を使うことをお勧めします。 ※WindowsからDjangoはデプロイできますが、Hyper-VでNATネットワークをUbuntuにアサインしているためにデフォルトでは、Windowsマシン以外からDjangoアプリにアクセスができません。詳しい対応策はMicrosoftのWSLのGitHub Issueを見てください。 Ubuntuサーバーの起動 では前回の記事でインストールしたUbuntuサーバーを起動します。 Ubutnuサーバーの環境の確認 これから作業するにあたり、Linuxのコマンドに慣れていない人は簡単な早見表などを見ておくとよいです。 例えばCtl+Lで入力画面が一番上に来るのでキレイに見えます。 他に入力している途中でCtl+iを押すと推測したテキストが表示されます。長いファイル名の場合は最初の何文字か書いてCtrl+iで記入を終わられるのに便利です。 また、過去に実行したコマンドを見たい場合は上矢印で見ることができます。 UbuntuサーバーのIPアドレスを見てみます。 ip addrのコマンドで分かるようにeth0のインターフェースに172.18.173.157のIPアドレスがあることが分かります。 WindowsのホストマシンのコマンドプロンプトからPingをかけてみました。 リスポンスがあったので、ここからデプロイできそうです。 次にPythonが入っていることを確認します。 次にUbuntuソフトウェア、パッケージのアップデートをします。 Ubutnuユーザーをwww-dataグループに追加します。 ※これからの作業の注意点 Ubuntuユーザーを作成した際にsudoの権限がすでについています。rootに切り替えて作業せず、そのままsudo権限のあるユーザーのまま作業を行いましょう。理由はnginxやファイルの実行の際に権限が与えられていないとエラーが発生するからです。 Djangoデプロイに使うライブラリをUbuntuにインストール 下記のコマンドでUbuntuサーバーにグローバルにインストールしていきます。 PostgreSQLのデータベースを作成 ではこちらの参考Djangoのプロジェクトを使用してデプロイさせていくことにします。もしPostgreSQLを使ったことがない人は1時間くらいかけてデータベースのSQLコマンドを練習、理解してみてください。今後データベースのデータの修正やバックアップを取るためにコマンドラインを使っていくことになるので慣れておくとよいです。 postgresをインストールしたときに自動でpostgres というアドミン権限のユーザーが作成されます。 この権限を使って新しいデータベースとユーザーを作成します。 まずは、PostgreSQLのステータスを確認します。 PostgreSQLが起動できたらPostgresのユーザーに切り替えます。 これでユーザーが切り替わりSQLの入力モードになったことが分かります。 では、Djangoのsettings.pyに合わせたデータベースを作成していきます。 セミコロンを忘れずに! \lのコマンドでDBの一覧が表示されます。 これでpostgresユーザーがオーナーのデータベースが出来ました。 PostgreSQLのコンフィグレーション もしデータベースのオーナーをpostgres以外に設定したい場合は新しいPosgreSQLのユーザーを作成して所有権を移動させてください。 ではpostgresの接続をスムースにするためにコネクションパラメーターを変えます。 まずはエンコーディングをutf-8に変えます。 Postgresのタイムゾーンを日本時間に変えます。 Djangoのタイムゾーンがデフォルト(初期設定)でUTCにセットさせているのでそれを変更していない人はSettnigs.pyから変更しておきましょう。 次に、作成したユーザーにdb(データベース)のアドミン権限をつけます。 postgresは一旦完了なのでquitと入力してでpostgresから抜け出しましょう。 もしくはCtl+Zでも抜けられます。 Django用に仮想環境を作成 pythonではいくつか仮想環境のライブラリがありますが今回はvirtualenvを使用します。 仮想環境を使ったことがない人は詳しく理解しておいた方が良いですね。 簡単に説明すると同じサーバーで違うバージョンのライブラリを使いたいとき(例えばDjangoの3.0と4.0)に仮想環境をアクティベートして同じマシンでも同時に使用できる様になります。 また、複数人で仕事をするときもバージョンを統一してするために使います。 Pipの準備pipはpythonパッケージマネージャーでpythonのライブラリをインストールする際に使用しますね。 -HのフラグはsudoのコマンドでユーザーのhomeディレクトリではなくrootのHOMEディレクトリにインストールするように指示します。 まずはpipを最新のものにします。 … Read more

Windows 11 でWSL2(Windows Subsystem for Linux)を始めよう

今日はWindowsのPCからLinuxが使えるWSL2(Windows Subsystem for Linux)を紹介します。この機能により、GNU/Linuxを再現し、コマンドラインツール、ユーティリティ、アプリケーションがそのまま使えるようになります。他に似たようなアプローチでは下記の方法があります。 WSL2はWindowsのシステムをそのまま残したまま使えるので状況によっては有利になる場合もあります。しかし、100%のLinuxがそのまま使えるというわけではないので何ができないのか注意しておくことが必要ですね。 WSL2の特徴 WSL2の特徴はこのようになります。 WSL1とWSL2の違い 下記に前バージョンとの違いを比較しました。 特徴 WSL 1 WSL 2 バーチャルマシンに比較して使用する容量が少ない ✅ ✅ 最新版のVMwareとVirtualBoxで起動できる ✅ ✅ VM(バーチャルマシン)の管理 ❌ ✅ Linux Kernel(カーネル)をそのまま使用 ❌ ✅ すべてのシステムがそのまま使える(OSのアップデート、Dockerなど) ❌ ✅ このようにWSL2で機能的にかなり向上できたことが理解できますね。 WSL2インストールの下準備 WSL2を使用するためには下記のシステム条件をクリアしていることが前提になります。 WSL2の使用条件: Windows 10 のバージョン2004かそれより新しいもの(ビルド 19041以降) もしくは、 Windows 11 ではWindows10を使っている人は下記の手順でバージョンを確認してください。 WindowsボタンとRを同時に押します。 ここにwinverを入力しOKを押します。 これでWindowsのバージョンが確認できますね。 WSL2の機能をオンにする 次にWindowsの検索ツールから『役割と機能の追加ウィザード』を起動して、バーチャルマシンとWSLの二つにチェックを入れてOKを押します。Hyper-Vは関係ないので触らないでください。 PCを再起動するように言われるので一旦、再起動して戻ってきましょう。 MicrosoftストアからUbuntuをインストール ではWindowsにあるマイクロソフトストアからUbuntuを検索してインストールしましょう。 では、インストールが完了し、Ubuntuアプリを起動すると、コマンドプロントが起動され下記の様にユーザー名を設定することになります。 インストールが完了したら、下記のコマンドでUbuntuのバージョンを確認してみましょう。 これでUbuntuが起動できたことが確認できました。 今更気づいたのですが、UbuntuサーバーがインストールされたのでデスクトップのようなUIがないですね。でも、同じことがすべてコマンドラインからできるので問題ないです。 簡単に中身を見ていきましょう。 … Read more

WindowsにPostgreSQLをインストールする

PostgreSQLをインストールしよう

今日はPostgreSQLのデータベースをWindowsにインストールする手順を説明します。 では下記のサイトからインストーラーをダウンロードします。 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 特に指定がない場合は最新版のバージョン15をダウンロードしましょう。 ダウンロードできたら、.exeの実行ファイルをクリックしてインストールを始めます。 Nextを押します。 ファイルの保管場所を教えてあげます。通常はこのままでOKです。 Stack Builderは使わないかもしれないのでチェックをはじしてもOkです。 後は使うと思うのでそのままにしてNextを押します。 データを保管するディレクトリです。これもこのままNextです。 postgresユーザーのパスワードを設定します。 後からつかうので忘れないものに! 次にポートの設定です。 外からアクセスする場合にポート番号を指定してあげます。(データベースがアパートのビルなら、ポートはそのドア番号みたいなものです。) Localです。 これはデフォルトのままでOKです。 で、Next。 インストールを開始だっ。 インストールが始まります。。。 あとちょっとだね。 インストールが完了しました。 最後のチェックボックスは外してFinishして大丈夫です。 とくに追加でインストールしたツールとかはないので。 おまけ もし、コマンドラインからPSQLを実行したい場合は環境変数にPostgresのパスを登録してあげる必要があります。 それは調べてやってみてください。

DB BrowserでSQLiteのデータベースを作ろう

SQLiteの使い方

日本のプログラマーの皆さんこんにちは。今日はDB Browserを使ってSQLiteのデータベースを管理していく方法を紹介します。 エクセルのような感覚で始められるのでリレーショナルデータベースを使ったことがない人には得にお勧めです。 SQLiteってなに? SQLiteは下記のような長所があります。 オープンソースです。(ソースコードが一般に公開されています。) データベースの一種です。(MySQLとかPostgreSQLとかと同じ) ポータブルです。(OSに依存せず、DBファイルにそのままアクセスすることができます。) SQLiteの欠点はこのようなものがあります。 DBサーバー無しで使えるのでネットワークからアクセスできない。 大規模なアプリケーションには向いていない。 データサイズに制限がある。 本日の環境 Windows10(MacOSでも、Linuxでも問題ありません。) 本日の目的 今日も目的はSQLiteのデータベースがどのような仕組みで作れるのか見ていくことが目的になります。慣れてきたら、次回以降はSQL(クエリ)を書いてデータベースを操作できるようにしたいですね。 SQLite DB Browserをダウンロード では、SQLiteのデータベースの作業をするために下記の公式リンクからSQLite Browserをダウンロードしましょう。 https://sqlitebrowser.org/dl/ では、ダウンロードページに行ったらWindowsのポータブル版をダウンロードしましょう。 windowsにインストールしちゃいたい人は64bitのインストーラーをダウンロードしてもOKです。MacOCの人はMacの方からダウンロードしてください。 DBBrowserを展開 ではダウンロードした.exeファイルをダブルクリックしてファイルを展開しましょう。 Nextをクリックします。 ポータブル版のファイルをおきたいファイルパス(場所)を指定します。これだとダウンロードに展開されることになります。 では、Instalをクリック。 Finishをクリックで完了です。 SQLiteDatabaseBrowserを実行 では先ほど展開したファイルを開くと.exe実行ファイルがあるのでそれをクリックしてアプリを起動します。 データベースを作成 では、NewDatabaseのボタンを押してデータベースを作成します。 それからデータベース名を決めて、Saveします。名前は後から変更できるのでご心配なく。 Addをクリックしてカラム(Column)を追加します。 まずは、テーブル名をInventoryとかにしておきましょう。 今回は在庫管理業務で使えそうなデータベースを作ってみましょう。 では下記のようにカラムを追加していきましょう。 Nameはカラムの名前です。クエリで指定する際に使います。 Typeはデータのタイプになります。Textは文字のデータです。(数字を入れると文字データの数字として扱われます。プログラミングを学習する際に習いますね。) INTEGERは整数のことになります。 その横にあるチェックボックスを説明します。 NN NotNull(Null=データがないことを許さないという事です。) PK プライマリーキー(他のデータと被らない行を区別するためのキーです。) AI auto increment (自動で数字が足されていくことです。) U ユニーク(PKと同じですが、PKはテーブルに1つしか設定できないことに対しUは複数設定可能です。 では、今回設定した内容を説明します。 idはプライマリーキーでそれぞれのデータの行を区別するために設定しておきます。またAIにチェックが入っているので新しいデータが作成されるたびに数が1,2と増えていくようになります。 最後にadded_date(追加日)のDefault(デフォルト)の部分に下記のテキストを追加します。 CURRENT_TIMESTAMP デフォルトで初期値を設定することができます。もし何もインプットがない場合にデフォルトの値を記録することになります。 この場合は現在の日時を自動で入力するように指示したことになります。 では右下のOKボタンを押してDB(データベース)が作成されました。 … Read more