一步步在SAE 部署自己的python项目

2016-10-19

推荐 Heroku.com!
现在用免费的 Heroku空间,简单好用,而且可以一直用,免费!国内访问速度也不慢。Gunicorn+Postgres,稳定!

一些小限制:
数据库条目<10000,一般也够了。也可以column用json来组合,压缩
网站无访问30分钟后会休眠,再次第一次访问会重启进程(10秒钟),以后就很快了,没有延迟
每个月上线时间540小时,平均一天18小时,也够用了

如何部署Heroku: http://blog.csdn.net/kevin_qq/article/details/52839671

可以试试我的小站 - 天涯VIP:http://tianya.heroku.com


2016-6-6 

SAE免费几天后就要收费了,每天mysql也要云豆,第三方库很多用不起来,比如BeautifulSoup,老说少 lxml。调试也烦恼,很多应用(比如Weixin),必须上线调试,本地调试还不行。

因此,还是转为自己搭主机方便,反正家里也是包月网络,笔记本24小时开机,装个花生壳内网映射(6元RMB),外网就能访问了,自己随便用什么数据库、什么python库都随意安装,本地调试就相当于上线调试,哈哈~~

新的网站: englishgo.imwork.net

=====================================================

注册SAE

http://sae.sina.com.cn/

我的应用 EnglishGo

Git 管理源代码

  • 在你应用的git代码目录里,添加一个新的git远程仓库 sae
  • $ git remote add sae https://git.sinacloud.com/englishgo
  • 编辑代码并将代码部署到 `sae` 的版本1。
  • $ git add .
  • $ git commit -am "make it better"
  • $ git push sae master:1
或者本地没有,需要clone下来:

$ git clone https://git.sinacloud.com/englishgo

$ cd englishgo

$ git branch# *1

$ git remote  # origin

$ git pull origin 1# Already up-to-date.

### make your changes here, git add, git commit

$ git push origin 1



MySQL数据库

mysql作为一种最常用的存取服务了,那么在sae python环境下怎么操作mysql呢。我们也采用上面的方式,用一个实例来操作创建在sae 上的数据。首先我们需要知道我们的mysql的连接主机,端口,等等信息,那么在sae python的环境下我们需要手工引入sae的相关常量信息:

import sae. const
SAE是支持MySQLdb的,那么在得到了数据库的连接信息之后我们就可以管理我们的数据库了
SAE 控制台 -> Python应用 -> 共享MySQL -> 管理Mysql -> 在phpmyadmin中 SQL -> 创建一个简单的表:
CREATE TABLE IF NOT EXISTS `entries` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `text` int(5) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;


一步步在SAE 部署自己的python项目_第1张图片


本地开发环境

直接使用 pip 或者 easy_install 安装 sae-python-dev 包

本地安装MySQLdb:  conda install mysql-python

进入应用的本地开发目录,也就是index.wsgi和config.yaml所在的目录。运行如下的命令启动测试server:

python c:\git\sae-python-dev-guide\dev_server\dev_server.py


MySQLdb 中文乱码的处理:

conn = MySQLdb.connect(host='localhost',user='root',passwd='XXX',db='app_englishgo', charset = 'utf8')

显示:title.encode('gbk')

接收输入:unicode(request.form['title'])



你可能感兴趣的:(Python)