运维很渣的 PHP 新手, 请问, 现公司服务器 lnmp 环境, php 版本还是 5.4 的, 太老了, composer 一些包有的都跑不起来, 想升级到 5.6 或者 PHP7 ! 但是很多老项目运行在上面, 不敢, 轻易升级! Q1: 有没有什么办法? 老项目依旧在 5.4 下运行, 以后开发的新项目运行在 5.6 下或者 7 下, 他们能在一台服务器上 和谐共存? Q2: 最近, 关注到 docker, 是不是一个很好的解决方案呢?
1
Sikoay 2017-08-28 00:35:40 +08:00 via Android 1
配置 nginx 的 php-fpm ? 把对应的站点配置到对应的 PHP 版本就行了吧
|
2
Sanko 2017-08-28 00:36:16 +08:00 via Android
宝塔面板不知道行不行
|
4
WordTian 2017-08-28 00:37:51 +08:00 via Android 2
对啊,不同版本的 php 监听不同的端口,在不同网站的 nginx 配置文件把 php 转发到对应版本的端口就行啊
|
8
msg7086 2017-08-28 01:33:35 +08:00 1
docker 比较好点其实。
比起在宿主上折腾 3 个 PHP 还要保证他们不冲突(也就是势必要自己编译安装,自己创立配置文件等等),docker 是直接提供了 3 个新的操作系统运行环境,并且上面跑的是 3 个原生的 PHP 安装,比你自己折腾要方便。 PS: 我们有一个类似需求是在 Debian 9 里运行 Ubuntu 14.04 环境的程序,最后是用的 chroot 而不是 docker。 |
9
WordTian 2017-08-28 01:57:59 +08:00 via Android
不用自己编译安装啊,不同版本安装不冲突的。就比如 centos,安装 php7.1 是 yum install php71w-*,其他版本类似,每版本的包名都有区别。但就是都监听 9000 端口,需要改其他版本的监听端口。
|
10
ETiV 2017-08-28 02:08:55 +08:00 via iPhone
docker php apache 最简单了
外层 nginx 设置一个 http proxy 就可以用 |
11
wangxiyu191 2017-08-28 02:15:47 +08:00 via Android
如果用的是比较传统的部署方式,那也可以看看 lxc。感觉比 docker 容易适应一些。
|
12
kslr 2017-08-28 08:15:20 +08:00 via Android
如果监听 sock 是可以直接包安装
|
13
scofieldpeng 2017-08-28 08:17:58 +08:00
这不就是 docker 的应用场景?
|
14
dangyuluo 2017-08-28 08:55:46 +08:00
docker 是干嘛的。。。。
|
15
loadinger 2017-08-28 09:21:50 +08:00
或者编译一个 PHP7,然后把端口改为非 9000,对应着 nginx 改一下就可以了.
|
16
zgk 2017-08-28 09:25:49 +08:00 via Android
可以用不同的 prefix 编译不同版本的 PHP,然后在各自的 php-fpm 配置文件下监听不同的 unix socket,Nginx 根据不同的 URL 来做转发,还是可以的,就是文件权限所有者什么的要多费点心去配置
|
17
mcfog 2017-08-28 09:28:04 +08:00 via Android 1
不是我说啥,基本的编译,prefix,手动配置 fpm 这些看看 README 面向谷歌运维都搞不定的话,搞 docker 就是在给自己挖坑
|
18
ssoftlns 2017-08-28 09:39:00 +08:00
docker 是最佳实践
|
19
234747005 2017-08-28 09:59:48 +08:00
你现在这个情况并不适合用 docker,,
建议你还用 nginx,proxy_pass 到不同版本的 php 上面吧。 |
20
tszyh 2017-08-28 10:21:59 +08:00
安装到不同目录 然后用不同的端口就可以了
|
21
lianxiaoyi 2017-08-28 10:22:43 +08:00
论 docker 的牛逼之处
|
22
Famio 2017-08-28 10:28:14 +08:00
我就是双版本共存的,nginx 里面不同网站监听不同端口不就好了,比如 9000,9001
|
23
falcon05 2017-08-28 11:25:08 +08:00 via iPhone
要编译安装啊,包管理工具装的是不是都指向同一个配置文件,同一个服务自启动文件路径呢?
|
24
thecon 2017-08-28 11:32:58 +08:00
php-fpm 设置成不同端口就可以了
|
25
atcdef 2017-08-28 13:02:00 +08:00 1
不知道你流量多大?要是流量很小的话,就用 php 自带的内置服务器,各个版本的各启动一个监听不同端口,前面用 nginx 做转发就行了
|
26
gouchaoer 2017-08-29 19:00:29 +08:00 via Android 1
不可以用 php 自带的服务器,没有并发的
另外,nginx 配置不同网站到不同 php-fpm 即可,没必要用 docker |
27
8355 2017-09-08 13:50:39 +08:00
之前大家都说了 php-fpm 跑不同端口的问题 我再补充一下如果有 cli 直接执行 php 命令的话也记得要配多个
|