Django Logo

[Django]CentOS へファイルアップロード機能を持つシステムを構築する際の注意点3つ

CentOS 7Django を利用した、ファイルアップロード機能を持つ Web アプリケーションを構築した時に、文字コードとかファイルアクセスの問題とかで色々つまづいたので、備忘録として対処方法をまとめておきます。

前提条件

サーバの情報は下記の通りです。

  • CentOS Linux release 7.4.1708 (Core)
  • Apache/2.4.6 (CentOS)
  • Python 3.6.4 :: Anaconda, Inc.
  • Django 2.0.4

Shift_JIS のファイルを読み込む際の文字コードの設定

ファイルを開いた際にエンコードを指定するのですが、通常の「 shift_jis 」を指定しても正常に動作しませんでした。エンコードに利用する文字コードは「 shift_jisx0213 」を指定する必要があります。

with open(file.path, 'r', encoding='shift_jisx0213') as file:
   ...

ファイルをアップロードするディレクトリの権限設定

ファイルのアップロードや読み取りを行うディレクトリのアクセス権を Apache が読み込み/書き込みができる状態にしておく必要があります。

$ sudo chown apache:apache /var/uploads
$ sudo chmod 755 /var/uploads

ファイル名に日本語(全角文字)が含まれているファイルをアップロードするための設定

Apache が日本語ファイルを問題なく処理できるように「 /etc/sysconfig/httpd 」に文字コードの設定を行います。

$ sudo vim /etc/sysconfig/httpd

LANG='ja_JP.UTF-8'

最後に

DjangoPython はまだまだ日本語の情報が少なく、対処法を探すのにかなり苦労しました。引き続き PythonDjango で開発していく上でのハマりどころや便利機能など色々調べていきたいと思います。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です