您的位置:首页 > 运维架构 > Apache

linux+django+apache+mod_wsgi+eclipse+python2.7 环境的搭建

2014-05-11 14:47 796 查看
首先,说明下环境:

linux:fedora14;

IDE:eclipse;

python:python2.7

python框架:django

web服务器:apache

web服务器的python模块:mod_wsgi

写在前面:

之前用的windows下面的xampp,写的php后台,现在想转向linux下面的python,跟以前一样,选择apache和eclipse作为自己的开发工具。

eclipse的python配置, 参见之前的博客:/article/2668189.html

为什么选择框架? 不重复造轮子,,为什么选择django,使用的人最多,,为什么python2.7,跟python3不一样呢。。。为什么是apache呢,nginx没玩过,以后性能上如果有需求,再改吧~ 而apache支持python,需要一个模块,mod_wsgi,之前自己也尝试配置mod_python,但是会遇到很多错误,mod_python已经停止维护了,所以,还是用mod_wsgi吧~

其实,这类文章,网上也有很多,照着弄,基本可以解决,也花费了我很多时间,我主要记录我的问题,和一些我的配置和理解,毕竟我也很菜~

(1)关于apache的配置的权限问题,总是出现一些问题:

没有访问权限403错误? 之前设置了目录的访问权限,但还是出现问题,这个时候,最有效的方式是去查看错误日志。我之前没有找到这个日志,然后尝试了手动编译apache的方法,发现竟然可以使用,但是修改了根目录之后又用不了,很是郁闷,根据错误日志,搜索到这个帖子:http://wiki.apache.org/httpd/13PermissionDenied ,解决方法就是把权限打开到root目录的下一级目录。这一步纠结了我好久的时间,所以说,日志对于解决问题相当地重要。

(2)File does not exist: /var/www/html/favicon.ico,就是找不到图标,关于这个图标的作用,参见:http://blog.csdn.net/avilifans/article/details/12972315 ,大概作用就是收藏的时候提供一个图标。

(3)加载mod_wsgi,并配置wsgi:

a. 首先改变网站的根目录,在httpd.conf中配置

DocumentRoot "/home/zy/www/lib108/src/lib108/"
b.当然要让其它人访问它,需要配置它的权限:

<Directory "/home/zy/www/lib108/src/lib108">
    AllowOverride None 
    Options None 
    Order allow,deny 
    Allow from all
</Directory>
c.我用的eclipse建的项目,所以是上面的结构。 上面这个配置,可以写在httpd.conf中,但是如果你的配置比较多的话,这样就会让文件显得比较臃肿,并且不方便修改。所以我们创建了一个文件wsgi.conf,把关于mod_wsgi的配置都放在这里。我目前的配置是:

LoadModule wsgi_module modules/mod_wsgi.so   #加载模块
WSGIScriptAlias / "/home/zy/www/lib108/src/lib108/conf/django.wsgi"

<Directory "/home/zy/www/lib108/src/lib108"> AllowOverride None Options None Order allow,deny Allow from all </Directory>

Alias /media /usr/lib/python2.7/site-packages/django/contrib/admin/media
<Directory "/usr/lib/python2.7/site-packages/django/contrib/admin/media">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Location "/media/">
SetHandler None
</Location>
<LocationMatch "\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">
SetHandler None
</LocationMatch>
需要将这样一个文件,引入到httpd.conf中:

Include conf.d/*.conf
这个是将conf.d目录下所有的*.conf文件都引入进来,我的文件是放在这个目录下的,如果你的不是放在这里,你需要再使用一个include把你的配置文件引入进来。

(4)安装命令,并配置wsgi到django:

a. 安装apache服务器:

yum install httpd
b.安装mod_wsgi:

好像命令行安装的,自带了这个模块,手动编译的apache,同样需要手动编译这个模块,编译的时候可能会遇到这个错误:mod_wsgi.c Python.h:没有那个文件或目录,,解决方法:yum install python-devel,安装apache的apxs扩展。

c. wsgi到django的配置文件django.wsgi,在第三步的配置文件中,会用到这个文件,我的是:

import os
import sys
import django.core.handlers.wsgi

sys.path.append(r'/home/zy/www/lib108/src/')
#sys.path.append(os.path.dirname(os.path.dirname(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'lib108.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/.python-eggs'

application = django.core.handlers.wsgi.WSGIHandler()


5. css的样式丢失的问题:

使用chrome的F12可以发现问题,文件找不到,需要配置下admin这个东西,具体配置,在第三步的那个配置文件中,关于media的路径问题,使用:

python
import django
django.__file__
可以找到对应的django路径进去研究下,就清楚了。

这样设置之后,需要在django的项目中的settings中,做配置:

MEDIA_ROOT = '/usr/lib/python2.7/site-packages/django/contrib/admin/media'
MEDIA_URL = '/media/'


这样,可以轻松解决css样式丢失的问题。

其它小问题:

(1)Address already in use: make_sock: could not bind to address 80 [resolved],使用:sudo fuser -k -n tcp 80

(2)eclipse写html,用对应插件,参见:http://blog.csdn.net/shanliangliuxing/article/details/8571832

(3)Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock,没有安装mysql-server,跟windows好大的区别,windows用别人提供好的界面,根本没有这些概念~ mysql的初步使用和安装,参见:/article/1448830.html

(4)pyc是什么文件,编译好的二进制文件,不用公开源码,参见:http://blog.csdn.net/sislcb/article/details/4002414

写在后面:

果然用linux搞东西,就会遇到各种问题,慢慢解决和积累吧~

希望这次搞东西,可以学的更深一点,比如数据库/python这些~

先大概看下django,然后直接着手搭建教研室的网站搭建,先实现一个工作去向的统计功能~

参考资料:

http://www.cnblogs.com/compass/articles/2125605.html

http://www.cnblogs.com/compass/archive/2011/09/28/2194460.html

/article/3516933.html

http://blog.csdn.net/a657941877/article/details/8953233
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: