CNPaaS 是一个让开发人员无痛的发布自己的应用。你在平台上申请了一个帐号后,即可生成你的应用。
现时支持的应用为:
每个用户应用均拥有其独立 Git 地址来推送他的代码。代码推送到我们服务器端后,后台会生成一个容器并以一个独立网址来访问该网站。
容器与容器之间是完全独立运作的,所以你可以放心你的应用不会受到其他用户应用的运作所影响。
现在就安装相关软件库并开始用 CNPaaS 来简化你的部署体验吧!
要有效使用本平台,你需要安装以下软件库。
一般 Mac OS 上都已装有 Ruby, 可执行以下命令来确认 Ruby 的版本
$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
如显示的版本号底于 ruby 1.9,请更新你的 Ruby. 这里 有一个详细的教学如何安装最新版本的 Ruby。
可用以下指令确认 git 是否已安装到本机。
$ git -v
只要有 Git 指令基本上就可以了, 版本号不太重要。
注:在內地 rubygems.org 存放在 AWS S3 的源可能遭屏閉,可用以下指令來使用淘宝镜像来下载 Ruby Gems。
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
跟着直接输入以下指令来安装命令行:
$ gem install cnpaas_cli
你可先到 ~/.ssh/
内查看有没有 id_rsa.pub
及 id_rsa
这两个档案 ( 或 id_dsa.pub
及 id_dsa
这两个档案 )。如有,那你已有公用 / 私有密钥。可跳过下列步骤。
否则,可用以下列指令生成一对密钥。
$ ssh-keygen -t rsa -C "your_email@example.com"
跟着问是否需要 passphrase, 可输入可不输入。最后会在 ~/.ssh/
目录内生成 id_rsa.pub
及 id_rsa
档案。
CNPaaS 需要你的公用钥。你可用以下指令来查看你的公钥内容
$ cd ~\.ssh\
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAA...
请把 ssh-rsa AAA...
那一串字符串复制到你 CNPaaS 帐户内。登入 CNPaaS 后,点击右上方你的用户名,在 帐号设置 内,公钥部份,贴上你公钥。注意整个公钥要在一行内完成,中间不可有回车隔行。最后点选 更新。
在 CNPaaS 上托管静态管 HTML 很容易,直接将 HTML 项目通过 Git 命令 push 到 CNPaaS 即可。
登陆 CNPaaS 后台,创建一个 “静态页面 / HTML5” 应用:
准备好你的 HTML 代码。如果你项目是一个纯静态网站,请先在项目目录里创建一个命名为 public
的目录,并将首页的 HTML 文件命名为 index.html
保存在 public
目录里 。
你也可以先把应用初始代码通过 git clone
命令先保存到本地:
$ git clone <git-repo addr>
其中替换为 CNPaaS 上应用后台的 Git地址。
然后再把自己的项目的public
目录放进去该项目目录里。
通过 CNPaaS 后台的应用总汇,点击进去该应用详情,点击应用的温馨提示可以查看快速部署的提示。
最后一步就是把 HTML 代码推送到我们的代码库上。具体方法可参考 这里。
所使用的命令如下:
$ git init . //初始化 git 仓库
$ git add -A //对 git 仓库进行文件的增删改
$ git commit . -m "Your Commit Message" //提交把项目更新提交给 git 并附加相关信息
$ git remote add cnpaas <git-repo addr> //添加远端 git 仓库
$ git h -f cnpaas master //代码推送到CNPaaS。
然后就可以进入对应的应用后台,打开 CNPaaS网址 来访问你的静态网站。
对于已经完成过 git初始化 及 远端git仓库 设定的项目,每次更新只需要依次执行以下命令即可:
$ git add -A
$ git commit . -m "Your Commit Message"
$ git push cnpaas master
对于Git的详细使用,建议参考以下资料: Pro Git
如果想为你的 HTML 网站设定独立的域名进行访问,可参考 自定义网址 。
以下为一步一步的试范指引:如何快速在CNPaaS上运行WordPress网站。
下载 WordPress 4.0。因为WordPress默认使用了 Google 字体,在内地载入可能会有点慢,可按照 这里的方法 移除载入 Google Font。
为方便内地用户使用WordPress时获得更好的体验,我们也准备了一份 WordPress 4.0 优化版安装包,把 Google 字体源 转换到 360源。点击这里下载。
登陆 CNPaaS 后台,创建一个 “PHP 5.4” 应用:
然后点击该应用,在应用详情页面的“外挂服务”里,点击“新增数据库”里的“MySQL 5.5”按钮,即可创建 WordPress 所需的数据库。
把 WordPress 文件里的 wp-config-sample.php
文件另存为为 wp-config.php
。
然后打开 wp-config.php
, 把以下关键资料:
define('DB_NAME', 'database_name_here');
define('DB_USER', 'username_here');
define('DB_PASSWORD', 'password_here');
define('DB_HOST', 'localhost');
替换为:
/** WordPress数据库的名称 */
define('DB_NAME', getenv('OPENSHIFT_MYSQL_DB_NAME'));
/** MySQL数据库用户名 */
define('DB_USER', getenv('OPENSHIFT_MYSQL_DB_USERNAME'));
/** MySQL数据库密码 */
define('DB_PASSWORD', getenv('OPENSHIFT_MYSQL_DB_PASSWORD'));
/** MySQL主机 */
define('DB_HOST', getenv('OPENSHIFT_MYSQL_DB_HOST'));
最后一步就是把 WordPress 代码推送到我们的代码库上。
你可以依次执行:
$ git init
$ git add -A
$ git commit . -m "Your Commit Message"
$ git remote add cnpaas <git-repo addr>
$ git push -f cnpaas master
其中 <git-repo addr>
替换为 CNPaaS 上应用后台的 Git地址。
详情可参看 这里。
Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。
详细介绍可访问 Symfony官网 ,并阅读 官方文档 或通过 The Quick Tour 了解如何安装 Symfony 以及用使用 Symfony框架 开发应用。
我们接下来将以 The Quick Tour 里的示例所创建的初始应用为例子,介绍如何在 CNPaaS 部署 Symfony 应用。
登陆 CNPaaS 后台,创建一个 “PHP 5.4” 应用:
然后点击该应用,在应用详情页面的“外挂服务”里,点击“新增数据库”里的“MySQL 5.5”按钮,即可创建 WordPress 所需的数据库。
安装好 Symfony 之后,我们可以用 symfony
命令来创建项目,
Linux 或者 Mac OS X 下执行:
$ symfony new myproject
Windows 下执行:
c:\> php symfony.phar new myproject
创建成功之后,进入 myproject
目录,创建 .openshift
目录并在 .openshift
里创建 action_hooks
目录:
mkdir -p .openshift/action_hooks
进入 action_hooks
目录后创建一个名为 deploy
的文件,内容为:
#!/bin/bash
export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"
if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
curl -s https://getcomposer.org/installer | /usr/bin/php -- --install-dir=$OPENSHIFT_DATA_DIR
else
/usr/bin/php $OPENSHIFT_DATA_DIR/composer.phar self-update
fi
unset GIT_DIR
cd $OPENSHIFT_REPO_DIR
/usr/bin/php $OPENSHIFT_DATA_DIR/composer.phar install
/usr/bin/php $OPENSHIFT_REPO_DIR/app/console cache:clear --env=dev
chmod -R 0777 $OPENSHIFT_REPO_DIR/app/cache
chmod -R 0777 $OPENSHIFT_REPO_DIR/app/logs
并且让 deploy
文件有可执行权限:
chmod +x deploy
里边使用了 CNPaaS 的环境变量:
OPENSHIFT_DATA_DIR
: 持久数据目录。OPENSHIFT_REPO_DIR
: 运行应用的主目录。关于更多的环境变量及详细介绍,请阅读 OpenShift 的官方文档 。
在项目的 app/config/
目录里创建 params.php
文件。并将 CNPaaS 的数据库环境变量写入:
<?php
$container->setParameter('database_host', getEnv("OPENSHIFT_MYSQL_DB_HOST"));
$container->setParameter('database_port', getEnv("OPENSHIFT_MYSQL_DB_PORT"));
$container->setParameter('database_name', getEnv("OPENSHIFT_APP_NAME"));
$container->setParameter('database_user', getEnv("OPENSHIFT_MYSQL_DB_USERNAME"));
$container->setParameter('database_password', getEnv("OPENSHIFT_MYSQL_DB_PASSWORD"));
?>
并且要把对 params.php
的调用写进该项目的配置文件里,编辑 app/config/config.yml
,在 imports:
部分加上这句:
- { resource: params.php }
编辑 .gitignore
文件,如果里面有以下两条:
/app/config/parameters.yml
/web/bundles/
请把这两条从 .gitignore
删除。
在项目的根目录创建一个 .htaccess
文件,内容如下:
RewriteEngine on
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
然后可以把 web/app_dev.php
的第12到18行注释掉:
// if (isset($_SERVER['HTTP_CLIENT_IP'])
// || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
// || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
// ) {
// header('HTTP/1.0 403 Forbidden');
// exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
// }
最后一步就是把代码推送到我们的代码库上。
你可以依次执行:
$ git init
$ git add -A
$ git commit . -m "Your Commit Message"
$ git remote add cnpaas <git-repo addr>
$ git push -f cnpaas master
其中 <git-repo addr>
替换为 CNPaaS 上应用后台的 Git地址。
对于Git的详细使用,建议参考以下资料:Pro Git
最终的测试页面可以通过访问: xxx.app.cnpaas.io/app_dev.php
其中 xxx.app.cnpaas.io 为 CNPaaS后台 该应用的详情页面里面 CNPaaS 网址 一项的网址。
如果希望直接打开域名直接访问 app_dev.php
或者 以 app_dev.php
作为主程序文件。可以编辑 web/.htaccess
文件,把里面关于 app.php
的改为 app_dev.php
然后再通过 git 命令推送代码到 CNPaaS 。
成功后如图所示:
如果想为你的 Django 应用设定独立的域名进行访问,可参考 自定义网址 。
Express 是一个简洁而灵活的 node.js Web应用框架,关于它的详细介绍及安装和使用方法请参考 Express.js官网 。
目前 CNPaaS 的部署方法主要针对 Express 3.x 的版本,请留意文档的后续更新
首先你需要在 CNPaaS 后台创建一个 Node.js 应用:
我们可以点击进去应用详情,点击应用的温馨提示可以查看快速部署的提示。
首先在终端里用 git clone 这个应用的 Git 地址 的方法获得初始项目:
$ git clone <git-url>
然后将 Express 应用目录里的所有文件复制到 git clone
下来的初始项目的目录里。
为了让我们的 Express 应用能顺利在 CNPaaS 运行,我们需要对程序作出一些必要的修改。
创建 Express 应用后,我们以“hello world”为例,主程序文件(比如 app.js)的内容是为:
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
app.listen(3000);
这样程序将以端口3000运行,通常可以通过浏览器打开 http://localhost:3000 进行访问。
在 CNPaaS 平台上,需要将端口和IP地址根据 Openshift的环境变量 进行定义,在程序里加入:
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
在 CNPaaS 的运行环境里,Express 应用通常会用到这两个环境变量:
OPENSHIFT_NODEJS_PORT
: Node.js应用端口。OPENSHIFT_NODEJS_IP
: Node.js应用IP地址。在 Node.js 类型的应用里,我们可以通过 process.env.环境变量名
的形式来调用该环境变量。
app.listen
的形式为:
app.listen(server_port, server_ip_address, function () {})
另外由于 CNPaaS 的运行环境会根据 Express 项目里的 package.json 来自动执行 npm install 来安装模块,以及判断如何执行你的程序,所以有两点需要注意:
如果你主程序文件是 app.js 并以 node app.js
执行的话,package.json 里应该有以下代码:
“scripts”: { “start”: “node app.js” }, “main”: “app.js”,
在 .gitignore 文件里加入这一句:
node_modules
以避免本地安装的模块和 CNPaaS 的运行环境不兼容。
在 CNPaaS 的应用后台的外挂服务里可以一键创建 MongoDB 数据库:
创建后点击可查看该数据库的详细信息,包括环境变量和对应的值:
我们可以数据库信息配置我们的程序来让它在 CNPaaS 上运行。
修改完项目之后,依次执行以下命令:
$ git add -A .
$ git commit -m "commit信息"
$ git push origin master
即可把项目部署到 CNPaaS。
对于Git的详细使用,建议参考以下资料:Pro Git
打开 CNPaaS后台 该应用的详情页面,里面有 CNPaaS 网址 一项,点击该网址,即可访问你的应用。
如果想为你的 HTML 网站设定独立的域名进行访问,可参考 自定义网址 。
我们可以用一些实力进行测试,比如 Github上这个:
express3-mongodb-bootstrap-demo
把该项目clone下来后并根据其 Install and Run 提示创建config.js之后,我们需要修改 app.js 文件,让它按照上述提到的方法在 CNPaaS 上运行:
去掉或者注释掉这行:
app.set(‘port’, process.env.PORT | 3000); |
把 改成这样子:
var generateMongoUrl = function(){
var connection_string = process.env.OPENSHIFT_MONGODB_DB_HOST + ‘/’ + process.env.OPENSHIFT_APP_NAME; if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){ connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + “:” + process.env.OPENSHIFT_MONGODB_DB_PASSWORD + “@” + process.env.OPENSHIFT_MONGODB_DB_HOST + ‘:’ + process.env.OPENSHIFT_MONGODB_DB_PORT + ‘/’ + process.env.OPENSHIFT_APP_NAME; } return connection_string; } mongoose.connect(generateMongoUrl());
定义 CNPaaS 以 npm start 的方式运行该应用,在项目目录里执行:
mkdir -p .openshift/markers && touch .openshift/markers/use_npm
接下来依次执行以下命令把该项目部署到 CNPaaS 上:
$ git add -A .
$ git commit -m "commit信息"
$ git remote add cnpaas <git-url>
为 CNPaaS 后台创建 Node.js 应用后获得的 Git 地址
$ git push -f cnpaas master
请参考应用后台里 Git 地址 栏目 温馨提示 的 现有项目 部分。
git push
成功之后可以在终端看到相应信息:
最后打开 CNPaaS 后台应用详情页里的 CNPaaS 网址 测试一下:
Django 是一个基于 Python 的开源Web应用框架,关于它的详细介绍及安装和使用方法请参考 Django官网 。
Python 开发者可以使用 pip 进行安装:
$ pip install Django==1.7.6
然后用一句命令就可以开始你的 Django 项目:
$ django-admin startproject djangoApp
其中“djangoApp”是你的 Django 应用名称,可根据你自己的需要命名。
在 CNPaaS 部署 Django 项目极其简单,首先你需要在 CNPaaS 后台创建一个 Python 应用:
然后点击进去应用详情,点击应用的温馨提示可以查看快速部署的提示。
首先在终端里用 git clone 这个应用的 Git 地址 的方法获得初始项目:
$ git clone <git-url>
然后把你的 Django 项目目录里的所有文件复制到这个 git clone 下来的项目目录里。
如果还没有开始开发 Django 项目,你可以在 git clone 之后,进入初始项目的目录,然后:
$ django-admin startproject djangoApp
把 djangoApp 重命名:
$ mv djangoApp djangoAppReName
把原 djangoAppReName 里的文件都移出来:
$ mv djangoAppReName/* .
并删除这个空的 djangoAppReName :
$ rmdir djangoAppReName
这时候需要修改初始项目的两个文件。
把 setup.py 里原来注释 Django 用的“#”去掉_(同时可以修改里边的其他信息)_:
install_requires=['Django>=1.3'],
如图所示:
把 wsgi.py 里的所有内容改为:
#!/usr/bin/python
import os
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoApp.settings")
PY_DIR = os.path.join(os.environ['OPENSHIFT_REPO_DIR'], "python")
virtenv = PY_DIR + '/virtenv/'
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
exec(open(virtualenv).read(), dict(__file__=virtualenv))
except IOError:
pass
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
CNPaaS 将会根据 wsgi.py 的设定运行你的 Django 项目。
需要特别注意的是:
djangoApp.settings
里的 djangoApp 根据你的实际情况来定,通常是你用 django-admin 命令创建项目的那个项目名。* **`OPENSHIFT_HOMEDIR`** : 整个项目的根目录。
* **`OPENSHIFT_DATA_DIR`** : 持久数据目录。
* **`OPENSHIFT_REPO_DIR`** : 运行应用的主目录。
关于更多的环境变量及详细介绍,请阅读 OpenShift 的官方文档 。
如果是 Python 项目调用环境变量,请使用以下方法:
env_var = os.environ['OPENSHIFT_ENV_VAR']
修改完项目之后,依次执行以下命令:
$ git add -A .
$ git commit -m "commit信息"
$ git push origin master
即可把项目部署到 CNPaaS。
对于Git的详细使用,建议参考以下资料:Pro Git
打开 CNPaaS后台 该应用的详情页面,里面有 CNPaaS 网址 一项,点击该网址,即可访问你的应用。
如果想为你的 Django 应用设定独立的域名进行访问,可参考 自定义网址 。
Flask 是一个使用 Python 编写的轻量级 Web 应用框架。也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。详细介绍可访问 Flask官网 ,或者阅读 Flask中文文档 。
下面我们将以一个 Flask 的“hello world”程序为例子来介绍如何用最快的速度在 CNPaaS 上部署你的 Flask 应用。
首先你需要在 CNPaaS 后台创建一个 Python 应用:
然后点击进去应用详情,点击应用的温馨提示可以查看快速部署的提示。
首先在终端里用 git clone 这个应用的 Git 地址 的方法获得初始项目:
$ git clone <git-url>
进入项目目录,编辑 requirements.txt 这个文件,加入这行:
Flask==0.10.1
然后编辑 wsgi.py 文件,把所有内容去掉,替换为:
#!/usr/bin/python
import os
import sys
PY_DIR = os.path.join(os.environ['OPENSHIFT_REPO_DIR'], "python")
virtenv = PY_DIR + '/virtenv/'
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
exec(open(virtualenv).read(), dict(__file__=virtualenv))
except IOError:
pass
from hello import app as application
其中 os.environ['OPENSHIFT_REPO_DIR']
调用了 CNPaaS 关于应用运行目录的环境变量。
关于更多的环境变量及详细介绍,请阅读 OpenShift 的官方文档 。
接下来依次执行:
$ git add -A .
$ git commit -m "try clean flask hello world"
$ git push origin master
这样就把程序文件推送到 CNPaaS 线上运行环境里。
同时 CNPaaS 会根据 requirements.txt 的设定安装相应的模块。所以你的 Flask 项目依赖什么模块就把 pip模块名称 及 版本号 列入到 requirements.txt 里。
你可以通过git返回的信息了解到整个过程是否顺利。完成之后你可以打开 CNPaaS 后台该应用的详情页,点击里面的 CNPaaS 网址 进行测试。
可以看到“Hello World”,一切都很顺利。
由于 Django 同样为 Python web框架,所以我们推荐你也参考一下 如何在 CNPaaS 部署 Django 应用 ,对某些细节(比如 CNPaaS 环境变量使用方法)有更详细的说明。
当你注册好一个帐号并创建了一个应用后,点击该应用打开应用详情页面,你会看到如下图:
这里有两个重要的资讯,Git地址 及 CNPaaS网址。
你的 PHP 代码准备好后,第一步就是执行 git push 命令将代码推送到我们的 git 代码库。
如你的代码目录还没曾用 git 管理,你需要进入该目录,并执行以下指令进行初始化:
$ git init .
一个代码目录的git初始化只需要执行一次,如果已经在用 git 了,可以跳过这步。
然后每次更新代码,执行以下命令:
$ git add -A
$ git commit . -m "Your Commit Message"
注:”Your Commit Message”双引号里的内容可替换为任何文字,比如你对这次代码更新的描述。
对于Git的详细使用,建议参考以下资料: Pro Git
你需要在 CNPaaS 上设置你的公钥。如还没有的话,请查看安装指南 (Windows, MacOS)
然后输入如下:
git remote add cnpaas <git-repo addr>
git push cnpaas master
第一句是加一个远端的 git 代码库地址。你的 就上上面截图的 Git 地址。第二句就是把代码推送到 CNPaaS 。
完成后,就可以应用地址来访问你的应用。如你要使用你的独立域名,请看自定义网址指南。
在你的 自定义网址 栏里加上你自己的域名。比如http://example.com
。现在只支持没有路径的域名。
在你域名的 DNS 服务里,加上一条 CNAME 记录。从你的域名 指向到你的 CNPaaS 网址, 即即应用详情里形如http://app-user.app.cnpaas.io
那个网址,注意添加CNAME记录时,将http://
去掉。