首先,说明下环境:
linux:fedora14;
IDE:eclipse;
python:python2.7
python框架:django
web服务器:apache
web服务器的python模块:mod_wsgi
写在前面:
之前用的windows下面的xampp,写的php后台,现在想转向linux下面的python,跟以前一样,选择apache和eclipse作为自己的开发工具。
eclipse的python配置, 参见之前的博客:http://blog.csdn.net/zy416548283/article/details/16955047
为什么选择框架? 不重复造轮子,,为什么选择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的初步使用和安装,参见:http://blog.csdn.net/tianlesoftware/article/details/7001808
(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
http://my.oschina.net/HankCN/blog/137539
http://blog.csdn.net/a657941877/article/details/8953233
c++ primer plus(第6版)中文版 第九章编程练习答案,布布扣,bubuko.com