Nickcheng.LOG

在天朝的每天都当最后一天吧!

Archive for October, 2007

db-db say: You don’t love me…

leave a comment

早上查看邮件, 收到一封标题为”You don’t love db-db…“的邮件. 打开一看, 原来是”db-db”这个服务把我的帐号给删了, 原因是我老也不用他们的东西. 原文如下

Hello,

It’s been a while since the first day you signed up for db-db. We’ve been waiting, waiting and waiting… but you never come back to create a page on us.

We’re sorry but to remove your account…

Love and Peace,
db-db Crew

呵呵, 这是我见过的最有趣的服务提供商发的邮件了, 这语气写的有够幽怨, 呵呵~~~不过有一点, 他干嘛老是waiting啊? 应该主动来对我做一些营销动作嘛, 其实我早就忘了有这一码事了, 他怎么waiting也是徒劳啊!

Written by nickcheng

October 18th, 2007 at 8:58 am

Posted in 享受生活

Tagged with ,

Django server和Apache下运行Django的细微差别

one comment

今天把在家调好的网站放到服务器上, 发现不能运行, 提示 ViewDoesNotExist 的异常错误. 一开始以为又是服务器上的文件访问权限问题, 但是 chmod 到 777 之后问题还是照旧, 而且在我本地用”manage.py runserver”运行还是没有问题. 于是乎, 去Python-Chinese的邮件列表寻找答案. 看到limodou有如下一说:

使用apache要复杂些,要把project的路径和它的父路径都加入sys.path中比较方便。而address.view的用法说明它是从project目录开始找的,所以要把project路径加入sys.path. 如果使用开发服务器,manage.py会自动将project的路径和它的父路径都加入sys.path中,而apache要自已来做。

这里已经说的很清楚了, 开发服务器的manage.py会在背后为你做一些事情, 而apache不会, 所以导致了我碰到的这个问题.

其实修改起来也很简单, 除了把路径加入sys.path之外, 还有一个方法就是在urls.py中, 把调用的方法名写成”项目名+模块名+方法名”的形式.

修改前代码: urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
(r'^$', 'view.index'),
(r'^s/$', 'view.search'),
)

修改后代码: urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
(r'^$', 'djangotest.view.index'),
(r'^s/$', 'djangotest.view.search'),
)

Written by nickcheng

October 16th, 2007 at 5:06 pm

Posted in 俺的技术

Tagged with , , , ,

[翻译]Media Temple (dv) 服务器性能优化

one comment

原文见: http://kb.mediatemple.net/article.php?id=771

概述

本文总结了优化 (dv) 服务器的方法. 包括运行程序时使用尽可能少的内存和资源, 逐渐提升的系统稳定性, 以及在高负载条件下的高可用性.

征兆

  • 频繁的 Apache(httpd) 当机
  • 缓慢的服务器响应速度
  • “服务器无法访问”(Server unreachable)的错误信息
  • QoS 警报中的 kmemsize 警告(在Virtuozzo的Plesk控制面板中)
  • QoS 警报中的 privvmpages 警告(在Virtuozzo的Plesk控制面板中)

需要的一些准备

详细描述

注意: 下面的几篇文章的难度是逐步提高的, 性能调优的力度也是逐渐增大. 所以我们建议你按照顺序来使用这些文章. 在使用每篇文章前, 最好先在前一篇的基础上进行服务器稳定性和功能性的测试!

第一部分: Apache 性能调优基础(httpd)(英文)

这篇文章指导你把 Apache 的 httpd.conf 文件中的 Timeout 和 MaxClients 参数调低. 这些参数可以降低 Apache 服务器的内存消耗并提高可用性.

  • 完成本文的操作大概需要的时间: 5-20 分钟
  • 难度级别(1-5, 5最难): 2
  • 可能的内存占用减少: 20兆-60兆

第二部分: MySQL 性能调优基础(mysqld)(英文)

这篇文章知道你修改 MySQL 的 my.cnf 配置文件来启用查询缓存. 虽然这样会增加 MySQL 的内存消耗, 但是性能却有很大程度的提高.

  • 完成本文的操作大概需要的时间: 5-15 分钟
  • 难度级别(1-5, 5最难): 2
  • 内存消耗增加: 16兆-32兆

第三部分: 其他性能调优(英文)

这篇文章指导你限制或关掉一些你服务器上不需要的服务. 也许你只需要本文的一部分内容, 所以有些操作可能和例子不太一样.

  • 完成本文的操作大概需要的时间: 5-15 分钟
  • 难度级别(1-5, 5最难): 3
  • 可能的内存占用减少: 60兆-130兆

Written by nickcheng

October 15th, 2007 at 5:05 pm

Posted in 俺的技术

Tagged with , , , , ,

mod_python和django使用需要注意python egg

leave a comment

不认识上面几个英文的朋友请忽略本文, 谢谢:)

昨天在配置Django的数据库的时候, 发现了一个奇怪的问题.

在我将数据库设置配置完成后, 在本地用manage.py runserver执行访问都没有问题, 但是放到服务器上用apache+mod_python的方式执行访问的时候, 就会报错. 而且更诡异的是每次报错都不一样. 我观察了一下, 发现基本就是两种错误在来回的报! 一个是说我的middleware有问题, 另一个说是在使用一些egg文件时有问题.

连忙上网搜了一圈, 找到了一些类型的情形, 大家的基本解决方案都指向了django网站的一个网页(看来还是官网好啊).

using eggs with mod_python

看完这个介绍以后, 终于明白了问题的所在,剩下的就是按步骤来做了! 不过这里还有一个小技巧.

报egg使用有问题的错误时, 错误信息中写的很详细, 大概意思是说因为我没有配置using eggs with mod_python 中所说的cache目录, 所以默认要使用”/.python-eggs”目录作为cache目录. 而我的服务器上并没有这个目录, 所以才会报错.

这样就简单了, 我就建一个这个目录呗, 再把权限一改, 再一试, 嘿嘿~~~齐活!

不想麻烦的朋友, 如果遇到这个问题能看到他需要的目录, 可以采用我的方法:)

Written by nickcheng

October 12th, 2007 at 5:03 pm

Posted in 俺的技术

Tagged with , , ,

在Media Temple(dv)上安装配置Django

one comment

在Media Temple(dv)上安装使用Django

选择 MT , 除了他那些知名的客户群, 还看上了他 VPS 系统的高可配置性. 独立的虚机可以让你在上面安装任何你需要的东西, 当然, 你也要懂得怎么去操作.

自己的 Django 项目已经有些雏形了, 所以也要考虑让他能在 MT 上运行了. 虽然前段时间 MT 对他的 (gs) 服务提供了 Django 的支持, 但是 (dv) 服务还是没有官方的 Django 支持, 所以我只能自己动手来安装配置了!

经过一番摸索和尝试, 以及 Richard 同学(这位同学是我在 Django 的 maillist 上找到的可以骚扰的人^_^)的帮助, 我终于在自己的站点上看到了”Worked”的字样. 自己在网上搜索相关资料的时候一直没有看到有人写在 MT 上安装 Django 的经验, 那么我就作为第一个吃螃蟹的人吧, 希望大家在搜索”mt django”关键字的时候能搜到我的文章:) (是否需要再写一篇英文的?)

好吧, 我们开始干活了! 大家在模仿的时候请注意修改你自己的域名和子域名.

  • 在自己的域名下建立一个子域名, 方便我们干活. 我在我的 nickcheng.com 域名下建立了一个 lab.nickcheng.com 子域名. 这个工作在 plesk 下就可以搞定.
  • 取得 MT 的 Shell 权限, 并且获得自己的 root 密码, 因为我们需要比较高的权限来做这些事情. root 密码需要在 MT 中提交一个 Support 来获取.
  • 进入 Shell 模式, 切换到 root 权限(使用 su 命令)
  • 切换到子域名 lab 所在的目录, 并建立 Django 目录, 下载/解压缩 Django

    cd /var/www/vhosts/nickcheng.com/subdomains/lab
    mkdir django
    cd django
    wget http://www.djangoproject.com/download/0.96/tarball/
    tar xzvf Django-0.96.tar.gz
  • 安装 Django

    cd /var/www/vhosts/nickcheng.com/subdomains/lab/Django-0.96
    python setup.py install

上面的步骤如果没错的话, Django 就已经在你的服务器上安装好了. 为了验证一下, 我们可以使用如下的步骤.

python
import django

如果没有报错, 那么就证明我们的已经成功安装了 Django. 接下来是配置 Django 站点了.

  • 首先不建议把你的 Django 网站的源代码放在 httpdocs 目录下, 因为这样如果操作不当, 会有可能给别人下载你源码的机会, 所以我还是把 Django 网站的源代码放在了之前建立的 django 目录中.

    cd /var/www/vhosts/nickcheng.com/subdomains/lab/django
    django-admin.py startproject djangotest
  • 建立了 djangotest 这个 django 网站后, 就是最重要的配置步骤了. 我们先切换到配置文件所在的目录

    cd /var/www/vhosts/nickcheng.com/subdomains/lab/conf
  • 这时这个目录应该是空的, 我们需要自己建立配置文件. 因为 MT 自带了 vi, 所以我用它来做这个事情

    vi vhost.conf
  • 关于 vi 的操作还请大家自己学习. 我贴一下我的 vhost.conf 文件的内容

    <location>
    SetHandler python-program
    PythonPath "['/var/www/vhosts/nickcheng.com/subdomains/lab/django/'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE djangotest.settings
    PythonDebug On
    </location>
    • 第一行, Location 后的路径不是指磁盘上的路径, 而是用户访问网站的路径. 我这里用 “/” 是指用户访问http://lab.nickcheng.com时的配置.
    • 第二行, 指明这个路径下使用的Handler, 这里使用python
    • 第三行, 指明你的 Django 网站源码所在的路径. 需要注意的是, 这里的路径要写你执行 django-admin.py 文件时所在的目录.
    • 第五行, 要写完整你建立的 project 的 settings.
  • 配置完成后, 我们需要重启服务来让他生效.
    /usr/local/psa/admin/sbin/websrvmng -a -v

现在访问 http://lab.nickcheng.com, 应该可以看到 “It worked!” 的字样了:) 我们成功了

Written by nickcheng

October 10th, 2007 at 5:02 pm

Posted in 俺的技术

Tagged with , , , , ,

Switch to our mobile site