PHP5 upgrade PHP7 and News, Config

LEMP 環境,升級 php

流程為:

  1. 備份 php5
  2. 移除 php5
  3. 新增 PPA
  4. 安裝

備份 php5
  • 壓縮 /etc/php5 與 /etc/php/5.x 資料
移除 php5
  • apt-get purge php5-fpm && apt-get --purge autoremove
  • 或 apt-get remove php5-common -y && apt-get purge php5-common -y
安裝
  • apt-get install software-properties-common
  • add-apt-repository ppa:ondrej/php
  • apt-get update
  • apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-json php7.0-mcrypt php7.0-opcache php7.0-xml php7.0-mbstring
    • 可依照自己需求增減 extension
操作
  • php.ini 路徑
    • /etc/php/7.0/php.ini
  • 查詢 extension 
    • ll /usr/share|grep php7.0-
狀況
  • nginx 需要調整 fastcgi_pass 路徑
    • 原本:fastcgi_pass unix:/var/run/php5-fpm.sock;
    • 改成:fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
  • phpmyadmin 出現 找不到 php5-fpm 路徑
    • apt-get remove phpmyadmin
    • wget 新版,解壓縮至 web
    • nginx 設定導向 (link)
  • 若開啟 php.ini 中的 extension,Unable to load dynamic library '/usr/lib/php/20151012/xxx.dll'
    • 須注意你開啟的延伸元件是否有存在上述的路徑內
  • Codeigniter 3.0.6 似乎不需另外開啟 mysqli.so,仍可運作
Opcache
Speeding up the web with PHP7 by Rasmus Lerdof
  • opcache 是先將 php script 先編成 bin 檔,下一次存取省去編譯的時間
  • 提供幾種存放方式
    • SHM (Share memory)
    • file
    • HugePage (file 存到 Swap Space) //類似 RAMDISK
  • 速度上,若一般為 1x,檔案形式則為 4x,最快的是用記憶體 10x,檔案形式放在 swap 速度或許接近 SHM 
  • AWS、GCE 預設的 instance 都沒 swap space,要手動建立
  • 經測試使用記憶體能有效縮短時間,但偶爾會爆慢
  • 靜態檔案小,在 SSD or HDD 似乎沒辦法有效施展性能,不是很穩定

  • 開啟 php.ini
  • 使用記憶體
    • opcache.enable=1
    • opcache.enable_cli=1   #for cli
  • 產生靜態檔
    • opcache.file_cache=/tmp    #請先使用 tmp 路徑
    • opcache.file_cache_only=1    #一律使用靜態檔
    • 可以到 /tmp 看是否正常產生檔案
  • 使用 HugePage
    • opcache.huge_code_pages=1
  • 要測試看看,並觀察 phpinfo() 內,cache 命中率、記憶體用量等,評估是否適合開啟
PGO(link)

  • 針對頁面做最佳化,跑出最高性能的編譯版本
總結
  • 相較於 5.5,執行時間稍微省 30~50% 左右
安全性

  • fix_pathinfo (link)
    • 若為開啟,http://domain/fake.jpg/a.php 會被解析成
      • SCRIPT_FILENAME = fake.jpg
      • PATH_INFO = a.php
      • 假裝是圖片,實際為 php 檔的 a.php 就會被執行
    • 此為搭配 nginx 常見漏洞
    • 須將此設定為 0


其他 PHP7 新增功能 (link)

簡易 PHP 設定、Pool (link)

PHP5 upgrade PHP7 and News, Config PHP5 upgrade PHP7 and News, Config Reviewed by Wild on 6/29/2016 10:00:00 下午 Rating: 5

沒有留言:

沒有Google帳號也可發表意見唷!

技術提供:Blogger.