[TOC]
# 概况
[Nanobox](https://nanobox.io) 是一个用于开发和部署应用程序的便携式微型平台。在本地工作时,Nanobox使用Docker来启动和配置根据您的特定需求配置的虚拟开发环境。当您准备部署到实时服务器时,Nanobox将采用相同的环境并将其转移到您选择的云提供商上,然后您可以通过Nanobox仪表板管理和扩展您的应用。
在这篇文章中,我们将逐步介绍并在本地运行一个全新的Phalcon应用程序,除了Nanobox之外没有安装任何东西。首先[创建一个免费的Nanobox帐户](https://dashboard.nanobox.io/users/register),然后[下载并运行Nanobox安装程序](https://dashboard.nanobox.io/download)。
## 创建一个新项目
创建一个项目文件夹并 `cd` 进入其中:
```bash
mkdir nanobox-phalcon && cd nanobox-phalcon
```
<a name='boxfile-yml'></a>
## 添加`boxfile.yml`
Nanobox使用[`boxfile.yml`](https://docs.nanobox.io/boxfile/) 来构建和配置应用程序的运行时和环境。在项目的根目录中,使用以下命令创建一个`boxfile.yml`:
```yaml
run.config:
engine: php
engine.config:
runtime: php-7.1
document_root: public
extensions:
- phalcon
extra_steps:
- echo "alias phalcon=\'phalcon.php\'" >> /data/var/home/gonano/.bashrc
```
这告诉Nanobox:
- 使用PHP[引擎](https://docs.nanobox.io/engines/),这是一组构建应用程序运行时的脚本
- 使用 PHP 7.1
- Apache文档根目录设置为`public`
- 包括Phalcon扩展。Nanobox采用了简单的扩展方法,因此您可能需要包含其他扩展。更多信息可以在[这里](https://guides.nanobox.io/php/phalcon/php-extensions/)找到
- 为Phalcon Devtools添加一个bash别名,这样你就可以使用`phalcon`命令了
## 将Phalcon Devtools添加到您的`composer.json`
在项目的根目录中创建`composer.json`文件,并将`phalcon/devtools` 包添加到您的开发需求中
```json
{
"require-dev": {
"phalcon/devtools": "~3.0.3"
}
}
```
>[warning] **注意** Phalcon Devtools的版本取决于您使用的PHP版本。
## 启动Nanobox并生成新的Phalcon应用程序
从项目的根目录运行以下命令以启动Nanobox并生成新的Phalcon应用程序。当Nanobox启动时,PHP引擎将自动安装并启用Phalcon扩展,运行将安装Phalcon Devtools的`composer install`,然后将您放入虚拟环境内的交互式控制台。您的工作目录将挂载到VM中的`/app`目录中,以便在进行更改时,它们将反映在VM和本地工作目录中。
```bash
# 启动nanobox并放入nanobox控制台
nanobox run
# cd into the /tmp directory
cd /tmp
# 生成一个新的phalcon应用程序
phalcon project myapp
# change back to the /app dir
cd -
# 将生成的应用程序复制到项目中
cp -a /tmp/myapp/* .
# 退出控制台
exit
```
## 本地运行应用程序
在实际运行新的Phalcon应用程序之前,我们建议使用Nanobox添加DNS别名。这将在指向您的开发环境的本地`hosts`文件中添加一个条目,并提供从浏览器访问您的应用程序的便捷方式。
```bash
nanobox dns add local phalcon.dev
```
Nanobox提供了一个`php-server`帮助程序脚本,可以启动Apache(或Nginx,具体取决于你的`boxfile.yml`配置)和PHP。当使用`nanobox run`命令传递时,它将启动本地开发环境并立即运行您的应用程序。
```bash
nanobox run php-server
```
运行后,您可以访问[phalcon.dev](http://phalcon.dev)上的应用程序。
## 检查环境
您的虚拟环境包含运行Phalcon应用程序所需的一切。随意逛逛。
```bash
# drop into a Nanobox console
nanobox run
# check the php version
php -v
# 检查phalcon devtools是否可用
phalcon info
# check that your local codebase is mounted
ls
# exit the console
exit
```
## Phalcon 和 Nanobox
Nanobox为您提供在隔离的虚拟环境中开发和运行Phalcon应用程序所需的一切。使用项目中的`boxfile.yml`,只需运`行nanobox run`,就可以在几分钟内启动并运行。
Nanobox有一个[Phalcon快速入门](https://github.com/nanobox-quickstarts/nanobox-phalcon),其中包括本文所涵盖的所有内容。他们还有一个[Nanobox Phalcon使用指南](https://guides.nanobox.io/php/phalcon/)。在以后的文章中,我们想介绍使用Phalcon和Nanobox的其他方面,包括添加和连接数据库,将Phalcon部署到生产中等等。如果您有兴趣,请在[Twitter](http://twitter.com/nanobox_io)上告诉我们。
- 常规
- Welcome
- 贡献
- 生成回溯
- 测试重现
- 单元测试
- 入门
- 安装
- Web服务器设置
- WAMP
- XAMPP
- 教程
- 基础教程
- 教程:创建一个简单的REST API
- 教程:Vökuró
- 提升性能
- 教程:INVO
- 开发环境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 开发工具
- Phalcon开发者工具的安装
- Phalcon开发者工具的使用
- 调试应用程序
- 核心
- MVC应用
- 微应用
- 创建命令行(CLI)应用程序
- 依赖注入与服务定位
- MVC架构
- 服务
- 使用缓存提高性能
- 读取配置
- 上下文转义
- 类加载器
- 使用命名空间
- 日志
- 队列
- 数据库
- 数据库抽象层
- Phalcon查询语言(PHQL)
- ODM(对象文档映射器)
- 使用模型
- 模型行为
- ORM缓存
- 模型事件
- 模型元数据
- 模型关系
- 模型事务
- 验证模型
- 数据库迁移
- 分页
- 前端
- Assets管理
- 闪存消息
- 表单
- 图像
- 视图助手(标签)
- 使用视图
- Volt:模板引擎
- 业务逻辑
- 访问控制列表(ACL)
- 注解解析器
- 控制器
- 调度控制器
- 事件管理器
- 过滤与清理
- 路由
- 在session中存储数据
- 生成URL和路径
- 验证
- HTTP
- Cookies管理
- 请求环境
- 返回响应
- 安全
- 加密/解密
- 安全
- 国际化
- 国际化
- 多语言支持