このガイドでは、DjangoのプロジェクトをMySQLとNginxで構築し、Gunicornを使ったサーバー設定を行う方法を紹介します。セキュリティにも配慮した内容で進めますので、安心してサーバーを運用できます。
仮想環境の作成
まず、Djangoをインストールするために仮想環境を作成します。
cd /home/<your_username>/venv
python3 -m venv <your_project_venv>
source /home/<your_username>/venv/<your_project_venv>/bin/activate
deactivate
ここで、<your_username>
と<your_project_venv>
は適宜ご自身の環境に合わせて変更してください。
Djangoのインストール
仮想環境をアクティブにした状態でDjangoをインストールします。
pip install "django==4.2"
プロジェクトの作成
Djangoプロジェクトを作成します。ここではプロジェクト名をmy_project
として進めます。
django-admin startproject my_project
サーバーを起動
ローカルサーバーを起動して、プロジェクトが正しく動作しているか確認します。
python manage.py runserver 0.0.0.0:8000
MySQLデータベースの設定
MySQLのインストール
MySQLをインストールし、データベースを作成します。
sudo apt update
sudo apt-get install mysql-server libmysqlclient-dev
MySQLの設定を行います。ここではデータベース名をmy_project_db
、ユーザー名をmy_project_user
に設定します。
sudo mysql -u root -p
CREATE DATABASE my_project_db;
CREATE USER 'my_project_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON my_project_db.* TO 'my_project_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Djangoの設定
settings.py
にMySQLの設定を追加します。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_project_db',
'USER': 'my_project_user',
'PASSWORD': 'strong_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
Gunicornのインストールと設定
Gunicornをインストールします。
pip install gunicorn
Gunicornを使ってアプリケーションを実行します。
gunicorn --workers 3 my_project.wsgi:application
Nginxのインストールと設定
Nginxの設定
次に、Nginxをインストールし、DjangoとGunicornの間でリバースプロキシを設定します。
sudo apt-get install nginx
/etc/nginx/sites-available/my_project
ファイルを作成し、以下の内容を追加します。
server {
listen 80;
server_name my_project.com www.my_project.com;
location / {
proxy_pass http://unix:/home/<your_username>/Django/my_project/gunicorn.sock;
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;
}
location /static/ {
alias /home/<your_username>/Django/my_project/static;
}
location /media/ {
alias /home/<your_username>/Django/my_project/media;
}
}
設定ファイルをsites-enabled
にリンクします。
sudo ln -s /etc/nginx/sites-available/my_project /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx
SSL設定
Let’s EncryptでSSL証明書を取得して、HTTPS通信を有効にします。
sudo certbot --nginx -d my_project.com -d www.my_project.com -m <your_email>
Gunicornの自動起動設定
Gunicornをシステムサービスとして設定することで、サーバー起動時にGunicornが自動的に起動するようにします。
まず、Gunicornのサービスファイルを作成します。
sudo vim /etc/systemd/system/gunicorn.service
以下の内容を追加します。
[Unit]
Description=Gunicorn daemon for my_project
After=network.target
[Service]
User=<your_username>
Group=www-data
WorkingDirectory=/home/<your_username>/Django/my_project
ExecStart=/home/<your_username>/venv/<your_project_venv>/bin/gunicorn --workers 3 --bind unix:/home/<your_username>/Django/my_project/gunicorn.sock my_project.wsgi:application
[Install]
WantedBy=multi-user.target
サービスをリロードし、Gunicornを起動します。
sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl status gunicorn
ファイルの権限設定
最後に、Gunicornのソケットファイルの権限を設定します。
sudo chown -R <your_username>:www-data /home/<your_username>/Django/my_project
sudo chmod -R 775 /home/<your_username>/Django/my_project
システムの確認
全てが正しく設定されているか確認します。
sudo systemctl status nginx
sudo systemctl status gunicorn
これで、DjangoプロジェクトがMySQLとNginxで構築され、Gunicornを使用してサーバーが正常に稼働しているはずです。SSLも設定され、HTTPS通信も有効になっています。
コメント