1 概述

1.1 文章目的

本文主要想为研发PHP项目的企业或个人提供上云指导,通过本文中的示例项目 “workerman-todpole”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测试管理的操作指导,覆盖软件开发全生命周期。

1.2 项目详情

1. 项目名称:workerman-todpole社区系统

2. 项目简介:workerman-todpole采用PHP(workerman框架)+HTML5技术开发,是一款以workerman作为应用服务器,前端采用HTML5+WebSocket开发的小蝌蚪即时交互游戏。 游戏交互很简单,点击屏幕小蝌蚪可以自由游动,其它玩家可以看到周围玩家的游动状态,并且可以即时聊天

3. 开发语言:PHP

4. 项目类型:蝌蚪游泳交互程序 使用PHP(workerman框架)+HTML5开发

5. 开发环境:PHP

6. 部署环境:Linux

7. 部署方式:shell部署

8. 项目架构

前端采用HTML5开发

以PHP的workerman框架开发后台游戏服务器

后端PHP多进程支持

采用WebSocket协议

PHP实时推送技术

独立运行,不依赖Mysql、apache、nginx等软件。

1.3 前提条件

1. 注册华为云账号:华为云官网注册华为云账号,此账号适用于所有华为云产品。

2. 弹性云服务器:部署将使用带有公网IP的ECS。

2 项目管理

2.1 创建项目

新建项目的开发流程包含两种类型:scrum流程、看板流程。Scrum流程是标准的敏捷开发流程,工作项层级为传统的scrum划分方法Epic->Feature->Story->Task&Bug,本项目为把工作划分的层级更清晰,选择了scrum流程。

2.2 创建迭代

本项目研发周期短,只有一次release,划分成三个迭代,迭代周期为一周。

2.3 梳理产品需求清单

项目规划是以思维导图的形式将工作项的层级结构展示出来,更直观的看到父子关系,在项目规划中新建工作项后,会自动生成到后面的Epic,Feature,Backlog和迭代页面,在迭代开始前,项目经理将从客户获取的所有需求信息,逐一落实到项目规划中,分解成story,并为工作项设置优先级。

2.4 输出迭代清单

在迭代开始前,在Backlog页面过滤出优先级“高”且重要程度为“关键”的工作项,纳入迭代1,与开发人员进行需求澄清。其余迭代,均可根据组内实际情况,按照优先级从高到低,重要程度减弱的顺序进行开发。

3 代码获取

3.1 新建代码仓库

1. 进入创建好的项目中,选择代码托管功能,点击右侧新建仓库按钮。

2. 进入新建仓库界面后,选择模板新建,左侧筛选条件中应用类型为Web Server,变成语言为PHP,选择完筛选条件后,选择出现的workerman-todpole,完成模板选择。

3. 选择完模板后填写仓库信息,点击确定,完成仓库创建。

4 云端持续部署流水线

4.1 编译构建

本PHP项目直接在linux主机环境下直接开启服务即可运行,本身无需进行编译构建打包,但是在DevCloud中云端部署需要可识别的软件包,所以在DevCloud中需要对PHP的程序进行简单的打包。

4.1.1 新建编译构建任务

1. 进入创建好的项目中,在构建&发布模块下选择编译,点击右侧新建按钮

2. 输入任务名称,选择对应代码仓库和分支

3. 选择公共模板中的Shell模板创建任务。

4. 进入任务配置界面后点击左侧的加号,添加步骤

5. 在弹出的操作步骤选择页面中选择添加“上传软件包到软件发布库”步骤

6. 点击参数设置选项,为本次任务添加两个配置参数,分别为pkgVersion和codeBranch作为版本号和代码仓库分支的参数,并在代码仓库分支选项中选定此参数。

7. 添加完步骤后点击左侧执行shell命令步骤,进行命令编辑。本任务添加的shell命令为“tar zcvf workerman_todpole.tar.gz *”,目的是将代码打包为tar.gz格式的软件包。

8. 接着选择左侧上传软件包到发布库步骤,编辑对应信息。构建包路径对应上一步shell命令中的打包路径,发布版本号为第一步添加的版本号参数,格式为${pkgVersion},最后包名为上传软件发布库后的包名。

9. 完成构建任务后,点击保存按钮。

10. 进入创建好的构建任务,点击开始构建按钮,在弹出的参数配置窗口输入要配置的参数值,点击确定执行构建任务。

4.2 部署

4.2.1 添加主机

将服务器主机授信到DevCloud里,用于部署网站。

点击“设置-通用设置-主机组管理”,将服务器以主机组的形式授信到项目当中。

新建主机组:

在主机组中添加主机:

4.2.2 环境准备

由于本项目需要特定的环境,因此需要在部署之前先登录对应的ECS云主机进行环境搭建。搭建环境的脚本内容如下:

php-cli安装方法:

composer安装方法:

4.2.3 新建模板部署任务

1. 新建模板部署

2. 编辑基本信息后,不使用模板直接创建

3. 点击“确定”后,添加部署步骤:

选择部署来源、解压文件、删除文件、执行shell脚本

选择部署来源:(将软件包传到云主机上)

解压文件:(将传输完毕的软件包解压到指定路径)

删除文件:(将传输到主机的软件包删除)

执行shell命令:(启动脚本start.sh位于代码根目录,现已被解压至解压路径)

将启动脚本start.sh复制到指定路径,并执行。启动脚本中的路径需要与部署主机中的实际路径相一致。

shell命令内容:

4. 点击确认按钮,保存任务配置。

4.2.4 执行部署任务

1. 进入配置好的部署任务中,点击“执行”按钮开始执行部署任务。

2. 当任务状态显示完成后,表明自动化部署执行成功,可在地址栏输入对应的访问地址,进行访问验证。本项目验证地址为http://ip:8383

4.3 流水线

当我们完成了编译构建和部署阶段的任务配置后,即可创建包含编辑构建和自动化部署的持续交付流水线了。

4.3.1 新建流水线任务

1. 进入流水线界面,点击新建流水线按钮,进入新建流水线页面。

2. 在新建流水线配置中,首先选择默认的基本场景,填写流水线名称,然后根据实际需要添加或删除流水线阶段步骤。

本项目中的阶段分别设定为构建阶段和部署阶段

3. 在添加具体的流水线任务之前需要先配置流水线参数

点击添加参数,添加两个参数,然后对参数信息进行配置

编辑新添加的两个参数名称为version和branch,参数默认值可以不用编辑

点击保存完成参数配置。

4. 在构建和部署阶段分别点击添加任务,然后点击编辑按钮对添加的任务进行编辑

5. 在构建的任务编辑界面,选择之前已经创建好的构建任务,并将该构建任务的参数值设为刚才配置的流水线参数,格式分别为${version}和${branch},以达到用流水线参数为构建任务参数赋值的目的。完成配置后点击保存按钮。

6. 部署任务的添加方法同上,在选择完对应的部署任务后,软件包一项选择上一个阶段构建任务生成的软件包,保证流水线中的部署任务是使用最新的包文件。完成配置后点击保存。

7. 完成所有任务后点击保存按钮对流水线任务进行保存。

4.3.2 执行流水线

1. 在配置好的流水线任务重点击全新执行,在弹出的参数窗口中,输入配置的参数值,点击确定,开始执行流水线任务。

2. 完成流水线任务。

华为云DevCloud,5人以下额度范围内,可以免费使用,并且可以预约免费的产品演示和技术交流,详情查看华为云官网

【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?【华为云技术分享】的更多相关文章

  1. ASP.NET MVC项目框架快速搭建实战

    MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,采用”Domain Model as View Model“的MVC开发 ...

  2. 【华为云实战开发】10.经典的C++项目怎么在云端开发?【华为云技术分享】

    1 概述 1.1 文章目的 本文主要想为研发C++项目的企业或个人提供上云指导,通过本文中的示例项目 “音频解析器”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测试管理的操作指导,覆盖软 ...

  3. 华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

    1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件 ...

  4. 【华为云实战开发】8.如何快速搭建C#网站并实现持续集成?【华为云技术分享】

    1 概述 1.1 文章目的 本文通过一个实例介绍如何使用软件开发服务DevCloud完成一个C#Web项目的开发. 1.2 项目详情 1. 项目名称:超级冷笑话网站 2. 项目简介:一个Web网站,包 ...

  5. Android项目开发全程(三)-- 项目的前期搭建、网络请求封装是怎样实现的

    在前两篇博文中已经做了铺垫,下面咱们就可以用前面介绍过的内容开始做一个小项目了(项目中会用到Afinal框架,不会用Afinal的童鞋可以先看一下上一篇博文),正所谓麻雀虽小,五脏俱全,这在里我会尽量 ...

  6. 微信开发准备(二)--springmvc+mybatis项目结构的搭建

    转自:http://www.cuiyongzhi.com/post/34.html 前面一篇有说道如何在MyEclipse中搭建maven项目,这里将继续介绍如何在搭建好的基础maven项目中引入我们 ...

  7. 如何在华为云软件开发云上运行Python

    一. 华为云软件开发云与Python 1. 华为云软件开发云简介 华为云软件开发云(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研发工具为一体的一站式云端DevOps平台,面向开发者 ...

  8. 直播预告 | 开源的云原生开发环境 —— Nocalhost

    直播来啦!本次云原生学院邀请到腾讯云 CODING DevOps 后端工程师王炜为大家分享<开源的云原生开发环境 -- Nocalhost>. 直播信息 讲师:王炜 - 腾讯云 CODIN ...

  9. 【阿里云产品公测】大数据下精确快速搜索OpenSearch

    [阿里云产品公测]大数据下精确快速搜索OpenSearch 作者:阿里云用户小柒2012 相信做过一两个项目的人都会遇到上级要求做一个类似百度或者谷歌的站内搜索功能.传统的sql查询只能使用like ...

随机推荐

  1. Requests库使用总结

    概述 Requests是python中一个很Pythonic的HTTP库,用于构建HTTP请求与解析响应 Requests开发哲学 Beautiful is better than ugly.(美丽优 ...

  2. jquery倒计时代码

    jquery倒计时代码<pre> <span id="day_show">0天</span> <strong id="hour_ ...

  3. 来了!GitHub for mobile 发布!iOS beta 版已来,Android 版即将发布

    北京时间 2019 年 11 月 14 日,在 GitHub Universe 2019大会上,GitHub 正式发布了 GitHub for mobile,支持 iOS 与 Android 两大移动 ...

  4. 云服务器linux系统修改时间和时区

    申请的云服务器时间不对,用同步网络时间的命令执行后依然有问题. 解决办法: # tzselect [root@ylyuat2-web02 logs]# TZ='Asia/Shanghai'[root@ ...

  5. MySQL InnoDB 实现高并发原理

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...

  6. JDBC事务的简单使用

    在实际功能当中,经常会碰到同时对一组数据进行增加和减少,最常见的就是交易功能. 事务内执行的语句,要么都成功,要么都失败,如果有一句没执行成功,整个事务都不会提交的. import java.sql. ...

  7. Secure CRT注册码

    secure CRT 把记忆的东西放在这就行了,:)   SecureCRT 5.2.2的注册码 Name:          Apollo InteractiveCompany:    Apollo ...

  8. 心里有点B树

    在说B树之前最好先看看2-3树, 2-3树是B树的一种特例, 什么B树, B树就是2-3树, 2-3-4 树 , 2-3-4-5... 树的统称, 而B+树又是B树的一种变形 性质: 什么是二节点, ...

  9. 力扣(LeetCode)最后一个单词的长度 个人题解

    给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入: &quo ...

  10. 领扣(LeetCode)Fizz Buzz 个人题解

    写一个程序,输出从 1 到 n 数字的字符串表示. 1. 如果 n 是3的倍数,输出“Fizz”: 2. 如果 n 是5的倍数,输出“Buzz”: 3.如果 n 同时是3和5的倍数,输出 “FizzB ...