LoginSignup
4
8

More than 5 years have passed since last update.

【Django】DjangoによるWeb開発プロジェクトPart1 - 環境構築編 -

Last updated at Posted at 2018-10-27

はじめに

こんにちは。今回本格的に開発したいプロジェクトが出来たため、PythonによるWeb開発を行なっていきたいと思います。
なぜPythonで開発するのかと言いますと、あるライブラリとツールがPythonで開発されているためです。
今回は、PythonのWebフレームワークの一つとして有名なDjangoを用いてWeb開発を進めていきたいと思います。
なお、今回の開発環境はFreeBSDで行なっています。
筆者はPythonに関しても、Goと同じく(詳しくはこちら→ https://qiita.com/himrock922/items/1d70686aabaac49b54fd)開発した経験がないため、エビデンス集めから始めていきたいと思います。

Pythonによる環境構築について

まずはエビデンス集めです。筆者はRubylistなため、rbenvのようなものがPythonにもあるのか調べていたら、https://github.com/pyenv/pyenvがありました。
しかし、pyenvの件については以下のような指摘記事がありました。→ https://ymotongpoo.hatenablog.com/entry/2017/01/29/002039
少し引用させていただきます。

プロジェクトで稼働させているバージョンを固定させているならそのバージョンだけ入れればよいわけですし、マイナーバージョンごとにアップデートを行うにしても1年に1度あるかないか、さらに攻めた環境でマイクロバージョンごとにインストールするにしてもたかが知れています。
(マイナーバージョンは大概がセキュリティフィックスか明らかなバグ修正。)であれば、pyenvでPythonを新規にインストールする必要ってどれくらいあるんでしょう。

元々、Pythonのインストールは configure, make, make install で事足りるので(そもそもpyenvもそれをバックエンドでやっている)、わざわざpyenvを使う必要がないとの事です。

また、Python3以降からプロジェクト毎に固有の環境が作成することができるvenvがサポートされている模様です。
venvはシステムとは独立した仮想環境を作成し、また仮想環境には独立したPythonバイナリがありシステムとは独立したPythonパッケージ群をインストールすることができます。

これを考慮して、Python本体はパッケージインストールを行い、開発毎にvenvで環境を分けていこうと思います。勿論、これはproductionデプロイする時に安定した環境で運用できるように設定したいため、後々変えるかもしれません。

FreeBSDへの環境構築

では、Pythonのインストールと仮想環境を構築していきたいと思います。

Pythonのインストール

% sudo pkg install python37
% mkdir Develpment
% cd Development
% which python3.7
/usr/local/bin/python3.7

仮想環境の構築

続いて仮想環境を構築していきます。

% python3.7 -m venv application_environment

仮想環境が作成されれば、そのディレクトリ配下にあるスクリプトで仮想環境の有効化が行えます。

zshの場合
% cd application
% source ./bin/activate

仮想環境上に必要なライブラリをインストール

仮想環境を有効にしたら、Djangoをインストールします。

% pip install django

Djangoをインストール後、新しいスケルトンサイトを作成するために、django-adminを実行し、Djangoによるアプリケーションをディレクトリ配下にインストールします。念の為、仮想環境とは別のディレクトリでDjangoアプリケーションをインストールすることにしました。今回、プライベートリポジトリで運用していくつもりをしているのでアプリケーション名は伏せさせていただきます。

% cd ..
% mkdir django
% cd django

試しにDjangoを起動してみました。

% python3.7 manage.py runserver
% django-admin startproject application
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/home/himrock922/Development/jail_hosting_system/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 10, in <module>
    from sqlite3 import dbapi2 as Database
  File "/usr/local/lib/python3.7/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/lib/python3.7/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3

sqlite3が必要な模様なため、あらかじめパッケージインストールしておきます。

% sudo pkg install sqlite3

また、今回VPSを借りて運用しているため、Djangoが起動しているか確認するために、あらかじめsettings.pyにてアクセス許可するIPアドレスにVPSに紐づいている固定IPアドレスを追加しておきます。

settings.py
ALLOWED_HOSTS = ['*.*.*.*']  

Djangoを動かすためには、runserverを引数として実行します。ただし、デフォルトでは127.0.0.1で待ち受けするため、これをVPSのアドレスで待ち受けできるようにもう一つ引数を指定してあげます。

% python3.7 manage.py runserver *.*.*.*:8080

以上で、デフォルトのWellComeページ(?)が閲覧できるようになりました。

FireShot Capture 13 - Django_ the Web framework for perfectionists w_ - http___133.242.137.151_8080_.png

一旦ここまでのパッケージ群のバージョンを固定し、一括管理できるようにpip freezeを利用してリポジトリに登録しておきます。

% pip freeze > packages.txt
% git add .
% git commit -m "first commit"
% git push origin master

まとめ

Djangoについての環境構築でした。今回はあまり大したことしていませんが、今後Djangoによる開発を進めるにあたり、どんどん書いていきたいと思います。

シリーズ

Part 1Part 2

参考文献

4
8
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
8