WSLのApache+mod_wsgiでDjangoのプロジェクトをデプロイする

Sponsored Link
ロリポップ!レンタルサーバー

はじめに

端的にいいますと、DjangoGirlsをWSLのApacheでデプロイする手順をまとめてみました。

DjangoGirlsはWindows環境で試したので、最初はWindows環境でApacheを構築して・・・と思ったのですが、もはやWindowsでApacheを構築するのはどうかと思いまして、せっかくWSLがあるのでそちらでApacheなどを動かそうと思った次第です。

前提条件(試した環境)

  • Windows10
  • WSLは構築済み(Ubuntu 18.04)
  • DjangoGirlsのチュートリアルは一通り終わっている。
    Windowsでのパスは ”D:\dev\djangogirls”で開発していました。

構築の方針(というほどではありませんが)

  • WSLのユーザはdjuser
    sudoで作業するので、グループに追加しておいてください。
    この辺の考え方は各自お好みで。
  • python仮想環境はvenvで作る。
  • Djangoの仮想環境パス:/home/djuser/dev/djangogirls/djenv
    仮想環境はdjenvという名前で作ります。
  • Apacheは2.4
  • Djangoのバージョンは2.2.4 (DjangoGirlsで指定されたバージョン)

 

Sponsored Link

環境構築

全てWSL上での作業となります。ログインユーザはdjuser。

事前にUbuntuのアップデートやaptのアップデートは実施済みです。

Apacheのインストール

#Apacheのインストール
$ sudo apt install apache2 apache2-dev
#Apacheの起動確認
$ sudo apachectl start

WSL上で初めてApacheを起動する時は、ファイアウォールの警告が表示されると思いますので、アクセスを許可してください。

ブラウザで確認。

とりあえず動いています。

Python 関係のインストール

# Python関係のインストール
$ sudo apt install python3 python3-pip python3-venv
# バージョンを確認
$ python3 --version
Python 3.6.9

Django仮想環境用ディレクトリ、仮想環境の作成

#ディレクトリ作成
$ mkdir /home/djuser/dev
$ mkdir /home/djuser/dev/djangogirls
$ cd /home/djuser/dev/djangogirls
#仮想環境作成
$ python3 -m venv djenv
#仮想環境をアクティベート
$ . ./djenv/bin/activate

以下、仮想環境で作業します。

諸々インストールする前にpipの状況を確認しておきます。pipのバージョンがが9.0.1と古いので、アップデートしておきましょう。

#仮想環境でのpipの状況を確認
(djenv) $ pip list
pip (9.0.1) #pipが古い
pkg-resources (0.0.0)
setuptools (39.0.1)
#pipをアップデート
(djenv) $ pip install -U pip
(djenv) $ pip list
Package       Version
------------- -------
pip           20.1.1
pkg-resources 0.0.0
setuptools    39.0.1

本家でもpipが古いとインストールが機能しないと書かれています。

Django のインストール方法 | Django ドキュメント | Django
Django のインストール方法 | Django ドキュメント | Django docs.djangoproject.com
Django のインストール方法 | Django ドキュメント | Django

Djangoとmod_wsgiをインストール

#Djangoをインストール
(djenv) $ pip install django==2.2.4

#mod_wsgiをインストール 
(djenv) $ pip install mod_wsgi
#インストール結果を確認
(djenv) $ mod_wsgi-express module-config
LoadModule wsgi_module "/home/djuser/dev/djangogirls/djenv/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/djuser/dev/djangogirls/djenv"

mod_wsgi-express module-configの結果はApacheの設定で使うので、メモしておきましょう。

今一度インストールの状況を確認。

(djenv) $ pip list
Package       Version
------------- -------
Django        2.2.4
mod-wsgi      4.7.1
pip           20.1.1
pkg-resources 0.0.0
pytz          2020.1
setuptools    39.0.1
sqlparse      0.3.1

この内容、特にバージョンは実行するタイミングで変化があると思いますので、何が入っているのかという目安として考えてくださいませ。

Apacheの設定

事前に確認しておくこと

  • DjangoGirlsのパス
    Apacheの設定ファイルに書くので、WSLとしてのパスを確認。

    • Windowsでのパス:D:\dev\djangogirls
    • WSLでのパス:/mnt/d/dev/djangogirls
    • プロジェクト:mysite
  • mod_wsgiのインストール情報
    先ほど確認した情報
    LoadModule wsgi_module "/home/djuser/dev/djangogirls/djenv/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
    WSGIPythonHome "/home/djuser/dev/djangogirls/djenv"
  • WSL側の仮想環境のパス:/home/djuser/dev/djangogirls/djenv

Apache設定ファイル

$ sudo vi /etc/apache2/sites-available/djangogirls.conf

ファイルの内容は以下の通り。

LoadModule wsgi_module "/home/djuser/dev/djangogirls/djenv/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/djuser/dev/djangogirls/djenv"

<VirtualHost *:80>
  WSGIScriptAlias / /mnt/d/dev/djangogirls/mysite/wsgi.py process-group=mysite
  WSGIDaemonProcess mysite python-home=/home/djuser/dev/djangogirls/djenv python-path=/mnt/d/dev/djangogirls/mysite
  WSGIProcessGroup mysite
  <Directory /mnt/d/dev/djangogirls/mysite>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>
  Alias /static/ /mnt/d/dev/djangogirls/static/
  <Directory /mnt/d/dev/djangogirls/static>
    Require all granted
  </Directory>
</VirtualHost>

この設定内容は、本家ドキュメント(↓)を参考に、デーモンモードで動くように設定してみました。

Django を Apache と mod_wsgi とともに使うには? | Django ドキュメント | Django
Django を Apache と mod_wsgi とともに使うには? | Django ドキュメント | Django docs.djangoproject.com
Django を Apache と mod_wsgi とともに使うには? | Django ドキュメント | Django

また、/static/というディレクトリはDjangoの静的ファイルに関する記述ですが、こちらの記事が参考になりました。

Free video big cock glasses. Anale mom and son.Tera patrick rimjob. Vintage glass relish trays. Aberdeen escort. Victoria ivy porn star. Arabian tour. Video belo film. 3d alice sex.
Free video big cock glasses. Anale mom and son. torina.top
Free video big cock glasses. Anale mom and son.

続いて作成した設定ファイルを有効にします。

#デフォルトのサイトを無効にして、djangogirlsを有効にする。
$sudo a2dissite 000-default
$sudo a2ensite djangogirls

そしてApacheを再起動

$sudo apachectl restart

ブラウザで確認。

以上です。

 

ところで、すでにWSL2が正式リリースされていますが、まだうちのWindows環境には更新が表示されておりません。

今回のアップデートもまだ不具合があるようなので、更新プログラムに表示されるまで待っておこうかなと思いながら、無理矢理手動で更新しようかなとか迷っています。手動アップデートのリンク↓

手動でアップデートする際は十分にリスクを確認して自己責任でお願いしますね。

Windows 10 のダウンロード
Windows 10 のダウンロード www.microsoft.com
Windows 10 のダウンロード

 

 

Sponsored Link