zoukankan      html  css  js  c++  java
  • 在Ubuntu1804上使用Apache2的部署Django配置

    在Ubuntu1804上使用Apache2的部署Django配置:

    1.首先安装apache2

      sudo apt-get install apache2

      sudo apt-get install libapache2-mod-wsgi-py3

    2.目录结构

       Apache2的目录结构:对三个类型的mods、conf、sites分别有available、enable两个文件夹,其中available目录中存放有效的配置文件,但不起作用,只用用ln链接到enable目录中才起作用。重点关注的是ports.conf和项目.conf两个配置文件。

    /etc/apache2/
    |-- apache2.conf #主配置文件,
    |       `--  ports.conf #监听端口配置文件
    |-- mods-enabled
    |       |-- *.load
    |       `-- *.conf
    |-- conf-enabled
    |       `-- *.conf
    |-- sites-enabled #项目配置文件目录,只有一个文件
    |       `-- *.conf #项目配置文件,根据项目确定文件名称,例如blogs.conf

    3.测试:

     请先使用Django自带的server测试,保证能够顺利运行。

    4.创建apache2的配置文件:

      按照下面的命令在apache2的sites-available文件目录下,创建一个配置文件,其中项目名称就填写你的web项目的名称,例如blogs.conf。如果有多个虚拟主机,也在此文件中配置。 

    <VirtualHost *:80>
      # 填写自己服务器的域名
      ServerName localhost:80
      # 其他域名(此处可以不填),多个域名指向同一个站点时可以使用,空格隔开   ip ServerAlias otherdomain.com # 其他域名(此处可以不填),多个域名指向同一个站点时可以使用,要多少个就加多少个,空格隔开   ServerAdmin xxx@Email.com
      # 上传文件存放的路径,具体路径根据实际设定,这里只是例子   Alias /media/ /home/user/项目名称/media/
     # 静态文件文件( js, css, 图片等文件)存放的路径,一般默认   Alias /static/ /home/user/项目名称/static/
      # 文件授权   <Directory /home/user/项目名称/media>     Require all granted   </Directory>   <Directory /home/user/项目名称/static>     Require all granted   </Directory>  # 指定虚拟环境的的路径,如果使用默认系统环境可不设置,特别注意此处。
      WSGIDaemonProcess http://127.0.0.1:80 python-path=/home/user/projectname:/home/user/projectname/venv/Lib/site-packages
      WSGIProcessGroup http://127.0.0.1:80
      #通过wsgi.py 连接apache2和你的Django项目,必须设定。
      WSGIScriptAlias / /home/user/项目名称/项目名称/wsgi.py
      <Directory /home/user/项目名称/项目名称>     <Files wsgi.py>        Require all granted     </Files>    </Directory> </VirtualHost>
    <VirtualHost *:8000>
    #其他虚拟主机
    </VirtualHost>

      在 ports.conf中设置监听端口号。

    5.修改wsgi.py文件

      找到你的Django项目路径,找到项目的wsgi.py文件并打开,在原有的基础上增加以下内容,经在Django2.2.4测试,不需要进行修改,其他Django版本未测试。

    #wsgi.py 原代码
    from os.path import join,dirname,abspath import sys PROJECT_DIR = dirname(dirname(abspath(__file__))) sys.path.insert(0,PROJECT_DIR)

    #完整代码
    import os
    from os.path import join,dirname,abspath
    import sys
    from django.core.wsgi import get_wsgi_application

    PROJECT_DIR = dirname(dirname(abspath(__file__)))
    sys.path.insert(0, PROJECT_DIR)
    os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" 
    #os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

    application = get_wsgi_application()

    6. 设置权限

      apache服务器在运行的时候默认的用户是“www-data”,相关的配置文件的位置在/etc/apache2/envvars。

      所以我们需要修改Django项目的权限、上传文件目录、数据库文件的权限,假如你的项目放在/home/user/项目名称下,可以按照以下命令进行权限修改,一般用chmod 644给目录和文件授权:

    cd /home/user/
    sudo chmod -R 644 项目名称
    sudo find 项目名称 -type d | xargs chmod 755
    sudo chgrp www-data 项目名称
    sudo chmod g+w 项目名称
    
    cd media/ #上传文件目录
    sudo chgrp -R www-data uploads
    sudo chmod -R g+w uploads
    
    #数据库文件
    sudo chgrp www-data 项目名称/db.sqlite3  # 更改为你的数据库名称
    sudo chmod g+w 项目名称/db.sqlite3

    7.启动网站

    1. 启动配置文件,会在site-enabled中生成链接文件:sudo a2ensite 项目名称.conf 

    2. 测试配置:sudo apache2ctl configtest  如果返回Syntax OK,则表示配置正确;

    3. 最后一步,让你的网站启动:sudo service apache2 restart

    4. Apache命令:使用service命令或者systemctl命令都可以;

        sudo systemctl start apache2  //启动Apache服务器

        sudo service apache2 start

        sudo systemctl stop apache2  //停止

        sudo service apache2 stop

        sudo systemctl restart apache2  //再次启动Apache服务。

        sudo service apache2 restart

        sudo systemctl reload apache2  //不重新启动连接的情况下应用配置更改

        sudo service apache2 reload

        sudo systemctl status apache2 //查看服务状态

        sudo service apache2 status 

    8.其他事项

      • 静态文件不起作用:这是常见问题,检查在项目配置文件blogs.conf、在Django中settings.py中的设置,检查静态文件目录的权限,以及是否用pythong manage.py collectstatic收集静态文件。
      • 字符集错误:在/etc/apache2/envvars中设置字符集编码类型
      • 本机能够访问,用IP地址不能访问:修改settings.py中的ALLOWED_HOSTS=['*']测试,再排查故障。
      • 如果报 Internal Server Error错误,查看/var/log/apache2/error.log日志文件,重点是上面第5步、第6步的设置。Django自带的wsgi.py要按照第5步进行修改。
  • 相关阅读:
    李开复:如何设计你的2015年度计划(转)
    深入浅出 Java 多线程(转)
    maven常见问题汇总 专题
    Introduction to the Build Lifecycle
    具体解释EBS接口开发之WIP模块接口
    Shell脚本编程具体解释
    [数字图像处理]图像去噪初步(1)--均值滤波器
    hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
    响应式设计:理解设备像素,CSS像素和屏幕分辨率
    #define
  • 原文地址:https://www.cnblogs.com/sdlyxyf/p/11370582.html
Copyright © 2011-2022 走看看