2008年07月25日

Django官方推荐的部署方式是mod_python,所以,如果没有其他理由,建议用这种部署方法。我参考了官方的文档:

http://www.djangoproject.com/documentation/modpython/。本说明基于Windows平台,其他平台也类似。

1、安装
假设Python和Django已经装好,需要安装的软件是Apache2.2和mod_python3.3,软件版本按照20080725的最新稳定版。

从http://httpd.apache.org/download.cgi下载Win32 Binary including OpenSSL 0.9.8h (MSI Installer): apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi,安装,基本按默认

就成。

从http://httpd.apache.org/modules/python-download.cgi选择Apache Mod_python 3.3.1下面的Win32 Binaries进去,会进到某个镜像,我这里是

http://apache.mirror.phpchina.com/httpd/modpython/win/3.3.1/,根据Python和Apache的版本选择需要下载的文件,我选的是mod_python-3.3.1.win32-py2.5-

Apache2.2.exe。安装,没什么好说的。

2、应用目录结构
假设开发的应用是flmn.com,文档存在E:/workspace目录下,设计目录结构如下:
flmn
–media
—-admin
——css
——img
——js
—-css
—-img
—-js
–djflmn
—-app1
——__init__.py
——admin.py
——models.py
——views.py
—-__init__.py
—-manage.py
—-settings.py
—-urls.py

解释:整个站点放在E:/workspace/flmn目录下,子目录media用来存静态文件,而djflmn就是Django应用啦,开发应用和平时一样,只是引用的静态文件要用/media/*这样的路径。在media目录里,admin目录是从C:\Python25\Lib\site-packages\django\contrib\admin\media\拷来的admin静态文件,如果你不用Django的admin功能,这个就省了,另外的css、img、js放djflmn应用的静态文件。在djflmn的settings.py里,需要:MEDIA_URL = ‘/media/’ ADMIN_MEDIA_PREFIX = ‘/media/admin/’。

3、配置

打开http.conf,在一堆LoadModule语句后加入:LoadModule python_module modules/mod_python.so。我喜欢用虚拟主机的配置,这样便于配置多个互不影响的站点,

在文件最后找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释#。

打开extra/httpd-vhosts.conf,加入:
<VirtualHost *:80>
    ServerAdmin webmaster@flmn.com
    DocumentRoot "E:/workspace/flmn"
    ServerName www.flmn.com
   
    <Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE djflmn.settings
        PythonDebug Off
        PythonPath "['E:/workspace/flmn'] + sys.path"
    </Location>
   
    <Location "/media">
        SetHandler None
    </Location>
   
    <Directory "E:/workspace/flmn">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

这里配置是参考Django的官方网站,不多说了。官方网站上说到这个:PythonOption django.root /mysite,如果你像我一样,直接上来就放在根下,就别PythonOption django.root / 多此一举了,因为我一开始那样配,出了莫名其妙的问题。

最后,为了开发方便,修改C:\Windows\System32\drivers\etc\hosts文件,加入一行:127.0.0.1       www.flmn.com,有朝一日应用上线了,要把这行删了,要不dns不到实际的服务器。

2008年06月23日

我工作上这段在用python开发,说说自己的感受。
  
  首先,对python的总体评价,是非常正面的。
  
  以前用C++开发,用过python和twisted后,再也不想去碰C++了,用python真是太方便了。开发效率大幅提高,生活质量也跟着提高了……
  
  但是,作为一个严肃开发者,python语法还有有点太不严谨了,很多东西,实现起来的逻辑不统一,可以说,没有一个统一的哲学,当然了,造成这种现象的原因肯定是两个字:历史。又要兼容又要发展,最后形成的东西,对于初次接触的人来说,肯定不爽。
  
  我用过c++/java/c#,感觉他们的设计在哲学上比较统一,尤其是后面两个比较年轻的,更是很典范。C++也很古老,但是他的哲学还是很统一,所以,光用历史来说python也是有点开脱的嫌疑。
  
  python3000不知道能有何改观,我没深入研究它的路线图,但是听说解决了一些历史问题,期待着它……
  
  说到web开发,python这块我在看django,感觉他很干净,很内聚,很舒服,公司在用turbogears,我感觉,很恶心,乱七八糟的。我自己的开发逻辑,宁可功能少点,也不能把软件做得乱七八糟。

  如果真是做我自己的网站,我会考虑php的框架symfony,在试用过程中,我觉得它的开发者为广大开发者想了很多,感觉比django成熟,它也从django借鉴了不少东西,当还还借鉴了ror。为什么选symfony呢,因为:php的主机so便宜,python的主机so难觅。

2008年04月16日
2008年03月24日

如何让自己的本地APACHE服务器支持"url_rewrite"呢?这需要修改一下apache的httpd.conf设置,就可以让APACHE支持.htaccess了,前提是你的apache先要支持.htaccess

apache服务器如何支持".htaccess"看这里:http://blog.donews.com/flmn/archive/2008/03/24/1267943.aspx

修改apache的设置文件 httpd.conf,去掉下面这句的前面的"#"
#LoadModule rewrite_module modules/mod_rewrite.so

改为LoadModule rewrite_module modules/mod_rewrite.so

重新启动apache就可以了

如何让自己的本地APACHE服务器支持".htaccess"呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了,来看看操作

打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

改为

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
就可以了

2008年03月05日

1、安装ROR,到http://www.rubyonrails.org/down,先安装Ruby的Windows installer,里面包含gem了,不用再装了,然后打开命令行执行:gem install rails –include-dependencies,ROR装好了。
2、按照http://www.redmine.org/wiki/redmine/RedmineInstall安装Redmine。

很简单,不想翻译了,只记录过程。

部署参考这篇《在Windows平台使用Apache2.2和Mongrel运行Ruby on Rails》:http://robbin.javaeye.com/blog/43290

2008年03月04日

1、安装trac,并新建项目,假设trac项目目录为D:\trac,在其下新建项目flmn。
2、安装mod_python,注意Python和Apache的版本要匹配。
3、生成密码文件,可以用apache自带的htpasswd,也可以用htdigest,据说后者安全一点吧,就用后者:
htdigest -c D:\trac\trac.htdigest trac admin,如果不是新建密码文件而是添加,去掉-c选项。
4、配置http.conf:
LoadModule python_module modules/mod_python.so
<Location /trac>
  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir "D:\trac"
  PythonOption TracUriRoot /trac
</Location>

<LocationMatch "/trac/[^/]+/login">
  AuthType Digest
  AuthName "trac"
  AuthDigestDomain /trac
  AuthUserFile "D:\trac\trac.htdigest"
  Require valid-user
</LocationMatch>

5、重启Apache

用http://localhost/trac/flmn访问。

哦也!