apache2部署django以及静态文件

作者: 王小会 2017-01-30 10:23:45

django中的runserver只是一个很简单的web服务器,在开发中是不建议使用的,django在官方中建议是使用apache2等web服务器来配置,并且django会把静态文件交由apache2等来处理,django认为这是一种高效的方法。其中最难理解的就是static files的配置,这里简单说一下。


我是在阿里云上的配置的服务器,系统是ubuntu16。


 


1、首先安装apache2


sudo apt-get install apache2


sudo apt-get install libapache2-mod-wsgi


# 如果是Python 3,则将第二行替换为改行


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


 


2、然后执行命令


sudo a2enmod wsgi


(很多博客里都没说到这一步,导致在启动apache时,会提示Invalid Command WSGIScript)


(ubuntu的apache的配置文件在/etc/apache2下面)


 


3、这里我的工程是在/home/blog下面。首先新建一个配置文件


sudo vi /etc/apache2/sites-available/blog.conf


然后输入下面内容:




ServerName www.wanghui.com


ServerAlias wanghui.com


ServerAdmin wzxwhd@126.com


Alias /media/ /home/blog/media/


Alias /static/ /home/blog/static/




Require all granted






Require all granted




WSGIScriptAlias / /home/blog/blog/wsgi.py






Require all granted








(在这里就要注意了:静态文件的处理。在开发过程中,一般静态文件都是放在app下面的static里,当settings.py中的Debug=True时,此时django会自己处理静态文件,但是当在部署阶段时,你需要在settings.py中加入:


STATIC_ROOT = os.path.join(BASE_DIR, 'static')


然后执行


sudo  python managy.py  collectstatic


这样django会自动把你的静态文件拷贝到项目根目录下的static文件夹里,并且你也无需担心你的html路径问题。)


保存退出,然后


sudo vim /etc/apach2/envars


将文件中的APACHE_RUN_USER 和 APACHE_RUN_GROUP改为合适的用户名和组,这里不还,后面的静态文件会有权限问题的!


紧接着修改wsgi文件,/homg/blog/blog/wsig.py


import os


PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


import sys 


sys.path.insert(0,PROJECT_DIR) 


这一步主要是为了让apache知道你项目的位置。


 


4、设置目录权限


一般目录权限设置为 755,文件权限设置为 644 


项目位置在 /home/blog


cd /home/


sudo chmod -R 644 blog


sudo find blog -type d -exec chmod 755 {} \;


 


5、启动服务


sudo a2ensite blog


这样就ok了。


 


本文永久更新地址:http://www.linuxdiyf.com/linux/28047.html

相关资讯