CNPaaS

CNPaaS 是一个让开发人员无痛的发布自己的应用。你在平台上申请了一个帐号后,即可生成你的应用。

现时支持的应用为:

每个用户应用均拥有其独立 Git 地址来推送他的代码。代码推送到我们服务器端后,后台会生成一个容器并以一个独立网址来访问该网站。

容器与容器之间是完全独立运作的,所以你可以放心你的应用不会受到其他用户应用的运作所影响。

现在就安装相关软件库并开始用 CNPaaS 来简化你的部署体验吧!

Mac OS 安装指引

要有效使用本平台,你需要安装以下软件库。

  1. Ruby
  2. Git
  3. CNPaaS 命令行库
  4. 生成 公用 / 私有密钥 (public/private keys)

1. 安装 Ruby

一般 Mac OS 上都已装有 Ruby, 可执行以下命令来确认 Ruby 的版本

$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

如显示的版本号底于 ruby 1.9,请更新你的 Ruby. 这里 有一个详细的教学如何安装最新版本的 Ruby。

2. 安装 Git

可用以下指令确认 git 是否已安装到本机。

$ git -v

只要有 Git 指令基本上就可以了, 版本号不太重要。

3. 安装 CNPaaS 命令行库

注:在內地 rubygems.org 存放在 AWS S3 的源可能遭屏閉,可用以下指令來使用淘宝镜像来下载 Ruby Gems。

$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/

跟着直接输入以下指令来安装命令行:

$ gem install cnpaas_cli

4. 生成 公用 / 私有密钥 (public / private key)

你可先到 ~/.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 即可。


1. 创建应用

登陆 CNPaaS 后台,创建一个 “静态页面 / HTML5” 应用:

静态页面

2. 准备代码

准备好你的 HTML 代码。如果你项目是一个纯静态网站,请先在项目目录里创建一个命名为 public 的目录,并将首页的 HTML 文件命名为 index.html 保存在 public 目录里 。

你也可以先把应用初始代码通过 git clone 命令先保存到本地:

$ git clone <git-repo addr>

其中替换为 CNPaaS 上应用后台的 Git地址

然后再把自己的项目的public目录放进去该项目目录里。

通过 CNPaaS 后台的应用总汇,点击进去该应用详情,点击应用的温馨提示可以查看快速部署的提示。

3. 推送 HTML 代码

最后一步就是把 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

4. 设定独立域名

如果想为你的 HTML 网站设定独立的域名进行访问,可参考 自定义网址 。

部署 WordPress 应用

以下为一步一步的试范指引:如何快速在CNPaaS上运行WordPress网站。


1. 下载 WordPress

下载 WordPress 4.0。因为WordPress默认使用了 Google 字体,在内地载入可能会有点慢,可按照 这里的方法 移除载入 Google Font。

为方便内地用户使用WordPress时获得更好的体验,我们也准备了一份 WordPress 4.0 优化版安装包,把 Google 字体源 转换到 360源。点击这里下载

2. 创建应用

登陆 CNPaaS 后台,创建一个 “PHP 5.4” 应用:

创建PHP应用

然后点击该应用,在应用详情页面的“外挂服务”里,点击“新增数据库”里的“MySQL 5.5”按钮,即可创建 WordPress 所需的数据库。

2. 初始化 WordPerss 设置文件

把 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'));

3. 推送 WordPress 代码

最后一步就是把 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 应用

Symfony 简介

Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。
详细介绍可访问 Symfony官网 ,并阅读 官方文档 或通过 The Quick Tour 了解如何安装 Symfony 以及用使用 Symfony框架 开发应用。

部署方法

我们接下来将以 The Quick Tour 里的示例所创建的初始应用为例子,介绍如何在 CNPaaS 部署 Symfony 应用。

1.创建应用

登陆 CNPaaS 后台,创建一个 “PHP 5.4” 应用:

创建PHP应用

然后点击该应用,在应用详情页面的“外挂服务”里,点击“新增数据库”里的“MySQL 5.5”按钮,即可创建 WordPress 所需的数据库。

2.准备代码

安装好 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 的官方文档 。

在项目的 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 文件,如果里面有以下两条:

请把这两条从 .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.');
// }

3. 推送代码

最后一步就是把代码推送到我们的代码库上。

你可以依次执行:

$ 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

4. 测试

最终的测试页面可以通过访问: 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 。

成功后如图所示:

测试symfony应用

5. 设定独立域名

如果想为你的 Django 应用设定独立的域名进行访问,可参考 自定义网址 。

部署 Express 应用

Express 简介

Express 是一个简洁而灵活的 node.js Web应用框架,关于它的详细介绍及安装和使用方法请参考 Express.js官网 。

部署方法

目前 CNPaaS 的部署方法主要针对 Express 3.x 的版本,请留意文档的后续更新

1.准备项目

首先你需要在 CNPaaS 后台创建一个 Node.js 应用:

Express

我们可以点击进去应用详情,点击应用的温馨提示可以查看快速部署的提示。

首先在终端里用 git clone 这个应用的 Git 地址 的方法获得初始项目:

$ git clone <git-url>

然后将 Express 应用目录里的所有文件复制到 git clone 下来的初始项目的目录里。

2. 修改程序

为了让我们的 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 应用通常会用到这两个环境变量:

在 Node.js 类型的应用里,我们可以通过 process.env.环境变量名 的形式来调用该环境变量。

app.listen 的形式为:

app.listen(server_port, server_ip_address, function () {})

另外由于 CNPaaS 的运行环境会根据 Express 项目里的 package.json 来自动执行 npm install 来安装模块,以及判断如何执行你的程序,所以有两点需要注意:

以避免本地安装的模块和 CNPaaS 的运行环境不兼容。

3. MongoDB

在 CNPaaS 的应用后台的外挂服务里可以一键创建 MongoDB 数据库:

MongoDB

创建后点击可查看该数据库的详细信息,包括环境变量和对应的值:

MongoDB

我们可以数据库信息配置我们的程序来让它在 CNPaaS 上运行。

4. 推送代码

修改完项目之后,依次执行以下命令:

$ git add -A .
$ git commit -m "commit信息"
$ git push origin master

即可把项目部署到 CNPaaS。

对于Git的详细使用,建议参考以下资料:Pro Git

5. 访问应用

打开 CNPaaS后台 该应用的详情页面,里面有 CNPaaS 网址 一项,点击该网址,即可访问你的应用。

6. 设定独立域名

如果想为你的 HTML 网站设定独立的域名进行访问,可参考 自定义网址 。

实例解析

我们可以用一些实力进行测试,比如 Github上这个:
express3-mongodb-bootstrap-demo

把该项目clone下来后并根据其 Install and Run 提示创建config.js之后,我们需要修改 app.js 文件,让它按照上述提到的方法在 CNPaaS 上运行:

接下来依次执行以下命令把该项目部署到 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 成功之后可以在终端看到相应信息:Express

最后打开 CNPaaS 后台应用详情页里的 CNPaaS 网址 测试一下:

部署 Django 应用

Django 简介

Django 是一个基于 Python 的开源Web应用框架,关于它的详细介绍及安装和使用方法请参考 Django官网 。
Python 开发者可以使用 pip 进行安装:

$ pip install Django==1.7.6

然后用一句命令就可以开始你的 Django 项目:

$ django-admin startproject djangoApp

其中“djangoApp”是你的 Django 应用名称,可根据你自己的需要命名。

部署方法

1.准备项目

在 CNPaaS 部署 Django 项目极其简单,首先你需要在 CNPaaS 后台创建一个 Python 应用:

Django

然后点击进去应用详情,点击应用的温馨提示可以查看快速部署的提示。

首先在终端里用 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'],

如图所示:
Django

把 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 项目。

需要特别注意的是:

  1. djangoApp.settings 里的 djangoApp 根据你的实际情况来定,通常是你用 django-admin 命令创建项目的那个项目名。
  2. 你的 Python 项目需要用到一些 CNPaaS 指定的环境变量,比如:

    • OPENSHIFT_HOMEDIR : 整个项目的根目录。
    • OPENSHIFT_DATA_DIR : 持久数据目录。
    • OPENSHIFT_REPO_DIR : 运行应用的主目录。

关于更多的环境变量及详细介绍,请阅读 OpenShift 的官方文档 。
如果是 Python 项目调用环境变量,请使用以下方法:

env_var = os.environ['OPENSHIFT_ENV_VAR']

2. 推送代码

修改完项目之后,依次执行以下命令:

$ git add -A .
$ git commit -m "commit信息"
$ git push origin master

即可把项目部署到 CNPaaS。

对于Git的详细使用,建议参考以下资料:Pro Git

3. 访问应用

打开 CNPaaS后台 该应用的详情页面,里面有 CNPaaS 网址 一项,点击该网址,即可访问你的应用。

4. 设定独立域名

如果想为你的 Django 应用设定独立的域名进行访问,可参考 自定义网址 。

部署 Flask 应用

Flask 简介

Flask 是一个使用 Python 编写的轻量级 Web 应用框架。也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。详细介绍可访问 Flask官网 ,或者阅读 Flask中文文档 。

极速部署

下面我们将以一个 Flask 的“hello world”程序为例子来介绍如何用最快的速度在 CNPaaS 上部署你的 Flask 应用。

首先你需要在 CNPaaS 后台创建一个 Python 应用:

Flask

然后点击进去应用详情,点击应用的温馨提示可以查看快速部署的提示。

首先在终端里用 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 网址 进行测试。

Flask可以看到“Hello World”,一切都很顺利。

由于 Django 同样为 Python web框架,所以我们推荐你也参考一下 如何在 CNPaaS 部署 Django 应用 ,对某些细节(比如 CNPaaS 环境变量使用方法)有更详细的说明。

部署 PHP 应用

当你注册好一个帐号并创建了一个应用后,点击该应用打开应用详情页面,你会看到如下图:

应用详情

这里有两个重要的资讯,Git地址 及 CNPaaS网址

1. 用 Git 来管理你的 PHP 代码目录

你的 PHP 代码准备好后,第一步就是执行 git push 命令将代码推送到我们的 git 代码库。

如你的代码目录还没曾用 git 管理,你需要进入该目录,并执行以下指令进行初始化:

$ git init .

一个代码目录的git初始化只需要执行一次,如果已经在用 git 了,可以跳过这步。

然后每次更新代码,执行以下命令:

$ git add -A
$ git commit . -m "Your Commit Message"

注:"Your Commit Message"双引号里的内容可替换为任何文字,比如你对这次代码更新的描述。

对于Git的详细使用,建议参考以下资料: Pro Git

2. git push 推送代码

你需要在 CNPaaS 上设置你的公钥。如还没有的话,请查看安装指南 (WindowsMacOS)

然后输入如下:

git remote add cnpaas <git-repo addr>
git push cnpaas master

第一句是加一个远端的 git 代码库地址。你的 就上上面截图的 Git 地址。第二句就是把代码推送到 CNPaaS 。

完成后,就可以应用地址来访问你的应用。如你要使用你的独立域名,请看自定义网址指南

使用自定义网址来访问你的应用

  1. 在你的 自定义网址 栏里加上你自己的域名。比如http://example.com。现在只支持没有路径的域名。

  2. 在你域名的 DNS 服务里,加上一条 CNAME 记录。从你的域名 指向到你的 CNPaaS 网址, 即即应用详情里形如http://app-user.app.cnpaas.io 那个网址,注意添加CNAME记录时,将http://去掉。

应用详情

  1. 等 DNS 记录更新后(可能需要一、两个小时),你便可使用自定义网址来访问你的网站。
(完)
comments powered by Disqus
Powered by GitHub  &&  Jekyll | CC BY-NC-SA