django nginx+gunicorn 自鯖にデプロイ
django filterの使い方
django チート
djangoでのSQL
開発環境で作成した djangoをサーバーへコピー
仮に
django-admin startproject mysite
django-admin startapp blog
で作成したとすると
cd ~/mysite/mysite
vim settings.py
DEBUG = True->False
ALLOWED_HOSTS = [] ->['サーバ名(IPアドレス)'] #又は['*'] 何でもあり どこで見たか忘れたがセキュリティ上 非推奨だったような?
STATIC_URL = '/static/'
STATIC_ROOT = '/usr/share/nginx/html/static'
# STATICFILES_DIRSの設定をしているならコメントアウト
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, 'static'),
# ]
# media の設定もあるなら変更
MEDIA_URL = '/media/'
MEDIA_ROOT = '/usr/share/nginx/html/media'
python 3.7を使って構築する場合
sudo mkdir /usr/share/nginx/html/media
sudo mkdir /usr/share/nginx/html/static
sudo pip3.7 install django django-markdownx ほかのパッケージも使っていればそれも
sudo pip3.7 install gunicorn
cd ~/mysite
sudo python3.7 manage.py collectstatic
自分の場合media、startic/css,static/img, static/jsが空だったので強制コピーした。
nginxの設定
sudo vim /etc/nginx/conf.d/project.conf
server {
listen 80;
server_name サーバ名かIPアドレス;
# 画像ファイル等扱う場合 規定値1Mなので増やす
client_max_body_size 10M;
location /static {
alias /usr/share/nginx/html/static;
}
location /media {
alias /usr/share/nginx/html/media;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
ssl等の設定もあれば付け足す。
Gunicornを使って動かしてみる。
cd ~/mysite
sudo gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application
デーモンを使った場合
sudo gunicorn --daemon --bind 127.0.0.1:8000 mysite.wsgi:application
gunicornの起動ファイルを作る。
gunicorn動作させている場合は再起動するか、kill コマンド等で一旦止める
sudo vim /etc/systemd/system/mysite.service
[Unit]
Description=gunicorn
After=network.target
[Service]
WorkingDirectory=/home/ユーザ/mysite
ExecStart=/usr/local/bin/gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application
[Install]
WantedBy=multi-user.target
systemctl を使って起動
sudo systemctl start mysite
# 起動確認したら、
sudo systemctl stop mysite #停止
sudo systemctl enable mysite