Linux环境下Django App部署到XAMPP上


mod_wsgi的gitgub上下载源码安装包
  • 解压缩:tar xvfz mod_wsgi-X.Y.tar.gz,然后cd mod_wsgi-X.Y
  • 进行配置:./configure --with-apxs=/opt/lampp/bin/apxs
  • make,其中有两个坑:
    • 找不到PERL库
      【解决方法】修改apxs文件vi /opt/lampp/bin/apxs第一行里的!/bin/perl改成XAMPP自己的脚本:!/opt/lampp/bin/perl
    • libtool出错
      1
      【解决方法】修改默认的sh工具为bash而不是dash,执行sudo dpkg-reconfigure dash,弹出选择框,选择no
  • make install
  • 修改apache配置文件httpd.conf

    1. 加载mod_wsgi模块:LoadModule wsgi_module modules/mod_wsgi.so
    2. 修改对于Django项目的路径
      WSGIScriptAlias /demos/todolist /root/web/demos/todolist/todolist/wsgi.py
      WSGIPythonPath /root/web/demos/todolist
      
      
      
      Require all granted
      
      
      
      一个Django项目的结构一般是这样的:
      - ProjectName
      -- ProjectName
      ---- wsgi.py
      -- AppName
      ---- static
      
      • 第一行为WSGIScriptAlias
        是你希望的这个project的根目录,http://hostname//组成了最后访问的URL
        就是wsgi.py文件的路径,这个文件在高版本的Django里创建项目会自动生成,没有的话下载一个高版本的Django,新建一个别的项目,直接从新项目里改巴改巴拉过来即可
      • 第二行为WSGIPythonPath
        为整个项目目录的路径,不包含第二个ProjectName
      • 第三行为/>
        /这部分是包含两个ProjectName的那个路径,也就是wsgi.py所在的文件夹的路径
    3. 添加静态文件路径
      Alias /demos/todolist/static/ /root/web/demos/todolist/work/static/
      
          #Order deny,allow
          #Allow from all
          Require all granted
      
      
      • 第一行为Alias
        的含义和上面一样,从此http://hostname//就是访问静态文件夹的路径
      • 第二行为 >,填的还是静态文件夹的路径
    4. 重启Apache服务器

    修改Django的代码

    1. wsgi.py,直接用生成的
    2. setting.py
      • 为了放到生产环境上,可以把DEBUG关了,同时ALLOWED_HOST要修改一下以便外界可以访问:
        # SECURITY WARNING: don't run with debug turned on in production!
        DEBUG = False
        
        ALLOWED_HOSTS = ['*']
        
      • 静态路径需要修改
        # Static files (CSS, JavaScript, Images)
        # https://docs.djangoproject.com/en/1.11/howto/static-files/
        
        STATIC_URL = '/demos/todolist/static/'
        
        主要是要与Alias 里的保持一致

    相关