LoginSignup
4
4

More than 5 years have passed since last update.

Azure上のUbuntu VMにDjangoプロジェクトをデプロイする

Posted at

0. この記事について

Djangoで作ったホームページを公開しようと思い、Microsoft Azure上に仮想マシンを作ってデプロイした。その時の方法を記録する。

1. VMを作る

・Azure Portalから、Ubuntu Server 16.04 LTS の仮想マシンを作成した。
・そのままでは、再起動の度にIPアドレスが変わるため、静的なIPを設定するかDNS名を設定する。ここでは、後者にした。VMの「概要」→「パブリックIPアドレス」のアドレスをクリック→「DNS名ラベル」のところにラベルを入力。名前は、ここでは仮にmyapp.japaneast.cloudapp.azure.comとする。
・ネットワークの設定をする。「ネットワーク インターフェイス」の「受信ポートの規則」で、「HTTP」を追加する。

2. VM上にプロジェクトを持ってくる

・プロジェクトのディレクトリは、VM上の/home/user/myprojectにあると仮定する。
・プロジェクト内にあるwsgi.pyに次の行を追加する。

import sys
sys.path.append('/home/user/myproject')

・やらなくても動くが、settings.pyDEBUG = TrueとなっているところをDEBUG = Falseにしておく。
settings.pyで、ALLOWED_HOSTSの中に、Azureで設定したホスト名myapp.japaneast.cloudapp.azure.comを入れる。独自ドメインを使う場合は、それも入れる。
/home/user/myproject/に、virtualenv ENVpython -m venv ENVで作った仮想環境のフォルダENVがあると仮定する。

3. VM上にApacheを入れる

sudo apt-get install apache2 libapache2-mod-wsgi-py3として、Apacheなどをインストールする。
・次のように、/etc/apache2/sites-available/000-default.confを編集していく。
・staticとwsgiの設定をする。

<VirtualHost *:80>
    ...
    Alias /static /home/user/myproject/static
    <Directory /home/user/myproject/static>
        Require all granted
    </Directory>

    <Directory /home/user/myproject/myproject>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
</VirtualHost>

・その下に、さらに3行追記する。

<VirtualHost *:80>
    ...
    </Directory>

    WSGIDaemonProcess myproject python-path=/home/user/myproject/ENV/lib/python3.6/site-packages
    WSGIProcessGroup mysite
    WSGIScriptAlias / /home/user/myproject/myproject/wsgi.py
</VirtualHost>

python-pathは、ENVで使っているpythonのバージョンなどに応じて書き換える。
・次に、ターミナルで権限関係の設定をする。
chmod 664 ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject
sudo service apache2 restartをする。

4. その他

error.logaccess.log/var/log/apache2で見れる。
Djangoのドキュメンテーションには、httpd.confを編集するデプロイ方法が書かれているが、Ubuntuの場合、これに相当するファイルは/etc/apache2/apache2.confのようだ。今回は、これは編集しなかった。

5. 参考

How To Serve Django Applications with Apache and mod_wsgi on Ubuntu 14.04
Microsoft Azureの仮想マシンにAzureサブドメイン(DNS名ラベル)を設定する方法

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4