在Centos 5上使用mod_wsgi和apache将Django App挂接到子目录

时间:2016-08-16 18:39:13

标签: python django apache wsgi

背景:

我正致力于为我的办公室生产Django应用程序。到目前为止,该应用程序已经开发并运行,所有需要完成的工作是部署所述应用程序。遗憾的是,这项任务比开发应用程序本身更麻烦。我正在使用Apache 2.2,mod_wsgi 3.3以及virtualenv中的Python 2.7和Django 1.9开发Centos 5.11服务器。

问题

我遇到的问题是将Django应用程序挂钩到我的域的子目录(www.abc.example.com/FR/)但是我在配置apache的httpd.conf时遇到了问题,我添加的设置似乎没有得救我根据httpd.conf的注释运行了以下命令,确保在重新启动时保存更改:

/usr/local/cpanel/bin/apache_conf_distiller --update 
/usr/local/cpanel/bin/build_apache_conf

我使用的指南引导我使用以下代码: *请注意'〜'代表/ home / [用户名]

的httpd.conf

LoadModule wsgi_module extramodules/mod_wsgi.so

...

WSGIScriptAlias /FR ~/public_html/FR/django.wsgi
WSGIPythonPath ~/public_html/FR

<Directory ~/mydjango/IFTP>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
〜/ public_html / FR / django.wsgi

django.wsgi

import os
import sys

sys.path.append('~/mydjango')
sys.path.append('~/mydjango/IFTP')

os.environ['DJANGO_SETTINGS_MODULE'] = 'IFTP.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
〜/ mydjango / IFTP / wsgi.py

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "IFTP.settings")

application = get_wsgi_application()

编辑1:

道歉,我应该进一步指出问题是这些设置没有生效。当我访问www.abc.example.com/FR/时遇到404未找到,因此wsgi脚本配置错误或设置不正确,这是我需要帮助的地方。

1 个答案:

答案 0 :(得分:0)

搜索后我发现问题出在django.wsgi文件中,提供了一个不必要的额外层。我将我的httpd.conf文件更改为下面的代码,进一步指定了virtualenv的路径并链接到wsgi.py文件。

# -*- coding: utf-8 -*-

from kivy.app import App
#kivy.require("1.8.0")
from kivy.uix.label import Label
from kivy.uix.widget import Widget

from kivy.lang import Builder
import kivy.resources

#kivy.resources.resource_add_path(r'/home/kivy/android/android-sdk-linux/platforms/android-18/data/fonts')
kivy.resources.resource_add_path('C:\Windows\Fonts')

import os.path

Builder.load_string('''
<Label>:
    font_name: 'AdobeGothicStd-Bold.otf'

<Widgets>:
    Label:
        text: "ABC ÄäÜüß にほんご 中文 ру́сский язы́к ÉéÈèÊêËë Españolالعَرَبِيَّة‎ ‎français"
        size: root.width, 75
        pos: root.x, root.top - 150
        font_size: 50
        height: 75
''')

class Widgets(Widget):
    def build(self):
        return Widgets()

class MyApp(App):
    def build(self):
        return Widgets()

if __name__ == "__main__":
    MyApp().run()