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がエラーなくインストールされている
- [ ] プロジェクト作成と開発サーバー起動ができる
- [ ] 管理画面にアクセスできる
- [ ] 基本的なアプリケーション作成ができる
- [ ] データベースマイグレーションが実行できる
コメント