在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 [email protected] # 邮箱   Alias /media/ /home/user/项目名称/media/ # 上传文件存放的路径,具体路径根据实际设定,这里只是例子   Alias /static/ /home/user/项目名称/static/ # 静态文件文件( js, css, 图片等文件)存放的路径,一般默认
  # 文件授权   <Directory /home/user/项目名称/media>     Require all granted   </Directory>   <Directory /home/user/项目名称/static>     Require all granted   </Directory>  # 通过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文件并打开,在原有的基础上增加以下内容:

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.启动网站

  最后一步,让你的网站启动:

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

  sudo service apache2 restart #重新启动服务

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步进行修改。

猜你喜欢

转载自www.cnblogs.com/sdlyxyf/p/11370582.html