前言:一直以来想学习与实践一下敏捷开发,之前项目虽说口口声声我们项目是敏捷开发,其实很扯。

敏捷开发如果有持续集成、持续部署的支持,那样开发、测试、运维将节省不少精力。

此系列博客只为记录CI/CD的实践与学习:

一、PHP运行环境的准备(centos7.4下安装docker环境搭建 PHP7.1 + MySQL5.7环境,openresty1.13.6.1做代理服务器)

服务器环境:阿里云ECS

操作系统:centos7.4

1、 安装docker

https://help.aliyun.com/document_detail/51853.html?spm=5176.11065259.1996646101.searchclickresult.3461232cUlszWt

具体可参照阿里云说明文档

2、安装MySQL环境

我这里由于单独没有购买MySQL服务,所以就安装了MySQL环境

2.1 拉取MySQL镜像

docker pull hub.c.163.com/library/mysql:5.7

2.2 创建MySQL容器(设置root密码,并映射在宿主机3306端口)
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql57 hub.c.163.com/library/mysql:5.7

3、安装PHP环境

3.1 拉取PHP容器

docker pull hub.c.163.com/library/php:7.1-fpm

3.2 创建PHP容器

创建一个PHP的api的项目容器(并创建需要解释的PHP脚本目录数据卷目录,此项目暴露的端口为8001)
docker run -d -v /home/www/php/zjjbnb_api:/var/www/html -p 8001:9000 --link mysql57:mysql --name php71 hub.c.163.com/library/php:7.1-fpm

4、安装web环境

这里选择了openresty并且直接安装在宿主机上,而没有采用docker容器的形式。

本系列操作主要还是从实际痛点中出发:

a. 平时开发PHP应用时,最能影响项目的环境因素主要是PHP版本以及对应的扩展,对MySQL基本不挑,对web环境如NGINX版本更加不挑;

b. 项目中代码风格与代码结构是否合理

c. 代码能否持续集成(以前都是开发完了,web项目从前端大致走一遍流程,然后发提测邮件,把最新的开发代码打包一份给测试)

d. 代码环境是否安全,有漏洞被提权了怎么办、xss、sql注入了怎么办?

这些是我认为有痛点的地方

PHP代码跑在docker容器中算比较安全了;openresty能很好的做项目层面的waf(Web应用防护系统),做除了云服务器商提供的服务的第二道保障

so:安装了openresty

https://openresty.org/cn/installation.html

具体安装可以参考openresty官网

安装完后,这个项目的NGINX大致配置如下(只改了.php相关配置):

        location ~ \.php$ {
root /var/www/html/public;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

将PHP代码交给docker的PHP容器去运行,我这里装了一个laravel应用:

PHP应用的CI/CD流程实践与学习:一、PHP运行环境的准备的更多相关文章

  1. 一个简单CI/CD流程的思考

    因为公司有两地研发团队,在统一CI/CD上难度不亚于两家公司合并后的新流程建立,并非不可攻克,简单描述下心得. 首先,代码管理使用gerrit -> 因其强大的 codereview 功能被选中 ...

  2. 《CI/CD 流程以及原理说明》

    自动化部署 CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在 ...

  3. CI/CD 最佳实践的基本原则 互联网后端架构 2020-10-04

    https://mp.weixin.qq.com/s/UfGmCueEm8n2jdegng1F_g CI/CD 最佳实践的基本原则 互联网后端架构 2020-10-04

  4. 中国.NET开发者峰会特别活动-基于k8s的微服务和CI/CD动手实践报名

    2019.11.9 的中国.NET开发者峰会将在上海举办,到目前为止,大会的主题基本确定,这两天就会和大家会面,很多社区的同学基于对社区的信任在我们议题没有确定的情况下已经购票超过了300张,而且分享 ...

  5. 容器平台自动化CI/CD流水线实践之一:环境概述

    一.架构图

  6. forge k8s/kubernetes ci/cd 最佳实践

    forge的官网是: http://forge.sh forge工具是一个部署工具, 将你的应用自动更新到kubernets集群中, 只需要配置简洁的配置文件和模板即可. 其它的就交给forge, 它 ...

  7. .NetCore 配合 Gitlab CI&CD 实践 - 单体项目

    前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...

  8. 7款不错的 CI/CD工具

    时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短.更快的发布周期.而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起.如果您有意提升发布频率,或者是不太清楚哪些工 ...

  9. 8款不错的 CI/CD工具

    Jenkins Jenkins是CI市场中最知名且最常见的名号之一.其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署.顺带一提:我们 ...

随机推荐

  1. CentOS上部署Django+Nginx+Uwsgi环境

    在CentOS上部署Django+Nginx+Uwsgi环境 奇谭  2016-09-01 评论  Linux  python django nginx uwsgi VirtualEnv的作用:创建隔 ...

  2. js生成中文二维码

    http://www.cnblogs.com/xcsn/archive/2013/08/14/3258035.html http://www.jb51.net/article/64928.htm 使用 ...

  3. Java进阶7并发优化4——JDK并发数据结构

    Java进阶7并发优化4——JDK并发数据结构20131114 由于并发程序和串行程序的不同特点,在串行程序中使用的数据结构可能无法在并行程序中直接的正常使用,因为这些数据结构可能不是线程安全的,所以 ...

  4. 转载:【Oracle 集群】RAC知识图文详细教程(六)--RAC在LINUX上使用NFS安装前准备

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  5. mac下mysql 1045 (28000): Access denied for user 'root'@'localhost' (using password:

    新入了mac pro,安装好mysql后,用终端进入mysql遇到个问题: 1045 (28000): Access denied for user 'root'@'localhost' (using ...

  6. kmplayer加速播放视频(转)

    转自微博:http://blog.sina.com.cn/shaguazhu1213 KMPlayer控制播放速度的快捷方式 (2011-11-12 10:51:56) 标签: 杂谈 分类: 编程之旅 ...

  7. Unicode 和 UTF-8 有何区别? - 引自知乎

    作者:于洋链接:http://www.zhihu.com/question/23374078/answer/69732605来源:知乎著作权归作者所有,转载请联系作者获得授权. 很久很久以前,有一群人 ...

  8. GPU编程自学4 —— CUDA核函数运行参数

    深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...

  9. 原生js 保存图片到本地

    <template> <div> <!--创建一个cavas 用来存放图片--> <canvas id="cavasimg" width= ...

  10. js之简易计算器

    <!DOCTYPE html PUBLIC "-//W3C//Dli XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...