首页 > 代码库 > Apache+Django++mod_wsgi(ubuntu下虚拟机方式部署过程)

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下,

john@UBT:/usr/local/apache24$ ls
bin    cgi-bin  error   icons    logs  manual
build  conf     htdocs  include  man   modules
john@UBT:/usr/local/apache24$
john@UBT:/usr/local/apache24$ tree -L 1
.
├── bin      ------------------程序目录
├── build           
├── cgi-bin        
├── conf                  -------------配置文件目录,主要是httpd.conf
├── error         
├── htdocs
├── icons
├── include
├── logs               -------------------日志目录
├── man
├── manual
└── modules        ------------------模块目录

反正都统统在一块了!

而apt方式的,就分布到各个目录下了

root@i:/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 为执行文件

root@i:/tmp# ls /usr/lib/apache2    为模块目录,以后的wsgi.so就会生成到这
modules 
root@i:/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下虚拟机方式部署过程)