DPress部署到SAE

将DPress部署到SAE的简要说明。如果你在部署过程中有遇到什么问题,欢迎反馈。

  • 在SAE管理后台创建应用,开发语言选择python
  • 使用svn将应用代码更新到本地
  • 修改配置文件config.yaml

  • 将DPress sites目录下所有文件复制到SAE应用目录(如:dpress/1/)。
  • 在应用的根目录下创建目录libs(如:dpress/1/libs/)
  • 将virtualenv.bundle.zip复制到libs目录
  • 在服务管理中启用mysql数据库
  • 由于SAE上无法使用Django命令。需要在本地使用syncdb命令在本地mysql数据库中创建好DPress的初始数据,然后使用SAE的phpmyadmin将数据导入到SAE。
  • 在服务管理中创建Storage,并将Domain设置为base
  • 创建配置文件settings/local.py

  • 到这里服务已经可以跑起来了。由于没有对静态资源进行配置,将出现无法找到静态资源的情况。
  • 创建一个新的SAE应用,应用类型选择PHP,专门用于管理DPress的静态资源文件(如:dstatic.sinaapp.com)。
  • 在本地运行Django的collectestatic命令将DPress的静态资源收集到sites/collectedstatc/目录。
  • 将collectedstatc中的内容复制到新创建的站点
    • 如:static/dpress/。对应的STATIC_URL配置文件修改为 http://dstatic.sinaapp.com/static/dpress/

27 Comments

  • pylemon
    2012年08月16号 - 10:45 下午 | Permalink

    在phpmyadmin中导入本地syncdb后的数据库时,老是会遇到这个权限错误? 知道是什么状况么?


    — Dumping data for table auth_group

    LOCK TABLES auth_group WRITE ;

    MySQL 返回:

    #1044 – Access denied for user ‘lw4ozyn0mm_pma’@’10.67.15.%’ to database ‘app_pylemon’

  • 2012年08月17号 - 9:36 上午 | Permalink

    不知道你是怎么导出的,你不会是对整个数据库进行的导出吧。
    如果脚本里有创建数据库的操作应当会出现没有权限的问题。
    在syncdb后,进入app_dpress库。
    将app_dpress库中的所有表导出。
    另外mysql的数据库引擎用的是MyISAM,如果你用的是innodb也可能无法正常导入。

  • 2012年08月24号 - 3:45 下午 | Permalink

    在后台缩略图还是无法显示
    不过不影响使用

  • 2012年08月24号 - 4:16 下午 | Permalink

    如果你可以成功上次图片,那配置应当是没有问题的。
    最新版本已经修正了无法生产缩略图的问题,如果你用的不是最新版本的DPress,可以升级一次看看。

  • 2012年09月4号 - 1:44 上午 | Permalink

    我除了没有修改 EPIC_JS 和 EPIC_BASEPATH, 没有collectstatic, 其他都照做了. 可老是失败呀!
    local.py中按您所说配置了sae的Mysql, 但是抛出的异常却说:
    ImproperlyConfigured(“Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s” % exc)
    ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

    详细错误输出见: http://dpaste.com/hold/795783/

  • 2012年09月4号 - 1:49 上午 | Permalink

    过了一会儿执行, 错误代码好像不太一样:
    http://dpaste.com/hold/795787/

  • 2012年09月4号 - 9:20 上午 | Permalink

    看你的错误信息应当是 settings/local.py 没有正确创建或是加载时出了问题,不然数据库配置不会识别为sqlite。

  • 2012年09月4号 - 11:49 上午 | Permalink

    我已经确定加载没有问题了, 因为你原来的代码如果加载有问题, 会忽略:
    try:
    from local import *
    except:
    pass

    我已经改成了:
    try:
    from local import ImportError:
    except:
    pass

    这样如果 local.py 出现问题就不会忽略了.

  • 2012年09月4号 - 11:49 上午 | Permalink

    我已经确定加载没有问题了, 因为你原来的代码如果加载有问题, 会忽略:
    try:
    from local import *
    except:
    pass

    我已经改成了:
    try:
    from local import *:
    except ImportError:
    pass

    这样如果 local.py 出现问题就不会忽略了.

  • 2012年09月4号 - 11:56 上午 | Permalink

    我怀疑是您提供的virtualenv.bundle.zip依赖补全, 我又加了一些包(包括 devserver,compressor等), 上传后提示的不是数据库配置错误了.

    但总是会出错, 我也看不出到底问题在哪儿.

    现在是: ImproperlyConfigured: Error importing middleware pagination.middleware: “No module named pagination.middleware”
    可是我发现 virtualenv.bundle.zip 有 pagination 包呀.

  • 2012年09月4号 - 12:52 下午 | Permalink

    virtualenv.bundle.zip 应当是没问题的。我在SAE上用的就是这个zip包。SAE上用非debug模式。创建一个settings/pre.py在里面添加 SETTINGS = ‘production’

  • 2012年09月4号 - 11:13 下午 | Permalink

    OK, 我已经搞定了.

    关于数据库表的创建, 据说要用phpmyadmin, 可是SAE的文档中只字未提怎么操作的, 我也没用它.

    我是通过管理命令中的sqlall输出SQL语句, 然后直接贴到SAE的MySQL管理界面中执行的, 这样就OK了.

  • 2012年09月5号 - 4:24 下午 | Permalink

    您好, 再次打扰!
    我通过您的这篇文章终于把FileBrowser和SAE集成的问题搞定了获悉您已经解决了Filebrowser生成缩略图的问题, 访问您提供的测试链接发现缩略托确实可以正常生成.

    但是我把最新的DPress代码(from github)部署到SAE后发现缩略图还是不能生成.
    不知是哪里配置错了, 我严格按您的说明来的呀.

    希望指点呀!

  • 2012年09月5号 - 4:34 下午 | Permalink

    这是我把DPress部署到SAE上的Filebrowser URL(user=guest, passwd=guest), 您可以看下效果.
    http://wonderlog.sinaapp.com/admin/filebrowser/browse/
    已经用了最新代码了, 可还是不能生成缩略图.

  • 2012年09月5号 - 9:32 下午 | Permalink

    代码库里的saestorage.py有bug,我刚更新过。
    你更新一下代码就好了。

  • 2012年09月5号 - 11:26 下午 | Permalink

    好, 马上更新!
    谢谢前辈的不懈努力!

  • 2012年09月5号 - 11:28 下午 | Permalink

    谢谢前辈做出的伟大贡献. 特别是和Filebrowser的集成上.

  • 2012年09月5号 - 11:32 下午 | Permalink

    我刚检出代码, 发现更改了一行.

    另外我曾在你的另一篇文章中反映过您实现的SAE存储目前还不支持重命名, 创建文件夹等操作呀.

  • 2012年09月5号 - 11:59 下午 | Permalink

    已成功部署, 能够正常生成缩略图了, Filebrowser 提供的filebrowser.widgets.FileInput也能够正常渲染了, 惊喜!

    再次感谢前辈的努力!

    我本是想要把自己这几天刚刚完成的Blog系统EZLog部署到SAE上去的, 但一时未能成功. 正好发现了前辈的部署DPress到SAE的经验分享, 于是决定先尝试部署DPress测试.

    借助部署DPress到SAE的经验, 我已成功把我的EZLog系统部署到SAE上, 现在又解决了Filebrowser缩略图问题, 惊喜!

    我的EZLog本身还有许多工作要做, 不然我会自己抽时间研究下sae的storage API来解决FILE Storage的问题.

    我的EZLog部署在SAE上的域名是: http://ezlog.sinaapp.com/

    由于里面没有重要内容且不涉及隐私, 所以我创建了guest账户(密码还是guest)并赋予其超级用户权限. 管理后台URL是 /admin , 欢迎大家体验测试, 并给出改进意见. 谢谢!

  • 2012年09月6号 - 8:27 上午 | Permalink

    sae的api不支持创建文件夹,所以无法实现文件夹的相关功能。
    文件改名的功能因为不常用所以没太研究过,不确定是否可以实现。

  • 2012年09月6号 - 4:54 下午 | Permalink

    文件改名我是有需求的, 因为我用了CKEditor, 可以利用Filebrowser浏览文件插入到文章中. 但如果文件名含有中文的话, 插入到文章中的图片链接就是错误的, 访问不了原图. 根据我的猜测可能是经过了多次URLEncode导致链接错误.

  • 2012年09月6号 - 5:50 下午 | Permalink

    我没有看sae的API,我发现sae提供的管理界面可以在Stroage中创建文件夹的.
    这里有截图: http://www.yupoo.com/photos/sinaweibo1451234405/86596328/. 难道没有通过api提供给开发者.

  • 2012年09月6号 - 5:56 下午 | Permalink

    我那截图上已有的文件夹不是我在管理界面上手工添加的. 它对应我的一个django模型字段:
    photo = models.ImageField(verbose_name=u’图片’, max_length=200,
    upload_to=’uploads/plog/%Y/%m/%d’)

    图片上传后自动在sae Storage中创建了多层文件夹, 这说明你的saesotrage
    还是能够创建出文件夹的吧.

    是不是保存文件的时候, sae会自动根据 ‘/’ 分割路径并创建文件夹呢?

  • 2012年09月6号 - 8:20 下午 | Permalink

    有可能sae会自动根据“/”创建文件夹,API里没有给出相关的说明。
    SAE的API在这里:
    http://appstack.sinaapp.com/static/doc/release/testing/service.html#storage
    感觉SAE的API并不是太完善。

  • 2012年09月10号 - 9:49 下午 | Permalink

    现在基本可以断定sae会根据 ‘/’ 创建递归目录, 但是没有直接创建目录的api, 建议通过写入一个空文件来实现创建目录. 如下所示:

    import sae.storage
    s = sae.storage.Client()
    ob = sae.storage.Object(”)
    s.put(‘domain-name’, ‘media/uploads/__empty__’, ob)

  • 2012年09月10号 - 10:18 下午 | Permalink

    根据上面的思路, 我对您的saestorage进行了修改, 已经可以成功在filebrowser文件浏览页面创建文件夹, 在sae的storage管理界面可以查看到.
    filebrowser也提示创建成功, 但是filebrowser却列不出来. 我看了sae的Storage的list方法仅接受一个domain参数, 好像默认列出来的没有文件夹, 也没法控制列出目录还是普通文件呀. sae这API真是残废呀!

  • 2012年09月11号 - 9:37 上午 | Permalink

    SAE的后台管理界面无法上传大于大于10M的文件。大文件只能通过官方客户端上传,官方客户端又不支持文件夹。所以我觉得也太用去纠结文件夹的问题了。
    SAE的SDK确实不是太完善。

  • Comments are closed.