質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3359閲覧

manage.py runserverでは問題ないが、nginx+Gunicornでは、UnicodeEncodeErrorになる

退会済みユーザー

退会済みユーザー

総合スコア0

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

3グッド

3クリップ

投稿2016/11/05 05:47

編集2016/11/05 06:42

VPS上でDjangoのアプリを公開しています。

サーバーのOS:Ubuntu 16.04.1 LTS
Pythonのバージョン:3.5.2
Djangoのバージョン:1.10.3

nginxとgunicornで起動しており、今まで問題なく動いていました。

しかし、今日、色々修正を加えていたところ、
UnicodeEncodeError
'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
というエラーが生じてしまいました。
(通常はDEBUG=FALSE にしていますが、原因を見るため、TRUEにしました。)

なお、python manage.py runserverにすると、起動しました。
が、しばらく経って見てみると、
502 Bad Gateway
となってしまいました。

どのような原因が考えられるでしょうか。
お分かりの方、ご教示頂ければ幸いです。

よろしくお願いいたします。

av-, Youhei-Sakura, etetetetetetete👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

明らかに環境の違いから来るエンコードの違いによるエラーだけど。
似たような状況の海外のHPから。
Django, nginx, gunicorn,supervisor: UnicodeEncodeError - when uploading non-latin named file
詳細な環境が分からないので、要約するとsupervisor environmentを’/etc/supervisor/supervisord.conf’の

[supervisord] environment=LANG="ru_RU.utf8", LC_LANG="ru_RU.UTF-8", LC_ALL="ru_RU.UTF-8" logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)

で再起動して反映させてみるような内容。
まあ環境が微妙に違うかも。

投稿2016/11/05 07:07

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/05 23:50

ご回答頂き、ありがとうございます。 原因が分かりました。 元々Python2系で作成していたのですが、手元の開発環境では、python3で作り直したことが原因でした。 models.pyの def __str__(self): return self.name の __str__ となっているところを、 Python2用に__unicode__にしたら直りました。 python manage.py runserverで起動する場合は、Python3で動いてくれるようでしたが、 gunicorn -w 1 -b 127.0.0.1:8000 example.wsgi でアプリを起動する場合は、Python2で起動してしまうようでした。 これについては、改めて別の質問をさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問