Differences between revisions 4 and 5
Revision 4 as of 2009-11-28 21:42:55
Size: 4298
Editor: Elias
Comment: 删除对PageComment2组件的引用
Revision 5 as of 2009-12-25 07:19:14
Size: 4300
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
::-- ZoomQuiet [[[DateTime(2008-03-18T07:08:09Z)]]]
[[TableOfContents]]
::-- ZoomQuiet [<<DateTime(2008-03-18T07:08:09Z)>>]
<<TableOfContents>>
Line 8: Line 8:
[[Include(CPUGnav)]] <<Include(CPUGnav)>>
Line 121: Line 121:
  * 可以参考这篇文章'''[http://sunligt.gjjblog.com/archives/1066969/ 《Hostmonster上部署Django》]'''   * 可以参考这篇文章'''[[http://sunligt.gjjblog.com/archives/1066969/|《Hostmonster上部署Django》]]'''

::-- ZoomQuiet [2008-03-18 07:08:09]

CPUG联盟::

CPUG::门户plone

BPUG

SPUG

ZPUG

SpreadPython Python宣传

{{{沈崴 <[email protected]> reply-to [email protected], to "python-cn:CPyUG" <[email protected]>, date Tue, Mar 18, 2008 at 2:47 PM subject [CPyUG:43817] Re: 关于PLONE~ }}} Hostmonster 对 Ruby 和 PHP 支持甚好, 而对 Python 的支持几可忽略不计这实在是一件令人气愤的事情 ... 好了, 下面进入正题:

1. 在 Hostmonster 上安装 Plone

1.1. 软件安装

  • 1. 下载 Plone 的 Linux 集成安装包, 例如 Plone-3.0.6

    $ wget https://launchpad.net/plone/3.0/3.0.6/+download/Plone-3.0.6-UnifiedInstaller.tar.gz
    $ tar -xzf Plone-3.0.6-UnifiedInstaller.tar.gz
  • 2. 修改 install.sh

    $ cd cd Plone-3.0.6-UnifiedInstaller
    $ vi install.sh

找到 PLONE_HOME, 修改安装位置为自己的 home 目录

# Path for install of Python/Zope/Plone
PLONE_HOME=/home/USERNAME/opt/Plone-3.0.6
  • 3. 执行 install.sh 安装

    $ ./install.sh standalone

    8 4. 安装完成后, 修改 Plone 配置

    $ cd /home/USERNAME/opt/Plone-3.0.6/zinstance
    $ vi etc/zope.conf

修改 port-base, 诸如 3000 (那么 http 端口就在 3000+8080 = 11080)。 推荐打开 debug-mode。

port-base 3000
debug-mode on
  • 5. 找到自己的管理员密码, 启动 Plone

    $ cat adminPassword.txt
    $ cd bin
    $ ./runzope

这样, Plone 就已经启动了。

1.2. 发布Plone

目标将 Plone 发部到 80 端口

  • 一般来说我们可以使用 apache 的 mod_proxy来把 Plone 发布到 80 端口
  • 不过 Hostmonster 上没有 mod_proxy, 所以我写了一个天杀的 proxy 脚本。
  • 1. proxy.py 脚本 (熟悉 PHP 的同学可以使用诸如 curl 之类的工具仿制一个)

    # proxy.py
    
    PORT = 3000 + 8080
    
    from os import environ
    from sys import exit, stdin, stdout
    from socket import socket, AF_INET, SOCK_STREAM
    
    sock = socket(AF_INET, SOCK_STREAM)
    sock.connect(('localhost', PORT))
    
    method = environ.get('REQUEST_METHOD', 'GET')
    query_string = environ.get('QUERY_STRING', None)
    if query_string:
           query = '%s %s?%s %s' %(method,
                   environ.get('PATH_INFO', '/'), query_string,
                   environ.get('SERVER_PROTOCOL', 'HTTP/1.0') )
    else:
           query = '%s %s %s' %(method,
                   environ.get('PATH_INFO', '/'),
                   environ.get('SERVER_PROTOCOL', 'HTTP/1.0') )
    
    headers = [query]
    if method == 'POST':
           headers.append('Content-Length: %s' %environ['CONTENT_LENGTH'])
    
    for key, value in environ.items():
           if key[:5].upper() == 'HTTP_':
                   headers.append(
                           '%s: %s' %('-'.join(p.capitalize(
                                   ) for p in key[5:].split('_')
                                   ), value) )
    
    headers.append('\r\n')
    sock.send('\r\n'.join(headers))
    
    if method == 'POST':
           data = stdin.read(8192)
           while data:
                   sock.send(data)
                   data = stdin.read(8192)
    
    data = sock.recv(8192)
    p = data.find('\r\n')
    if not p:
           exit(0)
    
    data = data[p+2:]
    while data:
           stdout.write(data)
           stdout.flush()
    
           data = sock.recv(8192)
    
    sock.close()
  • 2. 将 proxy.py 拷贝到 cgi-bin 目录设置为可执行, 然后设置 RewriteRule

这样我们就能通过 proxy 访问到 Plone 站点了。

1.3. 回味

在 Hostmonster 上安装运行 Plone 存在很多未知因素, 上述方法未经完全验证, 可作为一种思路用。

另外也可以使用 fastcgi 模式运行 Plone, 步骤也比较多, 这里就不赘述了。

总而言之, 不太推荐一般水平的 Pythoner 在 Hostmonster 上使用 Plone 建站, 这里推荐使用 Django 等轻量级框架来做。

1.3.1. PS

On Mar 18, 3:24 pm, "Junyong Pan" <[email protected]> wrote:

  • 牛就一个字! 还有,Plone现在可以直接用mod_python来带plone,根本不需要再起一个服务进程,
  • 就是这个repoze:http://repoze.org/index.html

2. 反馈

HowToInstallPloneInHostmonster (last edited 2009-12-25 07:19:14 by localhost)