前提
DjangoでWebサイトをVPSでデプロイしようとしています。WebサーバーとしてNginxを使用しようとしているのですがうまくいきません。
実現したいこと
・Nginxで静的ページを表示する。
発生している問題・エラーメッセージ
Nginxでまず静的ファイルのみ表示してみる(Nginxその2)
このページを参考にNginxで静的ページを表示しようとしています。しかし、IPアドレスでアクセスすると「It works!」とだけ表示されたページ(調べたところではApatch2で表示されるページ?(この写真と全く同じ))が表示され、runserverしてローカルホスト(http://127.0.0.1:8000) からアクセスするとhtmlは表示されるものの、cssが反映されないです。おそらくNginxがうまく起動していないと思うのですがどこが悪いのかよくわかりません。
エラーなど
ローカルホストから接続したとき
terminal
[14/Aug/2022 00:42:36] "GET / HTTP/1.1" 200 47399 [14/Aug/2022 00:42:36] "GET /static/css/styles.css HTTP/1.1" 404 179 [14/Aug/2022 00:42:36] "GET /static/javascript/index.js HTTP/1.1" 404 179
Nginxの設定ファイル
etc/nginx/sites
server { listen 80; listen [::]:80; server_name XXX.XXX.XX.XX; ←実際はIPアドレス root /usr/share/nginx/html; index index.html; location /static { alias /usr/share/nginx/html/static; } location /media { alias /usr/share/nginx/html/media; } location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X_Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:8000; } }
Djangoのsettings.pyの関係ありそうな部分。
python3
from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent ALLOWED_HOSTS = ['XXX.XXX.XX.XX'] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] STATIC_URL = '/static/' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' STATIC_ROOT = '/usr/share/nginx/html/static/' MEDIA_ROOT = '/usr/share/nginx/html/media/'
試したこと
・Nginxの設定ファイルのシンボリックリンク(sites_enable)を作り直す。
・ps aux|grep nginx で起動しているか確認→起動している
・sudo lsof -i:80 でポートを使用しているやつを確認→nginx以外は使用していない。
・systemctl status nginx →active(running) systemctl reload nginx やrestartも効果なし
補足情報(FW/ツールのバージョンなど)
nginx/1.18.0 (Ubuntu)
Django 4.1
Ubuntu 22.04 LTS

0 コメント