热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:PHP应用的CI/CD流程实践与学习:PHP运行环境的准备

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP应用的CI/CD流程实践与学习:PHP运行环境的准备相关的知识,希望对你有一定的参考价值。&

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP应用的CI/CD流程实践与学习:PHP运行环境的准备相关的知识,希望对你有一定的参考价值。



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

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

此系列博客只为记录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:8001;
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文件上传至服务器及正确配置服务器地址 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • Linux磁盘管理入门指南:MBR分区格式详解与安装步骤
    在 CentOS 7.x 环境下,本文详细介绍了 MBR 分区格式的基本概念及其安装步骤。实验中使用了 SAS 和 SATA 硬盘,其中 SAS 硬盘主要用于企业级应用和服务器,而 SATA 硬盘则广泛应用于个人计算机和低端服务器。文章通过具体操作示例,帮助读者更好地理解和掌握 Linux 磁盘管理的基本技能。 ... [详细]
  • 本文介绍了在Windows 10系统下使用VirtualBox虚拟机环境部署CentOS 7.2,并在其上安装Docker的具体步骤。针对宝塔面板在Docker容器中磁盘空间限制为8GB的问题,提供了详细的解决方案和优化建议,确保用户能够高效利用有限的存储资源。 ... [详细]
  • MixPHP V2.1:从多进程架构转向单线程协程的深层原因与技术解析 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • Django新手指南:第三步——构建你的首个项目
    在本教程中,我们将引导你完成创建第一个Django应用的步骤。通过实际操作,你将逐步了解Django框架的核心概念和基本功能。从项目结构到视图和模板的实现,我们将详细介绍每个环节,帮助你快速上手并构建出一个功能完整的Web应用。 ... [详细]
  • 在Ubuntu和Linux Mint系统中安装LibreOffice 6.0的详细步骤
    本文详细介绍了在Ubuntu和Linux Mint操作系统上安装LibreOffice 6.0的具体步骤,包括必要的系统准备、软件源配置以及命令行操作,确保用户能够顺利安装并使用这一开源办公套件。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • 在无网络环境下于CentOS 7系统中离线部署Nginx服务器
    nginx背景俄罗斯程序员IgorSysoev创建,于2004年NGINX首次发布,来解决C10K问题(10000并发客户端连接到单个服务器,导致服务器连接数过多崩溃的问题),是一 ... [详细]
author-avatar
目目目目目目目目目目目目
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有