最近一周在用python+django搭建一个生产管理网站,由于是第一次用python+django组合搭建网站故而碰到了很多问题,下面将网站搭建详细分享下
先推荐一个好的网站:http://www.cnblogs.com/lt1983/archive/2012/05/16/2503640.html 笔者基本上都是按照这个网站介绍开发的
1.下载Apache服务器安装文件,采用2.2.21版本,下载链接为:http://httpd.apache.org/download.cgi
检查Apache Monitor工具,出现No services installed的提示信息。原因可能是输入Domain Name不正确。
卸载重装均无效,网上搜索了解相关问题点:在命令行输入 httpd.exe -k install -n apache2 创建服务。
本机浏览器输入 127.0.0.1正常工作,对外启用服务器,在打开防火墙的情况下,设置为Web服务器。
2.安装Python的经历,之前安装环境采用的是2.5版本,而现在Python已经进入3K时代,2.X版本也升级到2.7版本。
在网站上了解到Python的兼容性并不好,因此还是希望采用2.5版本。
在Python官方网站上查看到需要使用最初的2.5版本,需要下载源代码重新编译,试着编译了一下,有点麻烦。
还好在运营的服务器上找到了Python 2.5安装包。
3.Python与Apache的mod_python安装,很多网络贴所指引的链接都失效了,通过mod_python在WikiPedia上的条目找到下载链接
http://archive.apache.org/dist/httpd/modpython/win/3.3.1/
4.安装MySQL数据库,由于直接从MySQL网站上下载数据库安装文件需要注册,为了简单直接从华军下载网页上下载安装包。
考虑到使用新的数据库特性,因此下载MYSQL 5.5版本进行安装
5.阅读安装Django指南,由于Python访问MySQL数据库,需要安装MySQL与Python的接口库。
从http://sourceforge.net/projects/mysql-python/下载,阅读发现只支持Python2.3-2.6,MySQL 3.23-5.1。
因此MySQL需要重新安装5.1版本。根据网上说明 5.1.60为最新版本,需要获取带最全的客户端安装版本。
6.安装Django,下载包为:https://docs.djangoproject.com/en/1.3/topics/install/
这里说明下虽然笔者是用Django1.4,但网上关于Django1.4的资料不多且Django1.4跟之前的版本差异比较大,这也给第一次开发的小菜带来了很多麻烦,当然也给笔者带来了很多麻烦,所已笔者还是建议装Django1.3
7.python的开发工具可选用PyCharm2.0,可在其官网上下载,密钥可用
用户名:yueting3527
注册码:
===== LICENSE BEGIN =====
93347-12042010
00001FMHemWIs"6wozMZnat3IgXKXJ
2!nV2I6kSO48hgGLa9JNgjQ5oKz1Us
FFR8k"nGzJHzjQT6IBG!1fbQZn9!Vi
===== LICENSE END =====
装完之后按照上面所推荐网站的步骤开发即可,但是笔者在使用过程中碰到了很多问题,下面就将这些一一道来
1.在配置settings.py数据库时应这样配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'pmanage', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '31107361990', # Not used with sqlite3.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}
而不是
DATABASES = {
'default': {
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'pmanage', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '31107361990', # Not used with sqlite3.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}
直接用'ENGINE': 'mysql'会报错
2.对于django1.4来说新建一个工程后在其内会多出一个同名文件夹settings.py urls.py __init__.py wsgi.py 都在此文件夹内
所以在配置apache httpd.conf时 location应为
<Location "/">
SetHandler python-program
PythonPath "['D:/Python25/MyProject/pManage'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE pManage.settings
PythonInterpreter pManage
PythonDebug On
</Location>
而不是
<Location "/">
SetHandler python-program
PythonPath "['D:/Python25/MyProject'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE pManage.settings
PythonInterpreter pManage
PythonDebug On
</Location>
3 配置apache的conf文件时不能使用这样的别名:Alias /static D:/Program Files/Django-1.4/django/contrib/admin/static(Program Files中间不能有空格)
出错时应先检查Apache的日志文件
Apache2.2\logs\error.log
4 针对django1.4需这样配置:
Alias /static D:/Python25/Lib/site-packages/django/contrib/admin/static
<Location "/static/">
SetHandler None
</Location>
5 python中显示中文应在字符串前加u 如u'中文'而不是'中文'
另外就是笔者关于http传输的理解:我们所输的网站其实就是链接到服务器(以ip地址做唯一识别)的各类文件,如html文件txt文件等等,打开地址的过程其实就是文件传输的过程
6 在 从开发环境过度到apache的生产环境时,打开admin后台管理发现admin的CSS, JS等未加载进去,研究后得知应该在apache的httpd-django配置文件中加入:
Alias /static "/your_wsgi/your_app/static" 并把admin的CSS、JS、IMG文件拷贝入/your_wsgi/your_app/static 目录中
详细可参照 http://www.cnblogs.com/bourneli/archive/2013/01/21/2869327.html
最后笔者推荐一些比较好的网站:
http://blog.csdn.net/dskit/article/details/5106701
http://www.ibm.com/developerworks/cn/opensource/os-django-admin/?ca=drs-tp4608
http://archive.cnblogs.com/a/2270570/
http://bbs.chinaunix.net/thread-1704009-1-1.html