iT邦幫忙

0

請問多版本的php要裝在freebsd要怎安裝呢???

  • 分享至 

  • xImage

請問多版本的php要裝在freebsd要怎安裝呢???

且要能同時啟動

看更多先前的討論...收起先前的討論...
weiclin iT邦高手 4 級 ‧ 2016-11-12 02:43:19 檢舉
先給你幾個關鍵字, phpbrew 安裝多個版本 php, 使用 php-fpm 搭配 unix socket 啟動不同的版本, 在virtual host 設定要用的 php socket file, 網路上可以找到一些 linux 的範例, 先試試看有問題再說
phoenix99 iT邦新手 4 級 ‧ 2016-11-12 11:45:35 檢舉
我都裝好了 但不能同時啟動 只能一次一個 這是什麼原因呢??freebsd的語法跟linux不太一樣 好像不能個別指定要生效的目錄
weiclin iT邦高手 4 級 ‧ 2016-11-12 16:26:31 檢舉
你是用 apache 還是 nginx?
phoenix99 iT邦新手 4 級 ‧ 2016-11-13 02:10:43 檢舉
nginx
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
saiue
iT邦研究生 1 級 ‧ 2016-11-14 15:34:10
最佳解答

先確認你安裝的方式

套件安裝,利用chroot
編譯安裝,裝到不同目錄

修改php-fpm開啟不同的tcp port或socket
nginx指向不同php版本的php-fpm

看更多先前的回應...收起先前的回應...
phoenix99 iT邦新手 4 級 ‧ 2016-11-14 20:12:10 檢舉

修改php-fpm開啟不同的tcp port或socket nginx指向不同php版本的php-fpm

請問一下這個有詳細的教學嗎??我超不會這段

saiue iT邦研究生 1 級 ‧ 2016-11-15 15:56:14 檢舉

請問您使用哪一種安裝方式。
用法:

  1. 先修改
    php-fpm.conf
    listen 就可以指定不同的port 或 socket

  2. nginx.conf
    proxy_pass 指向不同的上述 listen

phoenix99 iT邦新手 4 級 ‧ 2016-11-17 03:11:57 檢舉

有nginx.conf的設定法嗎??您也是freebsd嗎??我發現linux跟bsd不太一樣 而且兩個php版本目前不能同時啟動

saiue iT邦研究生 1 級 ‧ 2016-11-17 10:07:47 檢舉

linux跟bsd的nginx及php設定是相同的.

nginx只有導向的功能,問題不在於nginx,在於不能同時啟動兩個php的版本,首先你要確定兩個版本的php,兩個版本的php-fpm能正常啟動。

你能嘗試編譯安裝php嗎?

下載php source

./configure help

可以看參數

注意目錄設置正確

例如

--prefix=

--with-config-file-scan-dir=

假設我安裝為

/php56

/php70

分別修改/php50及/php70 的php-fpm.conf

假設使用tcp的php-fpm listen

#php56 php-fpm.conf

listen = 127.0.0.1:55601

#php70 php-fpm.conf

listen = 127.0.0.1:57001

嘗試同時啟動

/php56/bin/php-fpm -D

/php7-/bin/php-fpm -D

#確認啟動成功

netstat -tln | grep [55601|57001]

#nginx 目錄執行指定

web_dir_1目錄都是以php56執行

web_dir_2目錄都是以php70執行

location location ~/web_dir1/* \.php$ {
    fastcgi_pass 127.0.0.1:55601;
    ....
}
location location ~/web_dir1/* \.php$ {
    fastcgi_pass 127.0.0.1:57001;
    ....
}

saiue iT邦研究生 1 級 ‧ 2016-11-17 10:09:36 檢舉

修正最後 一段code

location location ~/web_dir_1/* \.php$ {
    fastcgi_pass 127.0.0.1:55601;
    ....
}
location location ~/web_dir_2/* \.php$ {
    fastcgi_pass 127.0.0.1:57001;
    ....
}
phoenix99 iT邦新手 4 級 ‧ 2016-11-20 01:18:11 檢舉

我php5.3是預設安裝 沒指定目錄 php5.6是裝在 /usr/local/php56 下面 這樣會有問題嗎??另外 /etc/rc.conf 要預設兩個同時啟動要怎設呢??

phoenix99 iT邦新手 4 級 ‧ 2016-11-20 01:26:56 檢舉

我是用port安裝的

phoenix99 iT邦新手 4 級 ‧ 2016-11-20 01:32:54 檢舉

我php5.3 一個是開listen:127.0.0.1:9000 另一個php5.6是 listen:127.0.0.1:9001 基本上不能同時啟動 我甚至http 的port
都錯開也不能同時啟動

phoenix99 iT邦新手 4 級 ‧ 2016-11-20 03:00:23 檢舉

/php56/bin/php-fpm -D 打這個指令確定可以雙重啟動了 感謝 但開機無法自動啟動要怎解決呢???

saiue iT邦研究生 1 級 ‧ 2016-11-21 15:51:32 檢舉
phoenix99 iT邦新手 4 級 ‧ 2016-11-22 23:48:56 檢舉

他上面說的路徑好像不太對 我看要改的路徑應該在 /etc/rc.d/local
但我要填什麼進去呢?? /usr/local/php56/sbin/php-fpm -D 這樣對嗎?? /usr/local/php56/etc/rc.d/php-fpm restart 直接啟動php56的話會引起原來版本php失效

phoenix99 iT邦新手 4 級 ‧ 2016-11-22 23:54:18 檢舉

不好意思我看錯了 我建一個檔 /etc/rc.local
再加入/usr/local/php56/sbin/php-fpm -D 這樣對嗎??

saiue iT邦研究生 1 級 ‧ 2016-11-23 12:10:17 檢舉

是的,並且讓 /etc/rc.local 可以執行

chmod a+x /etc/rc.local
phoenix99 iT邦新手 4 級 ‧ 2016-11-23 23:11:10 檢舉

嗯我試過了 真的可以 感謝 不過我發現我如果開一個新的bsd9.3版把兩個各放在/usr/local/php53 /usr/local/php56 會裝不起來
而且之前新裝的php56如果crontab設自動重啟會引起php5.3版失效
有辦法讓這兩位大哥能和平相處嗎???

saiue iT邦研究生 1 級 ‧ 2016-11-24 09:53:48 檢舉

有一點難猜測你怎麼做的

看您的描述 “自動重啟”

我猜測您是用系統的指令自動重啟,必須寫系統可以接受的指令稿

例如:service php-fpm restart

參考您之前設定服務啟動的那一篇文章

拷貝php-fpm的文件

cp php-fpm php-fpm53

cp php-fpm php-fpm56

修改裡面指向啟動的指令為

/usr/local/php53/....

/usr/local/php56/....

service php-fpm53 restart

service php-fpm56 restart

服務的設定,參考11.2及11.4

https://www.freebsd.org/doc/zh_TW/books/handbook/config-tuning.html

如果這樣不放心

就考慮建立chroot或docker,讓php各自獨立區隔出兩個php版本

saiue iT邦研究生 1 級 ‧ 2016-11-24 09:57:06 檢舉

想到另外一個可能

php-fpm的pid可能是一樣的

你看看是否為一樣,如果一樣要修改一下

系統啟動時,以為他是啟動的,就關掉了另外一個

phoenix99 iT邦新手 4 級 ‧ 2016-11-25 00:58:39 檢舉

我可能要暫時放棄這個想法了 我用/usr/local/php56/etc/rc.d/php-fpm stop 其實等到/usr/local/etc/rc.d/php-fpm restart php5.6一樣會出現關不掉

而且等我先安裝php5.6 再安裝php5.3 到/usr/local/php53 也不讓我裝 會出現/!\ WARNING /!\

The variable PHP_DEFAULT is set and it should only be defined through DEFAULT_VERSIONS+=php=53 in /etc/make.conf  
This behaviour has never been supported and will be removed on 2017-01-31  

很感謝前輩大哥的回答

0
Blue Jacky
iT邦大師 1 級 ‧ 2016-11-12 18:05:33

另外,你可用 Multi PHP FreeBSD ISPConfig 等關鍵字找到進階的作法。

我要發表回答

立即登入回答