关于
- Snova(Java)是一个插件化的web proxy框架,目前自动集成基于Google AppEngine平台的GAE插件,支持Heroku/CloundFoundry/OpenShift/Dotcloud/Jelastic平台的C4插件,以及增强的PAC插件SPAC。源码在GoogleCode上维护。snova@GoogleCode
- GSnova(Go)是几乎和snova功能一致的Go语言实现,包括GAE/C4支持,弱化的SPAC实现,以及额外的SSH支持。源码放到了GitHub上维护. gsnova@github
安装部署
- 安装运行依赖
- Snova(Java) 依赖JRE 1.6+
- GSnova(Go)为系统原生可执行文件,无任何依赖
- SPAC(可选)
- Snova(Java)用户请参考SpecialProxyAutoConfig配置SPAC
- GSnova(Go)用户请参考SpecialProxyAutoConfigOnGSnova配置SPAC
AppId共享计划
- 在Snova(Java)的GAE Plugin的GUI中提供有一个共享appid的功能,任何人可以据此共享自己的appid
- 在Snova(Java)的命令行工具admin.sh/admin.bat中也内置share/unshare命令
- 当Snova/GSnova的用户由于某些原因(如不知道怎么安装server侧)没有配置自己的appid时,默认情况下,客户端会从服务器上随机获取几个共享appid,然后用匿名用户方式连接<shareappid>.appspot.com
- GSnova(Go)则提供一个Web接口支持共享appid, 访问http://127.0.0.1:48100
注意
- Go版本GAE服务端与Java版本GAE服务端功能完全一致,区别在于Go版本的性能较Java版本为好,粗略观察差距大约在30%以上,另外Go实例启动时间很短(<500ms),而Java实例的启动时间较长(>4s)
- GSnova(Go)无GUI界面,只提供简单的本地Web界面支持。Snova(Java)提供GUI支持。
- Snova(Java)的GUI以及CLI工具中均有share/unshare appid功能, 你可以分享自己的appid到中心服务器,也可以取消分享;中心服务器则随机分派appid给没有安装自己的snova-gae-server的用户
- GSnova(Go)也通过本地web界面提供share/unshare appid功能.
NodeJsPaaSInstallation
简要说明
- 部署过程一般是将C4的服务端NodeJS实现部署到PaaS平台上,这个过程每个PaaS平台都不一样
- 根据自己的需要任意选择一个PaaS平台部署,部署过程参考下个章节
- 部署服务端成功后,需要修改snova/gsnova的客户端配置
- 以下是几个NodeJS PaaS平台的简要部署指南以及snova/gsnova的客户端配置修改指南
部署服务端
Heroku
Step 1: 准备Heroku Client环境
按照Heroku官方的QuickStart注册帐号,安装Heroku Toolbelt(注册较简单,仅需要email)Step 2: 部署Snova C4的服务端到Heroku
- 下载snova-c4-nodejs-server-[version].zip, 放在任意地方
- 在命令行下进入zip解压后所在目录,依次顺序执行以下的命令,每一行单独执行
heroku login git init git add . git commit -m "init" heroku create //此步创建app git push heroku master
Openshift
Step 1: 注册OpenShift环境, 安装OpenShift部署工具
到官方链接OpenShift注册注册帐号,参考说明rhc安装安装部署工具Step 2: 部署服务到OpenShift
- 将snova-c4-server-[version].war放到任意的空目录下,然后在命令行下进入该目录,逐个执行下面的命令
rhc setup --登录 rhc-create-domain -n <domainName> --创建主域名, 部署新应用是这一步可不执行 rhc-create-app -a <appname> -t nodejs-0.6 --创建app,执行后会在当前目录下创建一个appname的目录名;注意保留此目录用于以后更新 cd <appname> unzip snova-c4-nodejs-server-[version].zip--上一步将snova-c4-nodejs-server-[version].zip在创建的<appname>目录下解压, windows用户参考说明操作 git add . git commit –m “deploy” git push
- 浏览器中输入<appname>-<domainName>.rhcloud.com, 查看是否部署成功,否则检查上述步骤是否执行成功
CloudFoundry
Step 1: 注册CloudFoundry环境,安装CloudFoundry部署工具
- 到官方链接CloundFoundry注册帐号, 注意,注册不是马上成功,一般第二天才会收到注册成功的邮件,其中包含用户名密码
- 参考官方说明安装命令行工具vmc,注意安装依赖ruby以及gem的安装。 vmc安装
Step 2: 部署服务到CloudFoundry
- 将snova-c4-nodejs-server-[version].zip解压到任意的空目录下,然后在命令行下进入该目录,逐个执行下面的三行命令。注意要求node 0.6以上
vmc target api.cloudfoundry.com vmc login vmc push <appnamexxx> ——执行此处appnamexxx为任意名称,为域名一部分,此命令执行后有类似下面的交互内容,参照下面的输入选择;更新app亦执行此命令。 user@ubuntu:~/snova-deploy$ vmc push appnamexxxInstances> 1 1: node2: otherFramework> node 1: node2: node063: node084: otherRuntime> 3 1: 64M 2: 128M 3: 256M 4: 512M Memory Limit> 64M Creating appnamexxx... OK 1: appnamexxx.cloudfoundry.com2: none URL> appnamexxx.cloudfoundry.com Updating appnamexxx... OK Create services for application?> n Bind other services to application?> n Save configuration?> n Uploading appnamexxx... OKStarting appnamexxx... OKChecking appnamexxx... OK
- 浏览器中输入<appnamexxx>.cloudfoundry.com, 查看是否部署成功,否则检查上述步骤是否执行成功
Dotcloud
Step 1: 注册Dotcloud帐号,准备Dotcloud Client环境
- 按照Dotcloud官方的Dotcloud注册帐号,遵循安装说明Installing the CLI安装Dotcloud Client
- 安装完后,命令行下执行以下命令初始化dotcloud client
dotcloud setup
Step 2: 部署Snova C4的服务端到Dotcloud
- 下载snova-c4-nodejs-server-[version].zip, 解压到任意空目录中
- 在命令行下进入war文件所在目录,依次顺序执行以下的命令,每一行单独执行
dotcloud create <app_name> --创建app,只需执行一次 dotcloud push --上传app,注意失败后重试一次
Appfog
Step 1: 准备Appfog账号以及安装Client环境
- 到Appfog注册账号,并按照官方的AF Command Line Tool说明下载安装appfog的命令行工具。
- 注意:Appfog部署C4后的效果较差,问题不少,愿意研究的可以尝试
Step 2: 部署Snova C4的服务端到Appfog
- 下载snova-c4-nodejs-server-[version].zip, 解压到任意空目录中
- 在命令行下进入zip文件解压的目录,依次顺序执行以下的命令,每一行单独执行
af login af push <appname>
Detected a Node.js Application, is this correct? [Yn]: Y 1: AWS US East - Virginia 2: AWS EU West - Ireland 3: AWS Asia SE - Singapore 4: Rackspace AZ 1 - Dallas 5: HP AZ 2 - Las Vegas Select Infrastructure: 3 Application Deployed URL [snova3.ap01.aws.af.cm]: Memory reservation (128M, 256M, 512M, 1G, 2G) [64M]: How many instances? [1]: Create services to bind to 'snova'? [yN]: n Would you like to save this configuration? [yN]: n Creating Application: OK Uploading Application: Checking for available resources: OK Processing resources: OK Packing application: OK Uploading (3K): OK Push Status: OK Staging Application 'xxx': OK Starting Application 'xxx': OK
Application Deployed URL [xxx.ap01.aws.af.cm]: 其中xxx.ap01.aws.af.cm即为域名
修改客户端配置
客户端可选gsnova(Go)或者snova(Java)gsnova(Go)
- 修改gsnova.conf中C4部分,填入之前创建的域名,重启gsnova生效
[C4] #Enable改为1,C4才能生效,默认为0关闭 Enable=1 #修改domain为Step2创建的域名, 可加多个域名 WorkerNode[0]=xyz.herokuapp.com WorkerNode[1]=xyz.cloudfoundry.com
[SPAC] Enable=1 #默认Proxy实现,初始为GAE Default=C4
snova(Java)
- 从snova-0.12.0120开始自动集成c4 plugin,无需单独安装
- 修改<snova>/plugins/c4/conf/c4-client.conf
[C4] #修改domain为Step2创建的域名, 可加多个域名 WorkerNode[0]=xyz.herokuapp.com WorkerNode[1]=xyz.cloudfoundry.com
[Framework] ......... ##Can choose in plugins, default is GAE ProxyService=C4
SPAC(可选)
- gsnova用户参考SPAC的说明SpecialProxyAutoConfigOnGSnova修改json配置打造自己的proxy环境
- snova用户参考SPAC的说明SpecialProxyAutoConfig修改SelectProxy方法打造自己的proxy环境
-------------------------------------------------
JavaPaaSInstallation
简要说明
- 部署过程一般是将C4的服务端实现war包部署到PaaS平台上,这个过程每个PaaS平台都不一样
- 根据自己的需要任意选择一个PaaS平台部署,部署过程参考下个章节
- 部署服务端成功后,需要修改snova/gsnova的客户端配置
- 以下是几个Java PaaS平台的简要部署指南以及snova/gsnova的客户端配置修改指南
部署服务端
Heroku
Step 1: 准备Heroku Client环境
按照Heroku官方的QuickStart注册帐号,安装Heroku Toolbelt(注册较简单,仅需要email)Step 2: 部署Snova C4的服务端到Heroku
- 下载snova-c4-server-[version].war, 放在任意地方
- 在命令行下war文件所在目录,依次顺序执行以下的命令,每一行单独执行
heroku login heroku plugins:install https://github.com/heroku/heroku-deploy --只需执行一次,以后不用执行 heroku apps:create --此步创建一个app,名字随机,记住此步的appname(域名不含.herokuapp.com)。更新不用执行此步 heroku deploy:war --war <path_to_war_file> --app <app_name>
Openshift
Step 1: 注册OpenShift环境, 安装OpenShift部署工具
到官方链接OpenShift注册注册帐号,参考说明rhc安装安装部署工具Step 2: 部署服务到OpenShift
- 将snova-c4-server-[version].war放到任意的空目录下,然后在命令行下进入该目录,逐个执行下面的命令
rhc setup --登录 rhc-create-domain -n <domainName> --创建主域名, 部署新应用是这一步可不执行 rhc-create-app -a <appname> -t jbossews-1.0 --创建app,执行后会在当前目录下创建一个appname的目录名;注意保留此目录用于以后更新 cd <appname> mv snova-c4-server-[version].war webapps/ROOT.war--上一步将snova-c4-server-[version].war改名为ROOT.war, 移动到webapps目录下, windows用户参考说明操作 git rm -r src pom.xml 此步重新部署同一个app时可不执行 git add . git commit –m “deploy” git push
- 浏览器中输入<appname>-<domainName>.rhcloud.com, 查看是否部署成功,否则检查上述步骤是否执行成功
CloudFoundry
Step 1: 注册CloudFoundry环境,安装CloudFoundry部署工具
- 到官方链接CloudFoundry注册帐号, 注意,注册不是马上成功,一般第二天才会收到注册成功的邮件,其中包含用户名密码
- 参考官方说明安装命令行工具vmc,注意安装依赖ruby以及gem的安装。 vmc安装
Step 2: 部署服务到CloundFoundry
- 将snova-c4-server-[version].war放到任意的空目录下,然后在命令行下进入该目录,逐个执行下面的三行命令。
vmc target api.cloudfoundry.com vmc login vmc push <appnamexxx> ——执行此处appnamexxx为任意名称,为域名一部分,此命令执行后有类似下面的交互内容,参照下面的输入选择;更新app亦执行此命令。 user@ubuntu:~/snova-deploy$ vmc push appnamexxxInstances> 1 1: java_web2: otherFramework> 1 1: java2: java73: otherRuntime> 1 1: 64M 2: 128M 3: 256M 4: 512M Memory Limit> 512M Creating appnamexxx... OK 1: appnamexxx.cloudfoundry.com2: none URL> appnamexxx.cloudfoundry.com Updating appnamexxx... OK Create services for application?> n Bind other services to application?> n Save configuration?> n Uploading appnamexxx... OKStarting appnamexxx... OKChecking appnamexxx... OK
- 浏览器中输入<appnamexxx>.cloudfoundry.com, 查看是否部署成功,否则检查上述步骤是否执行成功
Dotcloud
Step 1: 注册Dotcloud帐号,准备Dotcloud Client环境
- 按照Dotcloud官方的Dotcloud注册帐号,遵循安装说明Installing the CLI安装Dotcloud Client
- 安装完后,命令行下执行以下命令初始化dotcloud client
dotcloud setup
Step 2: 部署Snova C4的服务端到Dotcloud
- 下载snova-c4-server-[version].war, 改名为ROOT.war,放在任意空目录中
- 下载dotcloud.yml, 放到和ROOT.war同一个目录下
- 在命令行下进入war文件所在目录,依次顺序执行以下的命令,每一行单独执行
dotcloud create <app_name> --创建app,只需执行一次 dotcloud push --上传app,注意失败后重试一次
Appfog
Step 1: 准备Appfog账号以及安装Client环境
- 到Appfog注册账号,并按照官方的AF Command Line Tool说明下载安装appfog的命令行工具。
- 注意:Appfog部署C4后的效果较差,问题不少,愿意研究的可以尝试
Step 2: 部署Snova C4的服务端到Appfog
- 下载snova-c4-server-[version].war, 放在任意地方
- 在命令行下进入war文件所在目录,依次顺序执行以下的命令,每一行单独执行
af login af push <appname> --path ./snova-c4-server-0.19.0.war
Detected a Java Web Application, is this correct? [Yn]: Y 1: AWS US East - Virginia 2: AWS EU West - Ireland 3: AWS Asia SE - Singapore 4: Rackspace AZ 1 - Dallas 5: HP AZ 2 - Las Vegas Select Infrastructure: 3 Application Deployed URL [xxx.ap01.aws.af.cm]: Memory reservation (128M, 256M, 512M, 1G, 2G) [512M]: 512M How many instances? [1]: Create services to bind to 'snova'? [yN]: n Would you like to save this configuration? [yN]: n Creating Application: OK Uploading Application: Checking for available resources: OK Processing resources: OK Packing application: OK Uploading (3K): OK Push Status: OK Staging Application 'xxx': OK Starting Application 'xxx': OK
Application Deployed URL [xxx.ap01.aws.af.cm]: 其中xxx.ap01.aws.af.cm即为域名
Jelastic
Step 1: 注册Jelastic环境
- 到官方链接jelastic注册帐号
- 注意jelastic的免费期较短,有意尝试的可以部署
Step 2: 部署
- 完全图形化的操作,无需安装工具,按照说明将snova-c4-server-[version].war上传并deploy到ROOT下即可 jelastic部署指南
修改客户端配置
客户端可选gsnova(Go)或者snova(Java)gsnova(Go)
- 修改gsnova.conf中C4部分,填入之前创建的域名,重启gsnova生效
[C4] #Enable改为1,C4才能生效,默认为0关闭 Enable=1 #修改domain为Step2创建的域名, 可加多个域名 WorkerNode[0]=xyz.herokuapp.com WorkerNode[1]=xyz.cloudfoundry.com
[SPAC] Enable=1 #默认Proxy实现,初始为GAE Default=C4
snova(Java)
- 从snova-0.12.0120开始自动集成c4 plugin,无需单独安装
- 修改<snova>/plugins/c4/conf/c4-client.conf
[C4] #修改domain为Step2创建的域名, 可加多个域名 WorkerNode[0]=xyz.herokuapp.com WorkerNode[1]=xyz.cloudfoundry.com
[Framework] ......... ##Can choose in plugins, default is GAE ProxyService=C4
SPAC(可选)
- gsnova用户参考SPAC的说明SpecialProxyAutoConfigOnGSnova修改json配置打造自己的proxy环境
- snova用户参考SPAC的说明SpecialProxyAutoConfig修改SelectProxy方法打造自己的proxy环境
----------------------------------------------------------------
C4VPSInstallation
简要说明
- 部署过程一般是将C4的服务端在vps上启动
- 根据自己的需要任意选择一个Java/NodeJS实现部署,部署过程参考下个章节
- 部署服务端成功后,需要修改snova/gsnova的客户端配置
部署服务端
Java
Step 1: 准备Java环境
- Java要求1.6以上
Step 2: 部署启动
- 下载snova-c4-server-[version].war, 放在任意地方
- 下载JettyRunner 下载地址,下载的文件放到war文件同一目录
- 在命令行下进入war文件所在目录,执行下面命令启动
java -jar jetty-runner-7.6.8.v20121106.jar snova-c4-server-[version].war
- 注意默认绑定端口为8080,需要绑定其它端口参考jetty runner帮助;同时记住VPS的外网IP
NodeJS
Step 1: 注册NodeJS环境
- 到官方链接NodeJS下载安装NodeJS,注意要求0.6以上
Step 2: 部署启动
- 将snova-c4-nodejs-server-[version].zip解压缩到任意的空目录下
- 在命令行下进入war文件所在目录,执行下面命令启动
node server.js
修改客户端配置
客户端可选gsnova(Go)或者snova(Java)gsnova(Go)
- 修改gsnova.conf中C4部分,填入VPS IP:端口,重启gsnova生效
[C4] #Enable改为1,C4才能生效,默认为0关闭 Enable=1 #修改domain为Step2创建的域名, 可加多个 WorkerNode[0]=10.101.10.10:8080 WorkerNode[1]=10.101.10.11:8080
[SPAC] Enable=1 #默认Proxy实现,初始为GAE Default=C4
snova(Java)
- 从snova-0.12.0120开始自动集成c4 plugin,无需单独安装
- 修改<snova>/plugins/c4/conf/c4-client.conf
[C4] #修改填入VPS IP:端口 WorkerNode[0]=10.101.10.10:8080 WorkerNode[1]=10.101.10.11:8080
[Framework] ......... ##Can choose in plugins, default is GAE ProxyService=C4
SPAC(可选)
- gsnova用户参考SPAC的说明SpecialProxyAutoConfigOnGSnova修改json配置打造自己的proxy环境
- snova用户参考SPAC的说明SpecialProxyAutoConfig修改SelectProxy方法打造自己的proxy环境
--------------------------------------------------------------
http://jingpin.org/snova-cloud-foundry/
http://jingpin.org/heroku-snova/
http://jingpin.org/snova-openshift/
http://jingpin.org/jelastic-snova/
----------------
在Heroku上,部署gsnova
git init git add . git commit -m "gsnova" heroku login heroku create git push heroku master
- Gsnova客户端修改配置文件
参考
-------------------------
Heroku部署过程
Heroku部署过程
1
| sudo apt-get install git |
1
2
3
4
5
6
7
8
9
10
11
| drwxrwxr-x 6 xpleaf xpleaf 4096 1月 29 16:04 . drwxr-xr-x 38 xpleaf xpleaf 4096 1月 29 16:01 .. drwxrwxr-x 7 xpleaf xpleaf 4096 1月 29 03:31 app -rw-rw-r-- 1 xpleaf xpleaf 3295 1月 29 03:31 config.py -rw-rw-r-- 1 xpleaf xpleaf 1083 1月 29 03:31 LICENSE -rwxrwxr-x 1 xpleaf xpleaf 2391 1月 29 03:31 manage.py drwxrwxr-x 3 xpleaf xpleaf 4096 1月 29 03:31 migrations -rw-rw-r-- 1 xpleaf xpleaf 25 1月 29 03:13 Procfile -rw-rw-r-- 1 xpleaf xpleaf 376 1月 29 03:31 README.md -rw-rw-r-- 1 xpleaf xpleaf 76 1月 29 03:13 requirements.txt drwxrwxr-x 2 xpleaf xpleaf 4096 1月 29 03:31 tests |
1
2
3
4
| xpleaf@leaf:~ /Heroku_pro $ pwd /home/xpleaf/Heroku_pro xpleaf@leaf:~ /Heroku_pro $ ls app config.py LICENSE manage.py migrations README.md requirements.txt tests Procfile |
1
2
| xpleaf@leaf:~ /Heroku_pro $ git init 初始化空的 Git 版本库于 /home/xpleaf/Heroku_pro/ .git/ |
1
2
3
| xpleaf@leaf:~ /Heroku_pro $ ls -a . app .git manage.py README.md tests .. config.py LICENSE migrations requirements |
1
2
3
4
5
6
7
8
9
10
| xpleaf@leaf:~/Heroku_pro$ git add . xpleaf@leaf:~/Heroku_pro$ git commit -m "ver1.0" [master (根提交) a7cea3f] ver1. 0 78 files changed, 3350 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/__init__.py create mode 100644 app/api_1_0/__init__.py create mode 100644 app/api_1_0/authentication.py ...... |
1
| wget -O- https: //toolbelt .heroku.com /install-ubuntu .sh | sh |
1
2
3
4
5
6
| xpleaf@leaf:~ /Heroku_pro $ heroku login Enter your Heroku credentials. Email: flasky_mini@sina.com Password (typing will be hidden): Logged in as flasky_mini@sina.com xpleaf@leaf:~ /Heroku_pro $ |
1
2
3
| xpleaf@leaf:~ /Heroku_pro $ heroku create my-heroku-app-cn Creating my-heroku-app-cn... done , stack is cedar-14 https: //my-heroku-app-cn .herokuapp.com/ | https: //git .heroku.com /my-heroku-app-cn .git |
1
2
3
4
5
6
7
8
| xpleaf@leaf:~ /Heroku_pro $ heroku addons:create heroku-postgresql:hobby-dev Creating postgresql-rectangular-17531... done , ( free ) Adding postgresql-rectangular-17531 to my-heroku-app-cn... done Setting DATABASE_URL and restarting my-heroku-app-cn... done , v3 Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Use `heroku addons:docs heroku-postgresql` to view documentation. |
1
2
| MAIL_USERNAME = os.environ.get( 'MAIL_USERNAME' ) MAIL_PASSWORD = os.environ.get( 'MAIL_PASSWORD' ) |
1
2
3
4
5
6
| xpleaf@leaf:~ /Heroku_pro $ heroku config: set MAIL_USERNAME= "xpleaf" Setting config vars and restarting my-heroku-app-cn... done MAIL_USERNAME: xpleaf xpleaf@leaf:~ /Heroku_pro $ heroku config: set MAIL_PASSWORD= "***" Setting config vars and restarting my-heroku-app-cn... done MAIL_PASSWORD: *** |
必需文件 | 说明 |
requirements.txt | Web应用程序所依赖的各种第三方扩展包 |
Procfile | 里面包含的是我的Web应用服务器启动时执行的命令 |
1
2
3
| xpleaf@leaf:~ /Heroku_pro $ ls -l requirements.txt Procfile -rw-rw-r-- 1 xpleaf xpleaf 25 1月 29 03:13 Procfile -rw-rw-r-- 1 xpleaf xpleaf 76 1月 29 03:13 requirements.txt |
1
2
3
4
5
6
7
8
9
10
| Flask==0.10.1 Flask-Bootstrap==3.0.3.1 Flask-HTTPAuth==2.7.0 Flask-Login==0.3.1 ... SQLAlchemy==0.9.9 WTForms==1.0.5 Werkzeug==0.10.4 alembic==0.6.2 bleach==1.4.0 |
1
| web: gunicorn manage:app |
1
2
| git add . git commit -m "ver1.0" |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| xpleaf@leaf:~ /Heroku_pro $ git push heroku master 对象计数中: 97, 完成. Delta compression using up to 4 threads. 压缩对象中: 100% (90 /90 ), 完成. 写入对象中: 100% (97 /97 ), 35.04 KiB | 0 bytes /s , 完成. Total 97 (delta 22), reused 0 (delta 0) remote: Compressing source files... done . remote: Building source : remote: remote: -----> Python app detected remote: -----> Installing runtime (python-2.7.11) remote: -----> Installing dependencies with pip remote: Collecting Flask==0.10.1 (from -r requirements /common .txt (line 1)) .......... remote: -----> Preparing static assets remote: Collectstatic configuration error. To debug, run: remote: $ heroku run python manage.py collectstatic --noinput remote: remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 37.2M remote: -----> Launching... remote: Released v6 remote: https: //my-heroku-app-cn .herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy.... done . To https: //git .heroku.com /my-heroku-app-cn .git * [new branch] master -> master |
1
2
3
4
5
6
7
8
9
10
11
| #启动Web服务器进行相关初始化配置 xpleaf@leaf:~ /Heroku_pro $ heroku run python manage.py deploy Running python manage.py deploy on my-heroku-app-cn... up, run.7690 INFO [alembic.migration] Context impl SQLiteImpl. ...... INFO [alembic.migration] Running upgrade 288cd3dc5a8 -> 2356a38169ea, followers INFO [alembic.migration] Running upgrade 2356a38169ea -> 51f5ccfba190, comments #重新启动 xpleaf@leaf:~ /Heroku_pro $ heroku restart Restarting dynos... done |
1
2
3
4
5
6
7
8
9
10
11
12
| #告诉Heroku,你要进行升级操作 heroku maintenance:on #提交部署 git push heroku master #重新运行服务器 heroku run python manage.py deploy heroku restart #告诉Heroku,升级完成 maintenance:off |