OneinStack lnmp PHP多版本共存教程

15次閱讀
尚無留言

教程基於《OneinStack》一鍵 PHP/JAVA 安裝工具中 lnmp 模式,很使用者希望一個網站運行在 php5.4,另一個網站運行在 php7 下,一台伺服器上同時支援多個 PHP 版本,步驟如下:

1. 安裝 OneinStack
選擇 lnmp 模式,預設安裝 php5.6,安裝步驟參考:http://oneinstack.com/install/
選項如下:

Install Nginx
Do not install Apache
Do not install Tomcat
Install MySQL-5.6
Install php-5.4
….

2. 安裝 php7

service php-fpm stop #後面需要再安裝 php,需要停止 php
mv /etc/init.d/php-fpm{,_bk} #後面需要再安裝 php 會覆蓋,備份啟動腳本

預設 php5.6 安裝路徑是 /usr/local/php,如果再次安裝會提示 php 已經安裝,因此必須修改 options.conf 的 php 安裝目錄,將 php7 安裝路徑設置為 /usr/local/php7,修改 /root/oneinstack/options.conf:

php_install_dir=/usr/local/php7

再次執行./install.sh,選擇 Install php-7,其餘均選擇 n,等待 ing
3. 修改 php 設定檔

service php-fpm stop #停止 php7 啟動腳本
mv /etc/init.d/php-fpm /etc/init.d/php7-fpm #重命名 php7 啟動腳本
mv /etc/init.d/php-fpm_bk /etc/init.d/php-fpm #恢復 php5.4 啟動腳本

修改 php-fpm 服務名稱避免無法設定自動啟動:
/etc/init.d/php7-fpm 裡的 Provides:php-fpm 改成 php7-fpm
然後存檔

設置 php5.4、php7 開機自啟動:

# CentOS:
chkconfig –add php7-fpm
chkconfig –add php-fpm
chkconfig php7-fpm on
chkconfig php-fpm on
# Ubuntu/Debian:
update-rc.d php7-fpm defaults
update-rc.d php-fpm defaults

防止 php5.4、php7 監聽 sock 衝突,修改 php7 的 listen,更改設定檔 /usr/local/php7/etc/php-fpm.conf:

listen = /dev/shm/php-cgi.sock
#改成
listen = /dev/shm/php7-cgi.sock

手工啟動 php5.4、php7:

service php-fpm start #啟動 php5.6
service php7-fpm start #啟動 php7

檢查是否啟動成功:

ps -ef | grep php-fpm

4. 修改 nginx 虛擬主機設定檔
./vhost.sh 綁定功能變數名稱,默認是運行在 php5.6,如需要將網站運行在 php7 下,需要修改 /usr/local/nginx/conf/vhost/www.oneinstack.com.conf(www.oneinstack.com 改成自己綁定功能變數名稱):

fastcgi_pass unix:/dev/shm/php-cgi.sock;
#改成
fastcgi_pass unix:/dev/shm/php7-cgi.sock;

重新載入 nginx,使配置生效:

service nginx reload

正文完