Django Ubuntu22 python3 初期設定まとめ

Django Ubuntu22 python3 初期設定まとめ

Django Ubuntu22 python3 初期設定まとめ

Django Ubuntu22 python3 初期設定まとめ

技術Djangoをubuntu22とpython3の環境で初期設定する。
問題Djangoの基本設定を順番に理解したい。

全体の流れ
Ubuntuで一般ユーザーを作成する。ウェブアプリケーションのセキュリティのために、rootユーザーではなく、一般ユーザーで作業を進めます。基本となるセキュリティを設定します。
python3で仮想環境を構築する。python3のvenv環境を構築します。パッケージの問題を解消しておくことで、開発環境を整えます。
djangoをインストールする。djangoを1つ1つの手順を確認しながらインストールします。
nginxをインストールする。nginxを1つ1つの手順を確認しながらインストールします。
postgresをインストールする。postgresをインストールして、データベースを初期設定します。
gunicornをインストールする。gunicornを1つ1つの手順を確認しながらインストールし、実際に通信を確認します。確認を省略すると、問題が発生した場合に、対策が難しくなります。
django projectを設定する。django projectを1つ1つの手順を確認しながら立ち上げし、実際に起動画面のロケットを確認します。
gunicornを設定する。gunicornの設定ファイルをdjango用に作成します。
nginxを設定する。nginxの設定ファイルをdjango用に作成します。
nginxにSSL/TLSを設定する。https通信を可能にします。
djangoをgithubで管理できるように設定する。
多言語対応
日本語Django ひらがな じゃんご カタカナ ジャンゴ 
英語Django
探究資料
Django project.
ジャンゴプロジェクト.

Django python3 一般ユーザーを作成する

Ubuntu22 python3を使う 一般ユーザーを作成する

adduser curry
と入力して、Enterを押します。adduserコマンドは、一般ユーザーを追加するコマンドです。adduserコマンドの後ろには追加するユーザー名を指定します。ここではcurryは指定しました。

Ubuntu22 python3を使う sudoユーザーを設定する
sudoユーザーを設定するために
usermod -G sudo curry
と入力して、Enterを押します。usermod(ユーザーモド)コマンドとは、ユーザー属性を変更するコマンドです。-G sudo curryはオプションで-Gはグループへユーザーを追加という意味です。sudoはグループ名で、curryは追加するユーザー名です。

確認のために
su curry
と入力して、Enterを押します。

sudo whoami
と入力して、Enterを押します。

root
のように出力があれば、成功です。一般ユーザーのcurryが、sudoできるようになりました。

Ubuntu22 python3を使う rootユーザーのログインを禁止する
vim /etc/ssh/sshd_config
と入力して、Enterを押します。

PermitRootLogin yes
の部分を変更して

#PermitRootLogin yes
PermitRootLogin no
と設定します。これでrootユーザーのログインが禁止されました。

Ubuntu22 python3を使う SSHポートを変更する
vim /etc/ssh/sshd_config
と入力して、Enterを押します。

#Port 22
の部分を変更して

#Port 22
Port 70000
と設定します。

sudo systemctl restart sshd
と入力して、Enterを押します。

ufw allow 70000/tcp
と入力して、Enterを押します。これでセキュリティの初期設定が完了しました。

Django python3 仮想環境を構築する

Ubuntu22 python3を使う pipパッケージをインストール

apt install python3-pip
と入力して、Enterを押します。aptコマンドの後ろにあるinstallはオプションで、パッケージを実際にインストールします。installオプションの後ろには、インストールしたいパッケージの名前が入ります。ここではpython3-pipパッケージを指定しています。

x upgraded, x newly installed, x to remove and x not upgraded.
のように出力されていれば、成功です。

Ubuntu22 python3を使う 仮想環境を構築する
python3で仮想環境を構築するために
apt install python3-venv
と入力して、Enterを押します。python3-venvパッケージをインストールします。

x upgraded, x newly installed, x to remove and x not upgraded.
のように出力されていれば、成功です。

cd /
と入力して、Enterを押します。cdコマンドとは、ディレクトリを移動するコマンドです。ここではmkdirコマンドの後ろにはディレクトリの名前を指定します。ここでは、/(バックスラッシュ)を入力して、rootディレクトリへ移動します。

mkdir pythonprj
と入力して、Enterを押します。mkdirコマンドとは、ディレクトリを新規作成するコマンドです。mkdirコマンドの後ろにはディレクトリの名前を指定します。ここでは、pythonprjという名前を指定しています。

確認のために
ls
と入力して、Enterを押します。lsコマンドは、ディレクトリとファイルを、一覧するコマンドです。

pythonprj
というディレクトリがあれば、成功です。無事にディレクトリが新規作成できています。

cd pythonprj
と入力して、Enterを押します。cdコマンドは、ディレクトリを移動するコマンドです。pythonprjディレクトリへ移動しました。

python3 -m venv ramen
と入力して、Enterを押します。python3 -mコマンドは、python3 scriptを実行するコマンドです。python3 -mコマンドの後ろには、実行したいscriptを指定します。ここでは、venvという名前を指定しています。

venvは仮想環境を作成するコマンドです。venvはの後ろには仮想環境の名前が入ります。ここではramenという名前を仮想環境の名前に指定しています。

Ubuntu22 python3を使う 仮想環境に入る
作成した仮想環境に入るために
source /pythonprj/ramen/bin/activate
と入力して、Enterを押します。sourceコマンドは、ファイルを実行するためのコマンドです。sourceコマンドの後ろにはファイルパスが入ります。ここでは/pythonprj/ramen/bin/activateをファイルパスとして指定しています。

(ramen)
という表示が、入力行の左側にあれば、成功です。仮想環境に入れました。

Ubuntu22 python3を使う 仮想環境から出る
仮想環境から出るために
deactivate
と入力して、Enterを押します。deactivateコマンドは、仮想環境から出るためのコマンドです。deactivateコマンドの後ろには、何も入力しなくて大丈夫です。

(ramen)
という表示が消えていれば、成功です。仮想環境から出られました。

Ubuntu22 python3を使う 解説
djangoプロジェクトを進めるに当たり、まずはpython3環境を整理しておきます。これによって後々でパッケージやバージョンの問題が起きないようにしておきます。

Django python3 djangoをインストール

Ubuntu22 python3 djangoをインストール:


仮想環境に入ってから
python -m pip install django
と入力して、Enterを押します。

Django python3 djangoのバージョンを確認:


django-admin --version
と入力して、Enterを押します。

4.x.x
のように出力されていれば、成功です。数字はdjangoのバージョンを意味します。

pillowをインストール:


python -m pip install Pillow

ImageFieldをdjangoで扱うためには、pythonパッケージのpillowが必要です。pillowはPIL(PIL Python Imaging Library)の1つで、pythonで画像処理を担当します。

Django python3 nginxをインストール

Ubuntu22 python3 nginxをインストール

apt install nginx
と入力して、Enterを押します。

nginxはhttpポートとhttpsのポートを、通信で使います。ポートを開くために
ufw allow 80
と入力して、Enterを押します。

ufw allow 443
と入力して、Enterを押します。

ufw status
と入力して、Enterを押します。

Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
のように出力されていれば、成功です。

これでnginxと通信できるようになりました。ブラウザを開いて、IPアドレスを打ち込むと、nginxの初期画面が表示されます。

Ubuntu22 python3 nginxを自動起動
systemctl enable nginx.service
と入力して、Enterを押します。systemctl enableは、自動起動を設定するコマンドです。systemctl enableの後ろには、自動起動したいサービスを指定します。ここではnginx.serviceを指定しています。

確認のために
systemctl status nginx.service
と入力して、Enterを押します。systemctl statusは、設定状態を確認するコマンドです。

● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-04-13 02:17:16 UTC; 58min ago
Docs: man:nginx(8)
Main PID: 2218 (nginx)
Tasks: 2 (limit: 1034)
Memory: 6.3M
CPU: 40ms
CGroup: /system.slice/nginx.service
tq2218 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
mq2221 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
のように出力されていれば、成功です。enabledという表示を確認してください。

Django python3 postgresをインストール

Ubuntu22 python3 postgresをインストール

apt install postgresql
と入力して、Enterを押します。postgresqlはデータベース用のアプリケーションです。

apt install libpq-dev
と入力して、Enterを押します。libpq-devはpythonに対応したライブラリです。

apt install postgresql-contrib
と入力して、Enterを押します。postgresql-contribはdjangoに対応したライブラリです。

Ubuntu22 python3 postgresの管理画面に入る
su - postgres
と入力して、Enterを押します。

画面の左側が
postgres@xxx
のように出力されていれば、成功です。/var/lib/postgresqlディレクトリへ、自動的に移動します。

psql
と入力して、Enterを押します。psqlでpostgresの管理画面に入ります。

画面の左側が
postgres=#
のように出力されていれば、成功です。

Ubuntu22 python3 postgresをdjango用に設定する
CREATE DATABASE djangodb;
と入力して、Enterを押します。

CREATE DATABASE
のように出力されていれば、成功です。

CREATE USER djangouser WITH PASSWORD 'curry';
と入力して、Enterを押します。

CREATE ROLE
のように出力されていれば、成功です。

ALTER ROLE djangouser SET client_encoding TO 'utf8';
ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
ALTER ROLE djangouser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
と入力して、Enterを押します。

ALTER ROLE
ALTER ROLE
ALTER ROLE
GRANT
のように出力されていれば、成功です。

Ubuntu22 python3 postgresの管理画面から出る
postgresの管理画面から出るためにctrl+zを押します。

Django python3 gunicornをインストール

Ubuntu22 python3 gunicornをインストール
仮想環境に入っていることを確認してから

pip install gunicorn
と入力して、Enterを押します。

apt install python3-dev
と入力して、Enterを押します。python3-devはpythonに対応したライブラリです。

pip install psycopg2-binary
と入力して、Enterを押します。psycopg2-binaryはpostgresに対応したライブラリです。

確認のために
pip freeze
と入力して、Enterを押します。pip freezeはpythonのパッケージを確認するコマンドです

gunicorn==xx.x.x
のように出力されていれば、成功です。

Django python3 projectを開始する

Ubuntu22 python3 Djangoプロジェクト用のディレクトリを作成する

cd /pythonprj
と入力して、Enterを押します。pythonprjディレクトリに入ります。

django-admin startproject pasta
と入力して、Enterを押します。django-admin startprojectで、必要なファイルを一括して新規作成できます。pastaはプロジェクトの名前です。好きな名前で大丈夫です。

新規作成したプロジェクトのファイル構成は
pasta
ー manage.py
ー pasta
ーー asgi.py
ーー __init__.py
ーー settings.py
ーー urls.py
ーー wsgi.py
となっています。

Ubuntu22 python3 Django ALLOWED_HOSTSを設定する
settings.pyファイルをVimで開いて、以下のように設定します。
ALLOWED_HOSTS = ['localhost','45.77.172.89']
ALLOWED_HOSTSはデフォルトでは[*]になっています。そこへlocalhostと自分のIPアドレスを設定します。ここでは45.77.172.89を指定していますが、開発者は自分のIPアドレスに置き換えてください。
ALLOWED_HOSTSはセキュリティ関連の設定で、django.http.HttpRequest.get_host()を制御します。

Ubuntu22 python3 Django データベースを設定する
djangoのデータベースにpostgresを指定します。settings.pyファイルをVimで開いて、以下のように設定します。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'djangodb',
'USER': 'djangouser',
'PASSWORD': 'curry',
'HOST': 'localhost',
'PORT': '5432',
 }
}
ENGINEはデフォルトではsqlite3になっているので、postgressに変更します。NAMEUSERPASSWORDの設定には、開発者は自分の設定内容に置き換えてください。

Ubuntu22 python3 Django staticを設定する
djangoのstatic file(スタティックファイル)の設定をします。settings.pyファイルをVimで開いて、以下のように設定します。
STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
static fileは、画像やjavascriptなどで、静的ファイルとも日本語訳されています。

Ubuntu22 python3 Django migrationする
djangoのmodelをデータベースに対応させるために
/pythonprj/pasta/manage.py makemigrations
と入力して、Enterを押します。

/pythonprj/pasta/manage.py migrate
と入力して、Enterを押します。

Apply all migrations:
のように出力されていれば、成功です。
Ubuntu22 python3 Django superuserを作成する
djangoにsuperuserを作成するために
/pythonprj/pasta/manage.py createsuperuser
と入力して、Enterを押します。

対話式でsuperuserを設定していき
Username (leave blank to use 'root'): tanmen
Email address: xxx@yyy.com
Password: nirareba
Password (again): nirareba
と入力して、Enterを押します。

Superuser created successfully.
のように出力されていれば、成功です。

Ubuntu22 python3 Django static file を集める
djangoのstatic fileを集めるために
/pythonprj/pasta/manage.py collectstatic
と入力して、Enterを押します。

xxx static files copied to '/pythonprj/pasta/static'.
のように出力されていれば、成功です。

Ubuntu22 python3 Django 通信用のポートを開く
djangoの通信用のポートを開くために
ufw allow 5432
と入力して、Enterを押します。
ufw allow 8000
と入力して、Enterを押します。
ufw status
と入力して、Enterを押します。

Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
5432 ALLOW Anywhere
8000 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
5432 (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
のように出力されていれば、成功です。

Ubuntu22 python3 Django ロケット画面を立ち上げる
djangoを起動するために
/pythonprj/pasta/manage.py runserver 0.0.0.0:8000
と入力して、Enterを押します。

ブラウザから
http://45.77.172.89:8000/
へアクセスします。ロケットが飛んでいる画面が表示されれば、成功です。djangoが起動しています。IPアドレスは45.77.172.89を指定していますが、開発者は自分のIPアドレスに置き換えてください。

ブラウザから
http://45.77.172.89:8000/admin
へアクセスします。djangoの管理画面が表示されれば、成功です。

ubuntuのターミナル画面に戻ってctrl+cを押します。これでdjangoの起動を停止できました。

Django python3 gunicornを設定する

Ubuntu22 python3 gunicornを設定する
ディレクトリを移動するために

cd /pythonprj/pasta
と入力して、Enterを押します。

gunicornを起動するために
gunicorn --bind 0.0.0.0:8000 pasta.wsgi
と入力して、Enterを押します。

ブラウザで
http://45.77.172.89:8000/admin
へアクセスします。djangoの管理画面が表示されれば、成功です。

/pythonprj/pasta/manage.py runserver 0.0.0.0:8000ではdjangoだけで起動しているので
とcssファイルが読み込みできています。

gunicorn --bind 0.0.0.0:8000 pasta.wsgiでは、gunicornを経由して起動しているのでcssファイルが読み込みでできていません。

ubuntuのターミナル画面に戻ってctrl+cを押します。これでgunicornの起動を停止できました。

Ubuntu22 python3 gunicorn socketを設定する
gunicornのsocketファイルを新規作成し、通信に対応して、gunicornが起動できるように設定します。
cd /etc/systemd/system
と入力して、Enterを押します。

vim gunicorn.socket
と入力して、Enterを押します。以下の内容を記述して、保存します。

[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target
socketファイルが新規作成できました。

Ubuntu22 python3 gunicorn serviceを設定する
vim gunicorn.service
と入力して、Enterを押します。以下の内容を記述して、保存します。

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/pythonprj/pasta
ExecStart=/pythonprj/ramen/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
pasta.wsgi:application

[Install]
WantedBy=multi-user.target
serviceファイルが新規作成できました。

Ubuntu22 python3 gunicorn 自動起動を設定する
systemctl start gunicorn.socket
と入力して、Enterを押します。

file /run/gunicorn.sock
と入力して、Enterを押します。

/run/gunicorn.sock: socket
のように出力されていれば、成功です。

systemctl enable gunicorn.socket
と入力して、Enterを押します。

systemctl status gunicorn.socket
と入力して、Enterを押します。

/etc/systemd/system/gunicorn.socket; enabled;
のように出力されていれば、成功です。

systemctl restart gunicorn
と入力して、Enterを押します。

systemctl enable gunicorn
と入力して、Enterを押します。

systemctl status gunicorn
と入力して、Enterを押します。

/etc/systemd/system/gunicorn.service; enabled;
のように出力されていれば、成功です。

curl --unix-socket /run/gunicorn.sock localhost
と入力して、Enterを押します。htmlの出力があれば、成功です。

systemctl daemon-reload
と入力して、Enterを押します。これでguicornの自動起動が設定できました。

guicorの動作記録は
journalctl -u gunicorn
journalctl -u gunicorn.socket
で確認できます。

Django python3 nginxを設定する

Ubuntu22 python3 nginxを設定する:


nginxの設定ファイルを新規作成するために
cd /etc/nginx/sites-available
と入力して、Enterを押します。

vim pasta
と入力して、Enterを押します。以下の内容を記述して、保存します。

server {

listen 80;
server_name 45.77.172.89;
location = /favicon.ico { access_log off; log_not_found off; }

location /static/ {
root /var/www/;
autoindex on;
}

location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
nginxの設定ファイルが新規作成できました。

serverは80番ポートにlistenするように設定します。ドメイン名やIPアドレスも設定できます。
locationの1つ目は、staticファイルの場所を指定します。
locationの2つ目は、Gunicorn socketへのパスを指定します。

シンボリックリンクを作成するために
ln -s /etc/nginx/sites-available/pasta /etc/nginx/sites-enabled
と入力して、Enterを押します。

動作確認のために
nginx -t
と入力して、Enterを押します。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
のように出力されていれば、成功です。

nginxの設定を更新するために
systemctl restart nginx
と入力して、Enterを押します。

nginx用のポートを解放するために
ufw allow 'Nginx Full'
と入力して、Enterを押します。

systemctl daemon-reload
と入力して、Enterを押します。これでnginxの設定できました。

nginxの動作記録は
journalctl -u nginx
で確認できます。

Django python3 ドメインを設定する

Ubuntu22 python3 ドメインを購入する
IPアドレスをドメインに対応させるために、まずドメインを購入します。ここではtokyo-sensei.comというドメインを指定しました。

Ubuntu22 python3 nginxを設定する
nginxの設定ファイルを変更するために

vim /etc/nginx/sites-available/pasta
と入力して、Enterを押します。

以下のように設定ファイルを変更します。
listen 80;
server_name 45.77.172.89 tokyo-sensei.com www.tokyo-sensei.com
;
location = /favicon.ico { access_log off; log_not_found off; }

location /static/ {
root /pythonprj/pasta;
}
server_nameにtokyo-sensei.comとwww.tokyo-sensei.comを追加します。

動作確認のために
nginx -t
と入力して、Enterを押します。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
のように出力されていれば、成功です。

Ubuntu22 python3 djangoを設定する
djangoの設定ファイルを変更するために
vim /pythonprj/pasta/pasta/settings.py
と入力して、Enterを押します。

以下のように設定ファイルを変更します。
ALLOWED_HOSTS = ['localhost','45.77.172.89','tokyo-sensei.com','www.tokyo-sensei.com']
ALLOWED_HOSTS にtokyo-sensei.comとwww.tokyo-sensei.comを追加します。

systemctl restart gunicorn
systemctl restart nginx
systemctl daemon-reload
と入力して、Enterを押します。これで設定変更が反映されました。

Django python3 SSL/TLSを設定する

Ubuntu22 python3 certbotをダウンロードする
SSL/TLS用のcertbotを使うために

apt install certbot
と入力して、Enterを押します。

確認のために
certbot --help
と入力して、Enterを押します。help画面が出力されれば、無事にインストールされています。

Ubuntu22 python3 certbotを設定する
設定用のパッケージをダウンロードするために
apt install certbot python3-certbot-nginx
と入力して、Enterを押します。

certbot --nginx -d tokyo-sensei.com -d www.tokyo-sensei.com
と入力して、Enterを押します。certbotが自動的にSSL/TLSを設定しました。http接続からhttps接続に切替ができます。80番ポートと443番ポートの確認もしておきましょう。

Ubuntu22 python3 certbotを自動更新する
certbotは初期設定とともに、自動更新も合わせて設定してくれます。自動更新の設定を見るために
systemctl status certbot.timer
と入力して、Enterを押します。certbotが自動更新になっていることが確認できます。

実際に更新できるかどうかを確認するために
certbot renew --dry-run
と入力して、Enterを押します。certbotが自動更新になっていることが確認できます。

Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/tokyo-sensei.com/fullchain.pem (success)
と出力されれば、成功です。

Django python3 githubの管理を設定する

githubのアカウントを登録する:


githubに登録しemailnameを記録します。

githubに、django管理用の新規リポジトリを作成します。ここではsenseiというレポジトリを作成します。

サーバーのローカルリポジトリをプッシュする:


cd /pythonprj/pasta
と入力して、Enterを押します。

git pushをするために
git init
git config --global user.email xxx@gmail.com
git config --global user.name tokyo-teachergit
git config --list
git add -A
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/xxx/sensei.git
git push -u origin main
と入力して、Enterを押します。emailnamehttps://github.com/xxx/sensei.gitは、開発者が自分で設定したものを入力してください。

これでdjangoプロジェクトをgithubで管理できるようになりました。

エラー root環境にdjangoがインストールされる

問題djangoがrootユーザー環境にインストールされてしまい、pythonのvenv環境にdjangoがインストールされない。
解決方法仮想環境に入ってから

pip freeze
と入力して、Enterを押します。djangoが表示されていなければ、djangoはvenv環境にインストールされていません。

仮想環境を出て
pip freeze
と入力して、Enterを押します。djangoが表示されていれば、djangoはroot環境へインストールされています。

djangoのインストールに
apt install python3-django
のようなaptを使うと、djangoはroot環境へインストールされます。

djangoのインストールに
python -m pip install django
のようなpipを使うと、djangoはvenv環境へインストールされます。

aptはubuntuOSのためのインストールコマンドで、pipはpythonのためのインストールコマンドです。

エラー CSSが読み込まれない

問題:


https://tokyo-sensei.com/static/site/normalize.css #読み込まれる
https://tokyo-sensei.com/static/articles/data.css #読み込まれない

解決方法:

NGINXの設定によって、STATICファイルの整理をして解決した。
#nginx
cd /etc/nginx/sites-available
cp pasta pastacp #更新前にコピー
rm pasta #ファイル消去

vim /etc/nginx/sites-available/pasta
nginx -t #動作検証
systemctl restart nginx
sudo systemctl restart gunicorn
systemctl daemon-reload
curl -I https://tokyo-sensei.com/ #サイト状態の確認

#nginx error log
/var/log/nginx/error.log.1 #Location of log files
tail error.log
tail /var/log/nginx/error.log

#設定ファイル
location /static/ {
root /pythonprj/pasta;
}
#変更前 sitesのcssのみ読み込み
location /static/ {
root /pythonprj/pasta;
autoindex on;
}
#失敗
location /static/ {
root /var/www/static;
autoindex on;
}
#これで成功した
location /static/ {
root /var/www/;
autoindex on;
}

解決方法:

Nginxのアクセスファイルのwww-dataのパーミッションを確認する。
#File Permission check
chmod 755 static #change access permission
chgrp www-data static #change group permission
#Before /var/www/ 
drwxr-xr-x 2 root root 4096 Jan 19 03:17 html
drwxr-xr-x 3 root www-data 4096 Jan 20 00:01 media
drwxrwxrwx 7 root root 4096 Jan 20 02:53 static
#After /var/www/
drwxr-xr-x 2 root root 4096 Jan 19 03:17 html
drwxr-xr-x 3 root www-data 4096 Jan 20 00:01 media
drwxr-xr-x 7 root www-data 4096 Jan 20 02:53 static
#Definition
www-data is the user that web servers on Ubuntu (Apache, nginx, for example) use by default for normal operation. The web server process can access any file that www-data can access. It has no other importance.

エラー Nginxしか表示されない

問題Nginxのページが表示され、プロキシ先のdjangoが表示されない。
解決方法

cd /etc/nginx/sites-available
の設定がうまくいっていません。

エラー 502 Bad Gatewayが表示される

問題502 Bad Gatewayた表示され、djangoが表示されない。
解決方法

cd /var/log/nginx
に、エラー原因が出力されている場合があります。
tail /var/log/nginx/error.log
less /var/log/nginx/access.log
などのコマンドで見れます。

エラー certbotが自動設定に失敗する

問題djangoでcertbotを自動設定しようとする、下記のようなエラーが出て、失敗する。

Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems:
Domain: tokyo-sensei.com
Type: serverInternal
Detail: Could not communicate with VA

Domain: www.tokyo-sensei.com
Type: serverInternal
Detail: Could not communicate with VA

Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.

Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

vim /var/log/letsencrypt/letsencrypt.log

解決方法いくかの可能性が考えられますが、nginxをデフォルト設定に戻してから、certbotを自動設定すると、成功する場合があります。
自動設定が終わってから、nginxの設定をして方がよいでしょう。

Django Ubuntu22 python3 探究資料

科目別 By Curriculum


大学受験  情報科学(Computer science)

単元別 By Subject


情報科学  プログラミング(Programming)
情報科学  パイソン (Python)
情報科学  ウェブ(Web)
情報科学  ウィンドウズ (Windows)
情報科学  リナックス (Linux)
情報科学  ギットハブ (Github)
情報科学  ジャンゴ (Django)

対象児童生徒 By Age


中学数学(二次関数まで!)を履修し終えている生徒
コンピューターの基礎知識を学びたい生徒
自分でプログラム(program)を書きたい生徒
情報科学(Computer Science)を学びたい生徒
大学受験生(国公立高校生+私立中高一貫校生)
大学生+社会人(基礎からやり直したい生徒)


プロ家庭教師コンピューター教材で、重要語句の日本語訳・韓中英訳・別名・解説をまとめています。オンライン学習用で、生徒・保護者・教員・家庭教師のために、無料ダウンロードを提供します。

スポンサーさん