###前提・実現したいこと
現在制作したDjangoアプリの初めてのデプロイ作業中です。
環境は下記の通りです。
さくらVPS
centos7
Apache/2.4.6
mod_wsgi
MySQL5.7.19
PyMySQL0.7.9
Django 1.11
python 3.6.2
関連ファイルは下記の通りです。
♯/etc/httpd/conf.d/python.conf LoadModule wsgi_module modules/mod_wsgi.so WSGIScriptAlias / /var/www/cgi-bin/mysite/mysite/wsgi.py <Directory /var/www/cgi-bin/mysite/mysite> Order deny,allow Allow from all </Directory>
#/cgi-bin/mysite/mysite/wsgi.py import os import site import sys import pymysql pymysql.install_as_MySQLdb() site.addsitedir("/usr/lib/python3.6/site-packages") sys.path.append('/var/www/cgi-bin/lib/python3.6/site-packages') sys.path.append('/var/www/cgi-bin/mysite') sys.path.append('/var/www/cgi-bin/mysite/mysite') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") activate_env = os.path.expanduser("/var/www/cgi-bin/bin/activate_this.py") execfile(activate_env, dict(__file__=activate_env)) from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
###発生している問題・エラーメッセージ
ローカル環境ではsqlite3を使っていたのですが、本番環境ではMySQLに変更しました。
python manage.py migrateでDBに反映させるところまではできたのですが、ブラウザを確認してみるとInternal Server Errorが。。
logを確認したところ、下記のメッセージが出ておりました。
#error_log [Fri Sep 29 19:04:10.964582 2017] [:error] [pid 982] [client 175.41.103.183:49888] mod_wsgi (pid=982): Target WSGI script '/var/www/cgi-bin/mysite/mysite/wsgi.py' cannot be loaded as Python module. [Fri Sep 29 19:04:10.964625 2017] [:error] [pid 982] [client 175.41.103.183:49888] mod_wsgi (pid=982): Exception occurred processing WSGI script '/var/www/cgi-bin/mysite/mysite/wsgi.py'. [Fri Sep 29 19:04:10.964642 2017] [:error] [pid 982] [client 175.41.103.183:49888] Traceback (most recent call last): [Fri Sep 29 19:04:10.964661 2017] [:error] [pid 982] [client 175.41.103.183:49888] File "/var/www/cgi-bin/mysite/mysite/wsgi.py", line 12, in <module> [Fri Sep 29 19:04:10.964711 2017] [:error] [pid 982] [client 175.41.103.183:49888] import pymysql [Fri Sep 29 19:04:10.964739 2017] [:error] [pid 982] [client 175.41.103.183:49888] ImportError: No module named pymysql [Fri Sep 29 19:15:42.140527 2017] [:error] [pid 979] [client 175.41.103.183:49993] mod_wsgi (pid=979): Target WSGI script '/var/www/cgi-bin/mysite/mysite/wsgi.py' cannot be loaded as Python module. [Fri Sep 29 19:15:42.140571 2017] [:error] [pid 979] [client 175.41.103.183:49993] mod_wsgi (pid=979): Exception occurred processing WSGI script '/var/www/cgi-bin/mysite/mysite/wsgi.py'. [Fri Sep 29 19:15:42.140598 2017] [:error] [pid 979] [client 175.41.103.183:49993] Traceback (most recent call last): [Fri Sep 29 19:15:42.140619 2017] [:error] [pid 979] [client 175.41.103.183:49993] File "/var/www/cgi-bin/mysite/mysite/wsgi.py", line 12, in <module> [Fri Sep 29 19:15:42.140671 2017] [:error] [pid 979] [client 175.41.103.183:49993] import pymysql [Fri Sep 29 19:15:42.140687 2017] [:error] [pid 979] [client 175.41.103.183:49993] ImportError: No module named pymysql
このエラーは非常に晴天の霹靂でした。というのも、
一つ上の階層にあるmanage.py(/cgi-bin/mysite/manage.py)においても同じようにpymysqlをインポートするのですが、そちらは正常に動いていたからです。(なのでmigrateも上手くいったのだと思います。)
またshellからimport pymysqlを試してみても正常にインポートできるので、インストールが上手くいっていないということは無いと思います。
色々と調べてはいるのですが答えが出そうもないのでこちらにて投稿させて頂きました。
何卒ご教示のほど宜しくお願い致します。
##追記
#manage.py #!/usr/bin/env python import os import sys import pymysql pymysql.install_as_MySQLdb() if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") try: from django.core.management import execute_from_command_line except ImportError: # The above import may fail for some other reason. Ensure that the # issue is really that Django is missing to avoid masking other # exceptions on Python 2. try: import django except ImportError: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) raise execute_from_command_line(sys.argv)
回答1件
あなたの回答
tips
プレビュー