PHP 运行环境 (AppSpec)

此文档主要介绍如何在 InnerStack 上构建并部署 PHP 7.4 运行环境。

编译 PHP 包

PHP 基于 C++、C 编程语言开发,此实例在 CentOS 8 环境中编译打包。

将要构建两个原始包

  1. php74 为 PHP 包
  2. php-keeper 为 InnerStack 开发的 PHP 配置工具

参考代码项目 https://github.com/inpack/php 开始构建

安装编译依赖

yum install -y libmcrypt libmcrypt-devel libwebp-devel libjpeg-devel libpng-devel freetype-devel libXpm-devel postgresql-devel bzip2-devel curl-devel libstdc++-devel openssl-devel sqlite-devel  zlib-devel smtpdaemon libedit-devel pcre-devel bzip2 perl libtool gcc-c++ libtool-ltdl-devel  libzip-devel krb5-devel postgresql-devel libxml2-devel libxslt-devel gd-devel libmcrypt-devel aspell-devel libicu-devel gmp-devel

# 如果有遗漏的依赖包,请参考编译时提示信息自行添加

编译 php

注: 开始构建前,请确保你已经安装了 inpack 工具, 参考文档 inpack cli
git clone https://github.com/inpack/php.git
cd php

inpack build --spec inpack-74.toml --version 7.4.11

Building
  package: php74
  version: 7.4.11
  release: 1
  dist:    el8
  arch:    x64
  vendor:  php.net
  OK
    php74-7.4.11-1.el8.x64.txz

如果一切顺利,上传新构建的 inpack 原始包文件

inpack push --repo <your-alias-name> --pack_path php74-7.4.11-1.el8.x64.txz 

PUSH /opt/src/inpack/php/php74-7.4.11-1.el8.x64.txz
  ok php74 100%

构建 php-keeper

安装必要的依赖:

# CentOS 8
yum install -y golang

# 如果有遗漏的依赖包,请参考编译时提示信息自行添加

inpack 编译打包

git clone https://github.com/inpack/php-keeper.git
cd php-keeper

inpack build --dist linux

Building
  package: php-keeper
  version: 0.10.0
  release: 1
  dist:    linux
  arch:    x64
  vendor:  sysinner.com
  OK
    php-keeper-0.10.0-1.linux.x64.txz

如果一切顺利,上传新构建的 inpack 原始包文件

inpack push --repo <your-alias-name> --pack_path php-keeper-0.10.0-1.linux.x64.txz 

PUSH /opt/src/inpack/php-keeper/php-keeper-0.10.0-1.linux.x64.txz
  ok php-keeper 100%

构建 php AppSpec 文件

AppSpec 通过登录 InnerStack inPanel 可视化 WebUI 管理 (https://ip-address:9530/in):

进入方式: Applications / AppSpec Center / New AppSpec / Advanced editing mode

将上面导出的 https://github.com/inpack/php.git 项目根目录 app-spec-v74.toml 文件内容复制到提交框并提交, 如下图:

app-new

注: 数据库配置逻辑入口在 AppSpec/Script Executors 实现, 可参考实例文件细节

构建配置项

在 inPanel/Applications/AppSpec 列表的 Config 列点击进入(如果是通过高级编辑模式导入的原始 app-spec.toml 可跳过此项), 如下:

app-new

这里定义了1个配置变量 php_modules, 用与在部署 PHP AppSpec 时动态配置需要加载的 PHP 模块名

如上步骤提交 AppSpec 后,就可以开始部署了.

部署

Step 1: New Instance

在 AppSpec List 找到 sysinner-php-v74 , 点击 “New Instance”

app-new

Step 2: 设置 Pod 容器

如下图, 系统会提示两个选项:

  1. 新建 Pod: 将这个 App 绑定到一个全新的 Pod 中运行
  2. 绑定到已有的 Pod: 一般用于 DevOps 开发,测试,生产环境推荐一个 App 对应一个 Pod.

app-new

这里选择新建 Pod Instance, 提示选择 Pod 规格:

app-new

确认 Pod 信息后继续下一步.

Step 3: 配置 PHP

用户配置并确认配置信息,点击 “Next” 继续下面的操作.

app-new

Step 4: 创建完成

成功后,会自动跳转到 Pod 详情,可以在这个页面里观察 AppSpec 在这个 Pod 里面的执行情况, 请等待一段时间,没有异常的话,Pod 详情页会出现更多有关这个 AppSpec 的信息,如图:

app-new

PHP 后续操作

PHP 作为基础中间件,在实际应用中大致有3种类型的应用方式:

  1. 命令行方式, 通过 SSH 远程登录 Pod 以后使用 /opt/php/php74/bin/php --version 确认部署有效,如何使用 SSH 登录 POD
  2. Web后端方式,可以参考 Zentao 项目管理系统 实例配置 PHP 作为 nginx/php-fpm 方式运行的详例,AppSpec/Script 已经包含 php-fpm 自动启动的脚本。

注: 更多的操作信息请参考 https://www.php.net/

申明

  • InnerStack/AppCenter 旨在助力企业构建自主 PaaS 平台,InnerStack 自身不提供任何云服务
  • AppCenter 涉及的方案、文档、代码、数据旨在为企业构建业务系统过程中提供指导参考,这些 AppSpec 组件可能没有经过完整的功能配置、测试和安全审计, 请不要直接用于生产系统。
  • AppCenter 包含的第三方项目源码统一开放在 https://github.com/inpack