PHPer环境搭建配置的困扰

本人是斗志昂扬的PHPer,最近一直在Centos7/Debian8上搞各种PHP相关的开发环境的组合配置,纯想练到炉火纯青,拈来就用,现实很残酷,太打击,每天十一二点还抱着电脑在床头苦思:

  1. 本地装了N个虚拟机,也购买使用了Vultr的服务器,产生了一个问题:
    (1) 为什么PHP、mysql、mariadb等等软件的安装源地址各不一样(中国的,日本的,全世界的...),安装下来的版本不一样(5.4的,5.6的,7.x的...),yum install[apt-get install]后跟的名字也不一样(各领风骚),默认带的安装模块不一样...导致选择困难症的我不知道选去哪里找想要的安装源,择优强迫症...

  2. 有了以上疑难杂症,我直接去使用源码安装吧,又产生问题了:
    首先源码安装需要安装那些依赖倒是简单,接着要下载依赖的解压的依赖包(耗时),接着要处理编译过程中遇到的问题(靠运气),接着要给软件搭桥(如php和mysql),接着各种其他环境配置。。。。我只想快速在新的服务器上搭建一个测试环境,这样一搞时间过大半了。

好了,神通广大的你们,我想问到底有没有一种叫做“可靠的安装源”,或者桃源圣地,可以找到想要的泉水。
可不可以PHP, MYSQL、nginx、apache、mariadb、redis.....我想要那个版本可以迅速给我装上啊啊啊啊啊啊啊啊啊啊。

不要说什么弄个shell啥的,或者找个一键安装环境的那种
首先,本人只懂PHP和基本的linxu操作,其次,一键安装那种灵活性太低

阅读 4.4k
9 个回答

docker欢迎你

你来看我这个手册吧

https://www.load-page.com/bas...

  • remi 是PHP最好的源,从PHP 5.4 ~ PHP 7.1,因为历史原因 PHP版本最复杂

  • MySQL用它自己的源,包括Redis在内,用最新的版本没错

手册全部都是一笔一划写上去的,绝对不是百度的资料,并且一直在更新中。
这手册只针对CentOS

有过这种经历也挺好的,至少你知道了源是什么,知道编译要装很多依赖,我的很多同事都不知道呢(因为有运维负责这些)。

选个好源然后apt-install其实学不到多少东西,只是资源的搬运工,搬得炉火纯青也是搬别人的东西。

所以趁有时间还是要试一下自己编译。我用Arch较多,但是流程是一样的:

  1. 安装编译环境,例如gcc

  2. 下载php源代码

  3. configure

  4. make

先不用做太多配置,缺少依赖的时候configure会报错,缺了什么就用包管理器安装就好了(熟悉后再去试自己编译),试多几次就知道把依赖装全了,编译出第一个php,然后发现缺了各种php扩展,继续去configure改配置,一只改一直编译一直装依赖

最后就有了一个能用的php了,也许你会觉得配置不如源里的好,那你就可以去看源里的php的编译脚本,参考一下。

有了一次完整的自己编译php的经验,以后编译其他软件也是很简单的。

不要急于求成,多看多点文档,多花点时间,炉火纯青不是那么容易的。

目前,如果是单位使用,很多都是自建的服务器安装源或者软件包下载地址,这样就可以保证软件安装的版本问题,对于安装,这么多年几乎都是shell写脚本自动安装,直到docker的出现,你配置好docker镜像之后分发给其他服务器,运行该镜像就OK,这镜像就是你安装好的环境,感兴趣可以在搜索一下

新手上路,请多包涵

可以先装lnmp集成环境,然后去看看他的安装脚本就可以了。

版本不一致的原因

首先,不同的发行版,这些软件的版本是不一样的,比如ubuntu 16.04之前,默认php就是5系列,16.04之后,就是7系列。发行商主要是考虑他们的默认编译环境,可能与最新的包有冲突。而且这种可能性不小,虽然有些软件也完全没问题,比如php。

其次,使用apt、yum,其实是从一个源仓库里面下载安装包。不同的仓库,他们内在的版本也不一样。按理说这些库一般都是定时更新的,每小时或每几个小时都会从官方源更新。然而国情你要懂,作为国内第一的清华大学,他的开源库都弃坑过多次。

解决办法

第一,自己编译这个方式,是优缺参半的,一方面自己编译能固定版本,这是最大的优点。但编译的难度以及其可移植性则是个大缺点。尤其是php,我搞了这么多年,仍然没什么勇气编译php……参数真的太多了。

第二,找靠谱源,这是个比较靠谱的方式,但是需要一点耐心。对于php,其实大版本(5.4、5.6、7.0)之间有很大区别,小版本则区别很小,且多数源都支持一个稳定版本。如果系统允许,请选择7.0。对于mysql,官方社区仓库是你唯一选择。对于redis,这个软件比较特殊,还是自己编译比较好,而且编译也非常容易。

第三,上Docker,这是个最高级的解决办法,但是需要对linux有较好的基础知识,研究透了也不错。

综上,我的建议是考虑我的方法二。尽量避免自己编译,以及避免不停地折腾。因为你一旦折腾下去,这个问题是没完的。

附赠apt-get指定版本的方法:

apt-cache policy apache2
apt-get install apache2=2.2.20-1ubuntu1
推荐问题
宣传栏