ブログBLOG

\ Web・ゲーム開発に関する情報を発信中 /

【Apache】DjangoでNo module named 'encodings'エラーが出た時に確認すべきポイント

サーバー構築
django , python , apache
20230315_apache-no-module-named-encodings-tmb

ご覧いただきありがとうございます!
領護(りょうご)です。

この記事では、Python × Djangoで作成したサイトをApacheを使ってデプロイする時に出る、No module named 'encodings'エラーの確認すべきポイントを解説します。

目次

実行環境

Ubuntu・・・20.04.4 LTS
Apache2・・・2.4.41
Python・・・3.8.10
Django・・・3.2.12

Pythonのパーミッション権限は許可できているか

pipenvやvenvなどで仮想環境を作成してデプロイした時、Pythonのパーミッション権限が許可できているか確認します。

仮想環境の作成

今回は、/home/[ユーザー名]/test_webにpipenvを使用して仮想環境を作成します。
[ユーザー名]には、サーバーでログイン中のユーザー名が入ります。

cd /home/[ユーザー名]/test_web
pipenv --python 3

下記の内容が表示されると仮想環境の作成が完了です。

? Successfully created virtual environment!
Virtualenv location: /home/[ユーザー名]/.local/share/virtualenvs/test_web-_pb-mKqO
Creating a Pipfile for this project...


確認方法

仮想環境の作成が完了したら、パーミッション権限が下記のように設定されているか確認します。

パーミッション権限を確認する

ls -l

各フォルダのパーミッション権限設定
(755)drwxr-xr-x /home/
(755)drwxr-xr-x /home/[ユーザー名]/
(775)drwxrwxr-x /home/[ユーザー名]/.local/share/virtualenvs/test_web-_pb-mKqO

パーミッション権限変更

パーミッション権限が正しく設定できていない場合は、下記のコードでパーミッション権限を変更します。

各フォルダのパーミッション権限を変更

sudo chmod -R 755 /home
sudo chmod -R 755 /home/[ユーザー名]
sudo chmod -R 775 /home/[ユーザー名]/.local/share/virtualenvs/test_web-_pb-mKqO

Apache2のconfファイルに全角を使っていないか

Apache2のconfファイルに全角を使うとエラーになるので確認します。

Apache2のconfファイルを開く
[設定ファイル名]には、ご自身で作成したApache2の設定ファイル名が入ります。

sudo nano /etc/apache2/sites-available/[設定ファイル名].conf
20230315_apache-01

赤枠のインデント部分が全角やタブになっていることがよくあります。
全角入力になっている場合は、半角入力に修正します。

DBのSQLiteの書き込み権限は許可できているか

DBにDjango標準のSQLiteを使用する時は、SQLiteファイルのパーミッション権限が書き込み可になっているか確認します。

確認方法

パーミッション権限を確認する

cd /home/[ユーザー名]/test_web/test_project
ls -l

SQLiteのパーミッション権限設定
(777)-rwxrwxrwx /home/[ユーザー名]/test_web/test_project/db.sqlite3

パーミッション権限変更

パーミッション権限が正しく設定できていない場合は、下記のコードでパーミッション権限を変更します。

SQLiteのパーミッション権限を777に変更

sudo chmod 777 /home/[ユーザー名]/test_web/test_project/db.sqlite3

最後に

今回ご紹介した内容は、個人的によくハマってしまうポイントを書きました。
皆さんの助けになれば幸いです!


\ よかったらシェアしてね /

関連記事