WSL2を使ってWindows11から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