CentOS 7
へ Django
を利用した、ファイルアップロード機能を持つ 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'
最後に
Django
や Python
はまだまだ日本語の情報が少なく、対処法を探すのにかなり苦労しました。引き続き Python
や Django
で開発していく上でのハマりどころや便利機能など色々調べていきたいと思います。
コメント