【初心者向け】LinuxにDjangoをインストールする方法|仮想環境から確認手順まで完全ガイド

Linux

Django(ジャンゴ)はPythonで作られた強力なWebアプリケーションフレームワークです。

少ないコードで高機能なWebサービスを作ることができ、セキュリティや管理画面なども標準装備されており、企業でもよく使われています。

Linux環境でのDjangoインストールは、開発やサーバー構築において非常に一般的です。
特にUbuntuなどのディストリビューションを使えば、Pythonとの相性も良好で、開発効率が格段に上がります。

この記事では、Linux初心者でもつまずかないDjangoのインストール手順を、エラー対策も含めて丁寧に解説します。

実際のコマンド例やトラブルシューティングも充実させ、確実に環境構築できる内容をお届けします。

この記事で学べること:

  • 各種Linuxディストリビューションでの環境準備
  • 仮想環境を使った安全なインストール手順
  • プロジェクト作成から動作確認まで
  • よくあるエラーと具体的な解決方法
スポンサーリンク

環境の準備と前提条件の確認

システム要件

Django開発に必要なシステム要件を確認しましょう。

最小要件:

  • Python 3.8以上(3.9以上を推奨)
  • メモリ 2GB以上(4GB以上を推奨)
  • ストレージ 1GB以上の空き容量
  • インターネット接続(パッケージダウンロード用)

推奨要件:

  • Python 3.11以上
  • メモリ 8GB以上
  • SSD 10GB以上の空き容量
  • Git(バージョン管理用)

ディストリビューション別の準備手順

Ubuntu/Debian系

システムアップデート:

sudo apt update && sudo apt upgrade -y

必要パッケージのインストール:

# Python3とpipのインストール
sudo apt install python3 python3-pip python3-venv python3-dev -y

# 開発に便利なツールもインストール
sudo apt install build-essential git curl wget -y

インストール確認:

python3 --version
pip3 --version

期待される出力:

Python 3.11.4
pip 23.2.1 from /usr/lib/python3/dist-packages/pip (python 3.11)

CentOS/RHEL/Rocky Linux系

システムアップデート:

sudo dnf update -y
# または古いバージョンの場合
sudo yum update -y

Python3とpipのインストール:

# CentOS 8/Rocky Linux 8以降
sudo dnf install python3 python3-pip python3-devel gcc git -y

# CentOS 7の場合
sudo yum install python3 python3-pip python3-devel gcc git -y

EPELリポジトリの有効化(必要に応じて):

sudo dnf install epel-release -y

Fedora系

システムアップデート:

sudo dnf update -y

必要パッケージのインストール:

sudo dnf install python3 python3-pip python3-devel gcc git -y

Arch Linux系

システムアップデート:

sudo pacman -Syu

必要パッケージのインストール:

sudo pacman -S python python-pip python-virtualenv base-devel git

環境確認の詳細手順

ステップ1:Pythonバージョンの確認

python3 --version
python3 -c "import sys; print(f'Python {sys.version}')"

ステップ2:pipの動作確認

pip3 --version
pip3 list

ステップ3:仮想環境作成機能の確認

python3 -m venv --help

ステップ4:開発ツールの確認

which git
gcc --version

追加で推奨するツールのインストール

開発効率を上げるツール:

# Ubuntu/Debian
sudo apt install tree htop neovim postgresql-client sqlite3 -y

# CentOS/RHEL/Rocky Linux
sudo dnf install tree htop neovim postgresql sqlite -y

# Fedora
sudo dnf install tree htop neovim postgresql sqlite -y

# Arch Linux
sudo pacman -S tree htop neovim postgresql sqlite

仮想環境を使ったDjangoインストール

仮想環境の必要性と利点

仮想環境は、プロジェクトごとに独立したPython環境を作成する仕組みです。これにより、異なるプロジェクト間でのライブラリの競合を防げます。

仮想環境を使う理由:

  • 依存関係の分離:プロジェクトごとに必要なライブラリのバージョンを管理
  • システム環境の保護:グローバルPython環境を汚染しない
  • 環境の再現性:requirements.txtで同じ環境を他の環境で再現可能
  • 実験の安全性:新しいライブラリを安全にテスト可能

venvを使った仮想環境の作成

ステップ1:プロジェクト用ディレクトリの作成

# プロジェクト用フォルダを作成
mkdir ~/django_projects
cd ~/django_projects

# 個別プロジェクトフォルダを作成
mkdir my_django_app
cd my_django_app

ステップ2:仮想環境の作成

# 仮想環境を作成(django_envという名前で)
python3 -m venv django_env

# 作成されたファイルを確認
ls -la django_env/

期待される出力:

drwxr-xr-x 2 user user 4096 Jun 18 10:30 bin
drwxr-xr-x 2 user user 4096 Jun 18 10:30 include
drwxr-xr-x 3 user user 4096 Jun 18 10:30 lib
-rw-r--r-- 1 user user   69 Jun 18 10:30 pyvenv.cfg

ステップ3:仮想環境の有効化

# 仮想環境を有効化
source django_env/bin/activate

# 有効化の確認(プロンプトに環境名が表示される)
# (django_env) user@hostname:~/django_projects/my_django_app$

仮想環境が有効化されているかの確認方法:

# Pythonの場所確認
which python
# 期待される出力: /home/user/django_projects/my_django_app/django_env/bin/python

# pipの場所確認
which pip
# 期待される出力: /home/user/django_projects/my_django_app/django_env/bin/pip

ステップ4:pipのアップグレード

# 仮想環境内のpipを最新に更新
pip install --upgrade pip

# バージョン確認
pip --version

Djangoのインストール

ステップ1:Djangoのインストール

# 最新版のDjangoをインストール
pip install django

# インストールの進行状況が表示される

期待される出力:

Collecting django
  Downloading Django-4.2.3-py3-none-any.whl (8.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.0/8.0 MB 2.1 MB/s eta 0:00:00
Collecting asgiref<4,>=3.6.0
  Downloading asgiref-3.7.2-py3-none-any.whl (24 kB)
Collecting sqlparse>=0.3.1
  Downloading sqlparse-0.4.4-py3-none-any.whl (41 kB)
Installing collected packages: sqlparse, asgiref, django
Successfully installed asgiref-3.7.2 django-4.2.3 sqlparse-0.4.4

ステップ2:特定バージョンのインストール(必要に応じて)

# 特定バージョンを指定してインストール
pip install django==4.2.3

# バージョン範囲を指定
pip install "django>=4.0,<5.0"

# LTS(長期サポート)版を指定
pip install django==4.2.3  # 4.2はLTS版

ステップ3:インストールの確認

# Djangoのバージョン確認
django-admin --version

# Pythonからの確認
python -c "import django; print(f'Django version: {django.get_version()}')"

期待される出力:

4.2.3
Django version: 4.2.3

ステップ4:インストールされたパッケージの確認

# インストール済みパッケージ一覧
pip list

# Djangoの詳細情報
pip show django

pip showの出力例:

Name: Django
Version: 4.2.3
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
Home-page: https://www.djangoproject.com/
Author: Django Software Foundation
Author-email: foundation@djangoproject.com
License: BSD-3-Clause
Location: /home/user/django_projects/my_django_app/django_env/lib/python3.11/site-packages
Requires: asgiref, sqlparse
Required-by: 

追加で推奨するパッケージのインストール

Django開発を効率化する追加パッケージをインストールします:

# 開発に便利なパッケージを一括インストール
pip install pillow psycopg2-binary python-decouple django-debug-toolbar

# または個別にインストール
pip install pillow          # 画像処理用
pip install psycopg2-binary  # PostgreSQL接続用
pip install python-decouple # 設定管理用
pip install django-debug-toolbar  # デバッグ用

Djangoプロジェクトの作成と動作確認

プロジェクトの作成

ステップ1:Djangoプロジェクトの作成

# 新しいDjangoプロジェクトを作成
django-admin startproject myproject

# プロジェクト構造の確認
tree myproject/

作成されるファイル構造:

myproject/
├── manage.py
└── myproject/
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

ステップ2:プロジェクトディレクトリに移動

cd myproject

ステップ3:各ファイルの役割確認

# manage.py:Django管理コマンドのエントリーポイント
python manage.py help

# settings.py:プロジェクトの設定ファイル
head -20 myproject/settings.py

データベースの初期設定

ステップ1:初期マイグレーションの実行

# データベースの初期化
python manage.py migrate

期待される出力:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying sessions.0001_initial... OK

ステップ2:スーパーユーザーの作成

# 管理者アカウントを作成
python manage.py createsuperuser

対話形式での入力:

Username (leave blank to use 'user'): admin
Email address: admin@example.com
Password: 
Password (again): 
Superuser created successfully.

パフォーマンス最適化と運用準備

開発サーバーの最適化

メモリ使用量の監視:

# Djangoプロセスのメモリ使用量確認
ps aux | grep python | grep manage.py

# システム全体のメモリ使用量
free -h

# リアルタイム監視
htop

デバッグ情報の活用:

# Django Debug Toolbarのインストール
pip install django-debug-toolbar

# settings.pyに追加
cat << 'EOF' >> myproject/settings/development.py

# Debug Toolbar設定
if DEBUG:
    INSTALLED_APPS += ['debug_toolbar']
    MIDDLEWARE.insert(0, 'debug_toolbar.middleware.DebugToolbarMiddleware')
    INTERNAL_IPS = ['127.0.0.1', '::1']
    
    DEBUG_TOOLBAR_CONFIG = {
        'SHOW_TEMPLATE_CONTEXT': True,
    }
EOF

静的ファイルの管理

静的ファイル設定の追加:

# settings.pyに静的ファイル設定を追加
cat << 'EOF' >> myproject/settings/base.py

# 静的ファイル設定
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_DIRS = [
    BASE_DIR / 'static',
]

# メディアファイル設定
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'
EOF

# 静的ファイル用ディレクトリ作成
mkdir -p static/css static/js static/images
mkdir -p media

静的ファイルの収集:

# 静的ファイルを収集
python manage.py collectstatic --noinput

ログ設定の構成

ログ設定の追加:

# ログディレクトリの作成
mkdir logs

# settings.pyにログ設定を追加
cat << 'EOF' >> myproject/settings/base.py

# ログ設定
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
            'style': '{',
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
    },
    'handlers': {
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': BASE_DIR / 'logs' / 'django.log',
            'formatter': 'verbose',
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple',
        },
    },
    'root': {
        'handlers': ['console', 'file'],
        'level': 'INFO',
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'level': 'INFO',
            'propagate': False,
        },
    },
}
EOF

本番環境への準備

Gunicorn を使ったWSGIサーバー設定

Gunicornのインストール:

pip install gunicorn

Gunicorn設定ファイルの作成:

cat << 'EOF' > gunicorn.conf.py
# Gunicorn設定ファイル
import multiprocessing

# ワーカー設定
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "sync"
worker_connections = 1000
max_requests = 1000
max_requests_jitter = 100

# ネットワーク設定
bind = "127.0.0.1:8000"
backlog = 2048

# ログ設定
accesslog = "logs/gunicorn_access.log"
errorlog = "logs/gunicorn_error.log"
loglevel = "info"

# プロセス設定
daemon = False
pidfile = "logs/gunicorn.pid"
user = None
group = None
EOF

Gunicornでの起動テスト:

# Gunicornでアプリケーションを起動
gunicorn --config gunicorn.conf.py myproject.wsgi:application

# バックグラウンドで起動
gunicorn --config gunicorn.conf.py --daemon myproject.wsgi:application

systemdサービス化

systemdサービスファイルの作成:

# サービスファイルを作成(管理者権限が必要)
sudo tee /etc/systemd/system/django-myproject.service << 'EOF'
[Unit]
Description=Django MyProject
After=network.target

[Service]
Type=notify
User=www-data
Group=www-data
WorkingDirectory=/path/to/your/project
Environment=PATH=/path/to/your/project/django_env/bin
ExecStart=/path/to/your/project/django_env/bin/gunicorn --config gunicorn.conf.py myproject.wsgi:application
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# サービスの有効化と起動
sudo systemctl daemon-reload
sudo systemctl enable django-myproject
sudo systemctl start django-myproject

# ステータス確認
sudo systemctl status django-myproject

Nginx との連携設定

Nginxのインストール:

# Ubuntu/Debian
sudo apt install nginx -y

# CentOS/RHEL/Fedora
sudo dnf install nginx -y

# サービス開始
sudo systemctl start nginx
sudo systemctl enable nginx

Nginx設定ファイルの作成:

sudo tee /etc/nginx/sites-available/django-myproject << 'EOF'
server {
    listen 80;
    server_name your-domain.com www.your-domain.com;

    location /static/ {
        alias /path/to/your/project/staticfiles/;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    location /media/ {
        alias /path/to/your/project/media/;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF

# 設定を有効化
sudo ln -s /etc/nginx/sites-available/django-myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

トラブルシューティング応用編

ログを使った問題の特定

Djangoログの確認:

# アプリケーションログの確認
tail -f logs/django.log

# Gunicornログの確認
tail -f logs/gunicorn_error.log

# Nginxログの確認
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log

systemdログの確認:

# サービスログの確認
sudo journalctl -u django-myproject -f

# 特定期間のログ
sudo journalctl -u django-myproject --since "1 hour ago"

パフォーマンス問題の診断

データベースクエリの最適化:

# Django ORMクエリのデバッグ
python manage.py shell
# Pythonシェル内で実行
from django.db import connection
from django.conf import settings

# クエリログの有効化
settings.LOGGING['loggers']['django.db.backends'] = {
    'level': 'DEBUG',
    'handlers': ['console'],
}

# 実行されたクエリの確認
print(connection.queries)

メモリ使用量の監視:

# プロセス別メモリ使用量
ps aux --sort=-%mem | head -20

# Django プロセスの詳細監視
watch -n 1 'ps aux | grep python | grep -v grep'

セキュリティ設定の確認

基本的なセキュリティチェック:

# Django設定の確認
python manage.py check --deploy

# セキュリティチェック
python manage.py check --tag security

ファイアウォール設定:

# UFW(Ubuntu)での設定
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw status

# firewalld(CentOS/RHEL/Fedora)での設定
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

まとめ

LinuxでのDjangoインストールと環境構築は、正しい手順を踏めば決して難しくありません。

この記事で解説した内容をまとめると:

成功のポイント:
仮想環境の活用:プロジェクトごとの独立した環境
段階的なセットアップ:基本から応用へのステップアップ
エラー対応力:ログを読んで原因を特定する習慣
セキュリティ意識:本番環境への移行準備
継続的な学習:新機能やベストプラクティスのキャッチアップ

環境構築完了チェックリスト:

  • [ ] Python 3.8以上がインストール済み
  • [ ] 仮想環境が正常に作成・有効化できる
  • [ ] Djangoがエラーなくインストールされている
  • [ ] プロジェクト作成と開発サーバー起動ができる
  • [ ] 管理画面にアクセスできる
  • [ ] 基本的なアプリケーション作成ができる
  • [ ] データベースマイグレーションが実行できる

コメント

タイトルとURLをコピーしました