Apache+Django++mod_wsgi(ubuntu下虚拟机方式部署过程)
Posted momoangel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache+Django++mod_wsgi(ubuntu下虚拟机方式部署过程)相关的知识,希望对你有一定的参考价值。
前几天以源码的方式部署了Apache+mod_wsgi+django的项目,见我的另一个篇博客
这几天也用apt-get方式安装Apache的方式,安装了部署了一次,其中有一致的地方,也有差别的地方,再此记录一下
环境ubuntu 16.04 +apache2.4.25 +django1.8+mod_wsgi-4.5.15+python2.7
Apache、Python2.7都是以apt-get install的方式安装的
django1.8 是pip install django==1.8的方式安装的
mod_wsgi-4.5.15 是需要下载源码编译安装
Apache源码与apt方式安装的区别就是目录结构不一样,配置文件加载方式不一样,源码的方式,所有的东西在一块,配置文件就主要是httpd.conf,启动程序就在bin下,
如
[email protected]:/usr/local/apache24$ ls
bin cgi-bin error icons logs manual
build conf htdocs include man modules
[email protected]:/usr/local/apache24$
[email protected]:/usr/local/apache24$ tree -L 1
.
├── bin ------------------程序目录
├── build
├── cgi-bin
├── conf -------------配置文件目录,主要是httpd.conf
├── error
├── htdocs
├── icons
├── include
├── logs -------------------日志目录
├── man
├── manual
└── modules ------------------模块目录
反正都统统在一块了!
而apt方式的,就分布到各个目录下了
[email protected]:/tmp# whereis apache2
apache2: /usr/sbin/apache2 /usr/lib/apache2 /etc/apache2 /usr/include/apache2 /usr/share/apache2 /usr/share/man/man8/apache2.8.gz
/usr/sbin/apache2 与/usr/sbin/apache2ctl 为执行文件
[email protected]:/tmp# ls /usr/lib/apache2 为模块目录,以后的wsgi.so就会生成到这
modules
[email protected]:/tmp# ls /etc/apache2 ---主目录,主要配置都在这
apache2.conf conf-enabled magic mods-enabled sites-available
conf-available envvars mods-available ports.conf sites-enabled
ls /usr/share/apache2 一些其他的文件在这
apache2-maintscript-helper ask-for-passphrase build default-site error icons
还有就是项目目录 /var/www/html 这里面就一个index.html
日志目录就在/var/log/apache2/ 下,访问日志和错误日志都在这
第一步,将项目放到服务器上面,我为了方便就放到/var/www/下面,我的项目是mysit
然后更改wsgi.py 文件,需要加一个项目路径,sys.path.append("/var/www/mysit")
第二步,更改apache配置文件
需要做2个工作,一个是安装mod_wsgi,源码安装,安装的时候要满足安装条件,需要apache-dev,可以参考官方安装说明
满足条件了就安装就可以了,命令就是 ./coungure make make install 这3步,安装完后,看看/usr/lib/apache2/modules 目录里有了wsgi.so了吧!
然后加配置文件 /etc/apache2/mods-available目录下建立加载模块的配置文件
wsgi.load
#如下一行
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
然后使用a2enmod命令,就能看到wsgi模块。输入名字后就启用了
再修改/etc/apache2/sites-enabled/000-default.conf (我就用这个默认的了,也可以自己建立一个,格式一样就可以了)
加入
DocumentRoot /var/www/mysit
WSGIScriptAlias / /var/www/mysit/mysit/wsgi.py
Alias /static /var/www/mysit/static (如果你还有音、视频的,请再加相关的目录)
<Directory /mysit/>
Options Indexes FollowSymLinks ExecCGI
AllowOverride none
Require all granted
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /static/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
<Files *.jpg>
Require all granted
</Files>
</Directory>
<Directory /static/style/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
<Files pkq.gif>
Require all granted
</Files>
</Directory>
这里就加一些目录访问权限
然后用a2ensite 命令,启用 000-。。。。。。这个site就行了
然后将80端口的访问权限开开,那么启动apache服务后,访问就可以了!
envvars 配置系统环境变量的相关参数
目前我存在的问题如下:
admin页面登录退出等写数据库操作,系统会报异常,网上米有找到将admin发布的帖子
setting 配置debug=false ,外部访问不了!
apache服务日志每天早上6:25:01时会将日志压缩打包,碰巧的是Apache服务在这时会做一个重启,但是哪里控制打包日志的,我没找到,也不确定重启是不是系统做的
以上问题如果有高手知道,望指点一下,谢谢
我的项目有半年时间,网站是http://60.205.221.253/ 欢迎访问
以上是关于Apache+Django++mod_wsgi(ubuntu下虚拟机方式部署过程)的主要内容,如果未能解决你的问题,请参考以下文章
使用 mod_wsgi 和 django 运行 Apache
Django + apache & mod_wsgi:更改后必须重新启动 apache
使用 mod_wsgi 在 apache 上设置 Django
Django,apache,mod_wsgi - 错误:脚本头过早结束