一个比较不值得一提的问题,参照社区开发者最佳实践适用于”开发现代PHP“的环境配置指南
给一个做开发的朋友写的,他感觉挺有用于是扔到博客上咯。
请不要使用 XAMPP、PHPStudy这样的所谓的集成开发环境,虽然他很方便。错误的开发环境会造成很多对开发项目上线不利的情况,产生无法控制的差异… … 最终可能酿成严重的错误
简易的环境
本环境配置方法简单,适用于PHP的基础开发,不适用于生产环节项目直接使用
- PHP
- composer
- Git
没有看错,真的只需这3个。
PHP务必从 php.net 获取操作系统的对应版本,关于WindowsPHP的线程安全问题请自行查询相关资料。OSX 安装 php 可以通过包管理器 brew 进行获取,在自己没有足够能力的条件下不建议自行编译软件。
Composer 是PHP的包管理器,可以获取需要的PHP项目依赖,使用方式自行阅读官方文档。
数据库服务器可以根据自己需要的环境安装(建议使用Docker管理比较简洁)。可能需要的数据库服务器包括 MySQL、Redis、Memcache、PostgreSQL、Oracle等(根据自己的项目情况自行安装),注意管理好PHP扩展在 php.ini 中进行修改,有必要安装扩展时(例如安装swoole框架)请根据扩展的官方文档安装。
为什么没有Apache或者nginx? 请认真阅读《PHP the right way》文档,php -S localhost:8080
命令可以启动php内置的web服务器,所以无需Apache或者Nginx做web服务器。但是本命令不适用于在生产环境服务器使用。
另外不同的框架有自己的辅助工具更加便于开发,例如:Laravel框架中的php artisan
命令,可以很好的辅助我们进行开发。
⚠️注意:PHP 开发者必须了解 PSR 标准规范
快速线上环境部署脚本
比较方便、快捷的部署在生产环境服务器下的PHP环境,不推荐在开发环境下使用。
- oninstack - www.oneinstack.com
或者是
- lnmp - www.lnmp.org
方便快捷的近似于一键安装脚本,支持主流Linux服务器,但是也需要一些配置(少量但必要的)。可以安装的组合较多,例如可以安装 lnmpa (Linux+Nginx+MySQL+Apache httpd + PHP)实现“动静态分离架构”,当然还有Redis、Memcache、HHVM等其他选择,甚至可以安装Tomcat支持Java运行环境 … …
目前来说这两个产品已经经过了大量开发者、公司、部署生产项目的验证,稳定性很强,辅助管理工具多样。可以说是非常适合部署在线上环境的集成环境,而且稍适修改能更加适合不同环境的使用需求。
这是关于Apache httpd 2.2 的一个老梗,关于Nginx搭配php-fpm速度可以胜过它的。但是自从有了 Apache httpd 2.4 配合 phpmod 之后能保证速度胜过曾经的流行使用方案,所以请根据自身情况决定所使用的服务环境搭配,不要盲目迷信,实在不行根据自己的业务逻辑对部署的服务进行测试选型也不晚。
基于Docker的PHP环境
层级抽象、操作玄幻,定制的Docker容器/容器组 更适用于开发、生产或者两者兼顾可以根据自己情况而定。
已经被开发者们实践过的方式有很多:
- FatContainer(一个docker中集合了所有PHP所需的服务环境,不推荐)
- 服务分开依托于单个的docker容器
Docker 应用容器相对比较灵活,而且编写的容器镜像可以很方便的在开发环境中测试后部署到生产环境,可以根据自己的需要自己进行容器的编排。
参考资料:Docker在PHP项目开发环境中的应用
是不是还有其他的PHP环境搭建姿势
是的当然有!
- 使用vm安装操作系统搭建(比较土)
- Vagrant 搭建PHP开发环境
- Homestead (Laravel官方推荐的开发环境)
开发工具
IDE/代码编辑器
- PHPStorm - 力推!JB家的东西就是壕
- VScode
- Atom
- Sublime
命令行工具
- iTerm - Mac用户首选
- Cmder - Windows用户首选
- Git bash for windows
依赖管理
- Composer
版本控制
- Git
浏览器
- Chrome
其他需要了解的
- 《PHP the right way》
- php.net Document
- PSR
- RFC 2616 HTTP 协议