簡體   English   中英

使用Django 1.6.5配置Apache服務器

[英]Configuring Apache Server with Django 1.6.5

我有一台安裝有Apache2,mod_wsgi和Django的EC2服務器。 該服務器同時安裝了python 2.7和3.4,並隨Ubuntu操作系統14.04一起提供。

我有正確配置的virtualenvwrapper指向Python 3.4,這是要用於Web服務器的目標python版本。

問題是當嘗試訪問django項目時,瀏覽器顯示500內部服務器錯誤。 錯誤日志還指示正在使用Python 2.7而不是3.4

Django專案wsgi.py

導入系統
導入操作系統
進口網站

site.addsitedir( '家/用戶名/ .virtualenvs / MyProject的/ lib目錄/ python3.4 /站點包')

sys.path.append( '/家庭/用戶名/ myproject的/ myproject的')
os.environ.setdefault(“ DJANGO_SETTINGS_MODULE”,“ myproject.settings”)

#激活您的虛擬環境
activate_env = os.path.expanduser( “〜/ .virtualenvs / myproject的/ bin中/ activate_this.py”)
execfile(activate_env,dict(__ file __ = activate_env))

#with open(activate_env)as f:
#代碼=編譯(f.read(),activate_env,'exec')
#exec(代碼,dict(__ file __ = activate_env))

從django.core.wsgi導入get_wsgi_application
應用程序= get_wsgi_application()

/etc/apache2/sites-enabled/000-default.conf:

    WSGIScriptAlias /domain1 /home/userid/myproject/myproject/myproject/wsgi.py
    WSGIDaemonProcess domain1 user=userid
    <Directory /home/userid/myproject/myproject/myproject>
      WSGIProcessGroup domain1
      Options All
      AllowOverride All
      Require all granted
    </Directory>

輸出: (env1) $ ~/myproject/myproject$ pip3 freeze

Django==1.6.5
djangorestframework==2.3.13

apache2錯誤日志:

[2014年6月17日星期二19:16:34.990478] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] mod_wsgi(pid = 789):處理WSGI腳本'/ home / userid / myproject /時發生異常的myproject / myproject的/ wsgi.py”。
[2014年6月17日星期二19:16:34.990567] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]追溯(最近一次撥打電話):
[2014年6月17日星期二19:16:34.990601] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/core /handlers/wsgi.py”,線路206, 呼叫
[2014年6月17日星期二19:16:34.990650] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] response = self.get_response(request)
[2014年6月17日星期二19:16:34.990674] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/core /handlers/base.py“,第194行,位於get_response中
[2014年6月17日星期二19:16:34.990711] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] response = self.handle_uncaught_exception(request,resolver,sys.exc_info())
[2014年6月17日星期二19:16:34.990734] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/core /handlers/base.py”,在handle_uncaught_exception中的第229行
[2014年6月17日星期二19:16:34.990769 2014] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] return debug.technical_500_response(request,* exc_info)[2014年6月17日星期二19:16:34.990792792 ] [:error] [pid 789:tid 139997025199872] [remote 205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/views/debug.py”,第69行,在technical_500_response
[2014年6月17日星期二19:16:34.990827] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] html = Reporter.get_traceback_html()
[2014年6月17日星期二19:16:34.990850] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/views /debug.py”,第324行,位於get_traceback_html中
[2014年6月17日星期二19:16:34.990883] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]返回t.render(c)
[2014年6月17日星期二19:16:34.990906906] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/template /base.py”,第140行,在渲染中
[2014年6月17日星期二19:16:34.990941] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]返回self._render(上下文)
[2014年6月17日星期二19:16:34.990963] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/template /base.py”,第134行,在_render中
[2014年6月17日星期二19:16:34.991018] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]返回self.nodelist.render(context)
[2014年6月17日星期二19:16:34.991042] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/template /base.py”,第840行,在渲染中
[2014年6月17日星期二19:16:34.991076] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]位= self.render_node(節點,上下文)
[2014年6月17日星期二19:16:34.991099] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/template /debug.py”,第78行,在render_node中
[2014年6月17日星期二19:16:34.991133] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]返回node.render(上下文)[2014年6月17日星期二19:16:34.991155] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/template/debug.py”,第88行,在渲染中
[2014年6月17日星期二19:16:34.991189] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]輸出= self.filter_expression.resolve(context)[2014年6月17日星期二19:16:34.991211 ] [:error] [pid 789:tid 139997025199872] [remote 205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/template/base.py”,行613,在解決
[2014年6月17日星期二19:16:34.991245] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] new_obj = func(obj,* arg_vals)
[2014年6月17日星期二19:16:34.991267] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/template /defaultfilters.py”,日期為705行
[2014年6月17日星期二19:16:34.991301] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]返回格式(值,參數)
[2014年6月17日星期二19:16:34.991323] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils /dateformat.py”,第312行,格式為
[2014年6月17日星期二19:16:34.991357] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]返回df.format(format_string)
[2014年6月17日星期二19:16:34.991380] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils /dateformat.py”,第35行,格式為
[2014年6月17日星期二19:16:34.991413] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] Pieces.append(force_text(getattr(self,piece)()))[2月17日星期二19:16:34.991435 2014] [:error] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils/dateformat.py “,在r中的第216行
[2014年6月17日星期二19:16:34.991469] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] return self.format('D,j MYH:i:s O')[周二六月17 19:16:34.991491 2014] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils/dateformat。 py”,第35行,格式為
[2014年6月17日星期二19:16:34.991523] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]pieces.append(force_text(getattr(self,piece)()))[6月17日星期二19:16:34.991546 2014] [:error] [pid 789:tid 139997025199872] [remote 205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils/encoding.py “,第100行,在force_text中
[2014年6月17日星期二19:16:34.991580] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] s = s .__ unicode __()[2014年6月17日星期二19:16:34.991602] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils/functional.py”,第138行,位於__text_cast
[2014年6月17日星期二19:16:34.991635] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] return func(* self .__ args,** self .__ kw)
[2014年6月17日星期二19:16:34.991658] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils /translation/__init__.py”,第76行,以ugettext
[2014年6月17日星期二19:16:34.991705] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] return _trans.ugettext(message)
[2014年6月17日星期二19:16:34.991729] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils /translation/trans_real.py”,第281行,以ugettext
[2014年6月17日星期二19:16:34.991764] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] return do_translate(message,'ugettext')
[2014年6月17日星期二19:16:34.991787] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils /translation/trans_real.py”,第263行,在do_translate中
[2014年6月17日星期二19:16:34.991820] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] _default = translation(settings.LANGUAGE_CODE)
[2014年6月17日星期二19:16:34.991843] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils /translation/trans_real.py”,第177行,翻譯中
[2014年6月17日星期二19:16:34.991877 2014] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] default_translation = _fetch(settings.LANGUAGE_CODE)[2014年6月17日星期二19:16:34.991899] [ :error] [pid 789:tid 139997025199872] [remote 205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py”,行159,在_取
[2014年6月17日星期二19:16:34.991932] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] app = import_module(appname)
[2014年6月17日星期二19:16:34.991955] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049]文件“ /usr/local/lib/python2.7/dist-packages/django/utils /importlib.py”,第40行,在import_module中
[2014年6月17日星期二19:16:34.991988] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] / import (name)
[2014年6月17日星期二19:16:34.992020] [:錯誤] [pid 789:tid 139997025199872] [遠程205.250.126.130:28049] ImportError:沒有名為rest_framework的模塊

這是我第一次嘗試使用這些工具來設置服務器,因此即使在Internet上搜索並在線查找其他教程之后,我也不知道問題出在哪里。

更新:設置WSGIPythonHome(感謝yuvl )后,我發現我的mod_wsgi可能配置為python 2.7。

[2014年6月18日,星期三05:08:31.960637] [mpm_event:notice] [pid 1828:tid 140269602740096] AH00491:捕獲了SIGTERM,正在關閉
[2014年6月18日星期三05:08:33.243412] [mpm_event:notice] [pid 2168:tid 140466175211392] AH00489:配置了Apache / 2.4.7(Ubuntu)mod_wsgi / 3.4 Python / 2.7.6-恢復正常操作
[2014年6月18日星期三05:08:33.243753] [core:notice] [pid 2168:tid 140466175211392] AH00094:命令行:'/ usr / sbin / apache2'
ImportError:沒有名為站點的模塊

所以我繼續使用以下命令重新安裝mod_wsgi

sudo apt-get build-dep libapache2-mod-wsgi 
sudo a2enmod wsgi

但是現在這是說apache無法加載wsgi:

$ sudo /etc/init.d/apache2 restart *重新啟動Web服務器apache2 [失敗]
* apache2 configtest失敗。
配置測試的輸出為:
apache2:/etc/apache2/apache2.conf的第140行的語法錯誤:/etc/apache2/mods-enabled/wsgi.load的第1行的語法錯誤:無法加載/usr/lib/apache2/modules/mod_wsgi.so進入服務器:/usr/lib/apache2/modules/mod_wsgi.so:無法打開共享對象文件:沒有這樣的文件或目錄
動作“ configtest”失敗。
Apache錯誤日志可能包含更多信息。

Apache錯誤日志:

$ tail -f /var/log/apache2/error.log
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
ImportError:沒有名為站點的模塊
[2014年6月18日星期三05:25:14.759140] [mpm_event:notice] [pid 2168:tid 140466175211392] AH00491:捕獲了SIGTERM,正在關閉

關於如何解決此問題,有什么建議嗎?

發布更新后,我還按照本教程本教程嘗試重新安裝mod_wsgi,但仍然遇到相同的失敗。 Apache不了解mod_wsgi。

預先感謝您的幫助!

如果您使用的不是系統python版本,則也需要告訴它也要使用apache。 只需設置WSGIPythonHome指令,如下所示:

 WSGIPythonHome /path/to/virtualenv

此外,如果仍然無法解決問題,請確保您的mod_wsgi是針對python 3.4而不是2.7編譯的(此外,出於安全原因,請確保使用3.5或更高版本

就我而言,我只是手動停止啟動我的apache2,一切對我來說都是正常的
但是為了永久解決
關注Apache服務器不斷崩潰,“捕獲了SIGTERM,正在關閉”
並通過以下鏈接編輯deploy.sh文件指南中的某些條目
http://httpd.apache.org/docs/2.2/stopping.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM