PHP7 高性能學(xué)習(xí)手冊(cè)(機(jī)翻)_第1頁
PHP7 高性能學(xué)習(xí)手冊(cè)(機(jī)翻)_第2頁
PHP7 高性能學(xué)習(xí)手冊(cè)(機(jī)翻)_第3頁
PHP7 高性能學(xué)習(xí)手冊(cè)(機(jī)翻)_第4頁
PHP7 高性能學(xué)習(xí)手冊(cè)(機(jī)翻)_第5頁
已閱讀5頁,還剩186頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

TableofContents

PHP7高性能學(xué)習(xí)手冊(cè)

PHP7高性能學(xué)習(xí)手冊(cè)

零、序言

一、構(gòu)建環(huán)境

二、PHP7的新特性

三、提高PHP7應(yīng)用性能

四、提高數(shù)據(jù)庫性能

五、調(diào)試與評(píng)測(cè)

六、PHP應(yīng)用壓力/負(fù)載測(cè)試

七、PHP編程的最佳實(shí)踐

八、附錄A:使生活更輕松的工具

九、附錄B:MVC和框架

PHP7高性能學(xué)習(xí)手冊(cè)

來源:https://gitee,com/apachecn/apach/cn-php-zh/blob/master/docs/1carrrphp7-h

iperf/SUMMARY.md

PHP7高性能學(xué)習(xí)手冊(cè)

原文:https:〃gitee.com/apachecn/apachecn-php-zh/blob/master/docs/learn-php7-h

iperf/README.md

原文:LearningPHP1highperformance

協(xié)議:CCBY-NC-SA4.0

階段:機(jī)翻(1)

自豪地采用谷歌翻譯

有沒有人知道某種秘方,不必永生只要回憶不忘。我不怕死亡,只害怕遺忘,回憶是你我

生存的地方。一一五月天《轉(zhuǎn)眼》

?在線閱讀

?在線閱讀(Gitee)

?ApacheCN學(xué)習(xí)資源

貢獻(xiàn)指南

本項(xiàng)目需要校對(duì),歡迎大家提交PullRequesto

請(qǐng)您勇敢地去翻譯和改進(jìn)翻譯。雖然我們追求卓越,但我們并不要求您做到十全十美,因

此請(qǐng)不要擔(dān)心因?yàn)榉g上犯錯(cuò)一一在大部分情況下,我們的服務(wù)器已經(jīng)記錄所有的翻譯,

因此您不必?fù)?dān)心會(huì)因?yàn)槟氖д`遭到無法挽回的破壞。(改編自維基百科)

聯(lián)系方式

負(fù)責(zé)人

?飛龍:562826179

其他

?在我們的apachecn/apachecn-php-zhgithub上提issue.

?發(fā)由B件至llEmail:apachecn@163.com.

?在我們的組織學(xué)習(xí)交流群中聯(lián)系群主/管理員即可.

贊助我們

零、序言

原文:https:〃gitee.com/apachecn/apachecn-php-zh/blob/master/docs/learn-php7-h

iperf/O.md

PHP社區(qū)幾十年來面臨一個(gè)巨大的問題:性能。不管他們擁有多么強(qiáng)大的硬件,最終,PH

P本身就是一個(gè)瓶頸。使用PHP5.4.X、5.5.x和5.6.x,PHP的性能開始提高,但在高

負(fù)載應(yīng)用中仍然是一個(gè)巨大的問題。社區(qū)開發(fā)了AlternativePHPCache(APC)和Zend

OpCache等緩存工具,對(duì)操作碼進(jìn)行高性能緩存,這些工具對(duì)性能有很好的影響。

為了解決PHP的性能問題,F(xiàn)acebook構(gòu)建了自己的開源工具HHVM(HipHop虛擬機(jī))。

根據(jù)他們的官方網(wǎng)站,HHVM使用實(shí)時(shí)(JIT)編譯來實(shí)現(xiàn)優(yōu)異的性能,同時(shí)保持PHP提

供的開發(fā)靈活性。與PHP相比,HHVM具有出色的性能,在生產(chǎn)中廣泛用于Magento等

大型應(yīng)用。

PHP使用PHP下一代(PHPNG)與HHVM開戰(zhàn)。PIIPNG的全部目的是提高性能,重點(diǎn)是重

寫和優(yōu)化Zend引擎內(nèi)存分配和PIIP數(shù)據(jù)類型。世界各地的人們開始對(duì)PHPNG和HHVM

進(jìn)行基準(zhǔn)測(cè)試,根據(jù)他們的說法,PHPNG的表現(xiàn)優(yōu)于HHVMo

最后,PHPNG與PHP的主分支合并,經(jīng)過大量的優(yōu)化和完全重寫,PHP7發(fā)布了,性能有

了巨大的提高。PHP7仍然不是JIT,但它的性能非常好,與HHVM類似。這是較舊版本

PHP的一個(gè)巨大性能提升。

這本書涵蓋的內(nèi)容

第一章環(huán)繚改置介紹了如何設(shè)置不同的開發(fā)環(huán)境,包括在Windows,不同Linux發(fā)行版

上安裝NGINX、PHP7、Percona服務(wù)器,以及為開發(fā)目的設(shè)置流浪虛擬機(jī)。

第2章刖神的新特性,涵蓋了PHP7中引入的主要新特性,包括類型提示、組使用聲

明、匿名類和新運(yùn)算符,如Spaceship運(yùn)算符、Null合并運(yùn)算符和統(tǒng)一變量語法。

第3章提高PHP7應(yīng)用性能介紹X提高和沖展PHP7應(yīng)用性能的不同技術(shù)。在本章中,

我們將介紹NGINX和Apache、CDN和CSS/JavaScript的優(yōu)化,例如合并和縮小它們、

整頁緩存以及安裝和配置Varnisho最后,我們討論了一個(gè)理想的應(yīng)用開發(fā)基礎(chǔ)設(shè)施設(shè)置。

第4章提高數(shù)據(jù)庫傀能介紹了優(yōu)化MySQL和Percona服務(wù)器配置以獲得高性能的技術(shù)。

此外,它還涵蓋了監(jiān)視數(shù)據(jù)庫性能的不同工具。它還包括用于緩存對(duì)象的Memcached和

Redis(>

第5章嫄抗初部潮介紹了調(diào)試和評(píng)測(cè)技術(shù),包括使用Xdebug進(jìn)行調(diào)試和評(píng)測(cè)、使用Su

blimeText3和Eclipse進(jìn)行調(diào)試以及PHP調(diào)試欄。

第6章壓力/負(fù)載測(cè)試PHP應(yīng)府介紹了對(duì)應(yīng)用進(jìn)行壓力和負(fù)載測(cè)試的不同工具。它涵蓋

ApacheJMeter>ApacheBcnch和負(fù)載測(cè)試。本文還介紹了如何在PHP7和PHP5.6上加載

測(cè)試不同的開源系統(tǒng),如Magento、Drupal和WordPress,并比較了它們?cè)赑HP7和PH

P5.6上的性能。

第7章PHP編程也最隹實(shí)我介紹了一些生成質(zhì)量標(biāo)準(zhǔn)代碼的最佳實(shí)踐。它涵蓋了編碼風(fēng)

格、設(shè)計(jì)模式、面向服務(wù)的體系結(jié)構(gòu)、測(cè)試驅(qū)動(dòng)開發(fā)、Git和部署。

附錄A篦化空活的Z美更詳細(xì)地討論了其中三種工具。我們將討論的工具是Composer.G

it和Gruntwatch。

附錄B材力和框架涵蓋了MVC設(shè)計(jì)模式和PHP開發(fā)中使用的最流行的框架,包括Larav

el、Lumen和Apigility。

這本書你需要什么

任何符合以下軟件最新版本的硬件規(guī)范都應(yīng)足以閱讀本書:

?操作系統(tǒng):Debian或Ubuntu

?軟件:NGINX、php7>MySQL、PerconaDB>Redis>Memcached>Xdebug>apach

ejmeter^ApacheBench>seave和Git

這本書是給誰的

這本書是為那些有P11P編程基本經(jīng)驗(yàn)的人準(zhǔn)備的。如果您正在開發(fā)性能關(guān)鍵型應(yīng)用,那

么這本書適合您。

公約

在本書中,您將發(fā)現(xiàn)許多文本樣式可以區(qū)分不同類型的信息。下面是這些風(fēng)格的一些例子,

并解釋了它們的含義。

文本中的代碼字、數(shù)據(jù)庫表名、文件夾名、文件名、文件擴(kuò)展名、路徑名、虛擬URL、用

戶輸入和Twitter句柄如下所示:“我們可以通過使用include指令來包含其他上下文。

代碼塊設(shè)置如下:

location'\.php${fastcgi_pass127.0.0.1:9000;fastcgi_paramSCRIP

T_FILENAMEcomplete_path_webroot_folder$fastcgi_script_name;includefast

cgi_params;}

當(dāng)我們希望提請(qǐng)您注意代碼塊的特定部分時(shí),相關(guān)行或項(xiàng)目以粗體顯示:

server{roothtml;indexindex,phpindex,htmlindex,htm;…

任何命令行輸入或輸出的編寫方式如下:

php-cgi-b127.0.0.1:9000

新術(shù)語和重要詞語以粗體顯示。您在屏幕上看到的文字(例如,在菜單或?qū)υ捒蛑校╋@

示在文本中,如下所示:“單擊下一個(gè)按鈕將移動(dòng)到下一個(gè)屏幕?!?/p>

警告或重要注釋顯示在這樣的框中。

提示

提示和技巧如下所示。

讀者反饋

我們歡迎讀者的反饋。讓我們知道你對(duì)這本書的看法你喜歡還是不喜歡。讀者反饋對(duì)我們

來說很重要,因?yàn)樗梢詭椭覀冮_發(fā)出您將真正從中獲得最大收益的標(biāo)題。

要向我們發(fā)送總體反饋,只需發(fā)送電子郵件<[feedback@packtpub.com](mailto:feedback@packtpub.co

m)>,并在郵件主題中提及該書的標(biāo)題。

如果您對(duì)某個(gè)主題有專業(yè)知識(shí),并且您有興趣撰寫或貢獻(xiàn)一本書,請(qǐng)參閱我們的作者指南

www.packtpub.com/authors。

客戶支持

既然您是一本Packt圖書的驕傲擁有者,我們有很多東西可以幫助您從購買中獲得最大

收益。

下載示例代碼

您可以從您的帳戶下載本書的示例代碼文件htt.p:〃www.packtpub.com。如果您在其他

地方購買了本書,您可以訪問http:〃www.packtpub.com/support并注冊(cè),將文件直接通

過電子郵件發(fā)送給您。

您可以通過以下步驟下載代碼文件:

1.使用您的電子郵件地址和密碼登錄或注冊(cè)我們的網(wǎng)站。

2.將鼠標(biāo)指針懸停在頂部的支架選項(xiàng)卡上。

3.點(diǎn)擊代碼下載&勘誤表。

4.在搜索框中輸入圖書名稱。

5.選擇要下載代碼文件的書籍。

6.從您購買本書的下拉菜單中選擇。

7.點(diǎn)擊代碼下載。

您也可以通過點(diǎn)擊Packt出版網(wǎng)站上該書網(wǎng)頁上的代碼文件按鈕下載代碼文件。在搜索

框中輸入圖書名稱即可訪問此頁面。請(qǐng)注意,您需要登錄到您的Packt帳戶。

下載文件后,請(qǐng)確保使用以下最新版本解壓或解壓縮文件夾:

?WinRAR/7-ZipforWindows

?適用于Mac的Zipeg/iZip/UnRarX

?適用于Linux的7-Zip/PeaZip

下載本書彩色圖片

我們還為您提供了一個(gè)PDF文件,其中包含本書中使用的屏幕截圖/圖表的彩色圖像。彩

色圖像將幫助您更好地了解輸出中的更改。您可以從下載此文件https:〃www.packtpub.

com/sites/default/files/downloads/LearningPHP7HighPerformanceColorImages,pdf°

勘誤表

雖然我們已盡一切努力確保內(nèi)容的準(zhǔn)確性,但錯(cuò)誤確實(shí)會(huì)發(fā)生。如果您在我們的一本書中

發(fā)現(xiàn)錯(cuò)誤,可能是文本或代碼中的錯(cuò)誤,如果您能向我們報(bào)告,我們將不勝感激。通過這

樣做,您可以使其他讀者免于沮喪,并幫助我們改進(jìn)本書的后續(xù)版本。如果您發(fā)現(xiàn)任何錯(cuò)

誤,請(qǐng)?jiān)L問進(jìn)行報(bào)告http://www.packtpub.com/submit-errata,選擇您的書籍,點(diǎn)擊

勘誤表提交表鏈接,輸入您勘誤表的詳細(xì)信息、。一旦您的勘誤表得到驗(yàn)證,您的提交將

被接受,勘誤表將上載到我們的網(wǎng)站或添加到該標(biāo)題勘誤表部分下的任何現(xiàn)有勘誤表列表

中。

要查看之前提交的勘誤表,請(qǐng)轉(zhuǎn)至https:〃www.packtpub.com/books/content/support

并在搜索字段中輸入圖書名稱。所需信息將出現(xiàn)在勘誤表部分下。

盜版

在互聯(lián)網(wǎng)上盜版版權(quán)材料是所有媒體都面臨的一個(gè)持續(xù)問題。在Packt,我們非常重視版

權(quán)和許可證的保護(hù)。如果您在互聯(lián)網(wǎng)上發(fā)現(xiàn)任何形式的非法復(fù)制品,請(qǐng)立即向我們提供地

址或網(wǎng)站名稱,以便我們采取補(bǔ)救措施。

請(qǐng)致電〈[copyright@packtpub.com](maiIto:copyrightSpacktpub.com)>與我彳|]聯(lián)系,并提供可疑盜版材

料的鏈接。

我們感謝您在保護(hù)我們的作者方面提供的幫助以及我們?yōu)槟鷰碛袃r(jià)值內(nèi)容的能力。

問題

如果您對(duì)本書的任何方面有任何問題,可以通過〈[questions@packtpub.com](mai1to:questions@pack

tpub.c°m)>與我們聯(lián)系,我們將盡力解決該問題。

一、構(gòu)建環(huán)境

原文:https:〃gitee.com/apachecn/apachecn-php-zh/blob/master/docs/learn-php7-h

iperf/1.md

PHP7終于發(fā)布了。很長(zhǎng)一段時(shí)間以來,PHP社區(qū)一直在討論這個(gè)問題,至今仍未停止。P

HP7的主要改進(jìn)是它的性能。長(zhǎng)期以來,PHP社區(qū)在大規(guī)模應(yīng)用中面臨性能問題。甚至一

些具有高流量的小型應(yīng)用也面臨性能問題。服務(wù)器資源有所增加,但沒有多大幫助,因?yàn)?/p>

最終的瓶頸是PHP本身。使用了不同的緩存技術(shù),例如APC,這有點(diǎn)幫助。然而,社區(qū)

仍然需要一個(gè)能夠在應(yīng)用達(dá)到峰值時(shí)提高性能的PHP版本。這就是PHPNG的用武之地。

PHPNG代表PHP下一代。它是一個(gè)完全獨(dú)立的分支,主要針對(duì)性能。有人認(rèn)為PHPNG是J

IT(準(zhǔn)時(shí)制)編譯,但實(shí)際上,PHPNG是基于經(jīng)過重構(gòu)的Zend引擎,該引擎針對(duì)性能進(jìn)

行了高度優(yōu)化。PHPNG被用作PIIP7開發(fā)的基礎(chǔ),根據(jù)官方的PHPwiki頁面,PHPNG分

支現(xiàn)在合并到主分支中。

在開始構(gòu)建應(yīng)用之前,應(yīng)該最終確定并配置開發(fā)環(huán)境。在本章中,我們將討論在不同系統(tǒng)

上設(shè)置開發(fā)環(huán)境,例如Windows和不同風(fēng)格的Linuxo

我們將討論以下主題:

?設(shè)置窗口

?設(shè)置Ubuntu或Debian

?設(shè)置CentOS

?安置流浪漢

可以跳過所有其他環(huán)境,我們可以設(shè)置要使用的環(huán)境。

設(shè)置窗口

有許多工具可以為Windows捆綁Apache、PHP和MySQL,提供簡(jiǎn)單的安裝,并且非常易

于使用。這些工具中的大多數(shù)已經(jīng)通過Apache提供了對(duì)PHP7的支持,比如通過XAMPP、

WAMPP和EasyHPoEasyHP是唯一一家還提供對(duì)NGINX的支持,并提供將Web服務(wù)器從

NGINX更改為Apache或Apache更改為NGINX的簡(jiǎn)單步驟的公司。

XAMPP也適用于Linux和MacOSXo但是,WAMP和EasyHP僅適用于Windowso這三

種方法中的任何一種都可以用于本書,但我們推薦EasyHP,因?yàn)樗С諲GINX,而在本

書中,我們主要使用NGINXo

這三種工具中的任何一種都可以使用,但我們需要對(duì)web服務(wù)器工具的每個(gè)元素進(jìn)行更

多的控制,因此我們還將分別安裝NGINX、PHP7和MySQL,然后將它們連接在一起。

NGINXWindows二進(jìn)制文件可從下載http:〃nginx.org/cn/download.html□我們建議

使用穩(wěn)定的版本,盡管使用主線版本沒有問題。PHPWindows二進(jìn)制文件可從下載http:/

/windows.php.net/download/<>根據(jù)您的系統(tǒng)下載泮線,原安全版本的32位或64位二

進(jìn)制文件。

執(zhí)行以下步驟:

1.下載信息框中提到的NGINX和PHPWindows二進(jìn)制文件。將NGINX復(fù)制到

合適的目錄。例如,我們有一個(gè)完全獨(dú)立的D驅(qū)動(dòng)器用于開發(fā)目的。將NGIN

X復(fù)制到此開發(fā)驅(qū)動(dòng)器或任何其他目錄?,F(xiàn)在,將PHP復(fù)制到NGINX目錄或

任何其他安全文件夾位置。

2.在PHP目錄中,將有兩個(gè).ini文件,php.ini-developmentphp.ini-productiono將其

中一個(gè)重命名為Php.ini。PHP將使用此配置文件。

3.HoldtheShiftkeyandrightclickinthePHPdirectorytoopenthe

command-linewindow.Thecommand-linewindowwillbeopenedinthes

amelocationpath.IssuethefollowingcommandtostartPUP:

php-cgi-b127.0.0.1:9000

-b選項(xiàng)啟動(dòng)PHP并綁定到外部FastCGI服務(wù)器的路徑。前面的命令綁定PHP以在端口900

。上循環(huán)回127.o.o.iIP?,F(xiàn)在,可以通過此路徑訪問PHPo

4.ToconfigureNGINX,openthenginx^.folder/conf/nginx.conffile.Thefirstt

hingtodoistoaddrootandindextotheserverblock,asfollows:

server{roothtml;indexindex,phpindex,htmlindex,htm;

提示

下載示例代碼

您可以從以下帳戶下載本書的示例代碼文件:http:〃www.packtpub.com.如果你在別處

購買了這本書,你可以訪問http/Vwww.packtpub.com/support并注冊(cè),將文件直接通

過電子郵件發(fā)送給您。

您可以通過以下步驟下載代碼文件:

o使用您的電子郵件地址和密碼登錄或注冊(cè)我們的網(wǎng)站。

o將鼠標(biāo)指針懸停在頂部的“支持”選項(xiàng)卡上。

o點(diǎn)擊代碼下載和勘誤表。

o在搜索框中輸入圖書的名稱。

o選擇要下載代碼文件的書籍。

o從您購買本書的下拉菜單中選擇。

o點(diǎn)擊代碼下載。

下載文件后,請(qǐng)確保使用以下最新版本解壓或解壓縮文件夾:

oWinRAR/7-ZipforWindows

o適用于Mac的Zipeg/iZip/UnRarX

o適用于Linux的7-Zip/PeaZip

5.Now,weneedtoconfigureNGINXtousePHPasFastCGIonthepathme

ntionedbeforeonwhichitisstarted.Inthenginx.conffile,uncomme

ntthefollowinglocationblockforPIIP:

location、\.php${fastcgi_pa.ss127.0.0.1:9000;fastcgi_paramSCRIP

T_FILENAMEcomplete_path_webroot_folder$fastcgi_script_name;includefastcg

i_params;}

注意fastcgi.param選項(xiàng)。突出顯示的complete_pathwebroot_folder路徑應(yīng)該是nginx文件夾中HTM

L目錄的絕對(duì)路徑。假設(shè)您的NGINX位于D:\nginx路徑;然后,HTML文件夾的絕對(duì)路徑將

是D:\nginx\html°但是,對(duì)于前面的fastcgi_param選項(xiàng),'應(yīng)替換為/。

6.現(xiàn)在,通過在NGINX文件夾的根目錄下發(fā)出以下命令來重新啟動(dòng)NGINX:

nginx-srestart

7.重新啟動(dòng)NGINX后,打開瀏覽器并輸入Windows服務(wù)器或計(jì)算機(jī)的IP或主

機(jī)名,我們將看到NGINX歡迎消息。

8.現(xiàn)在,為了驗(yàn)證PHP安裝及其與NGINX的協(xié)同工作,在webroot中創(chuàng)建一

個(gè)info.php文件,并在其中輸入以下代碼:

<?phpphpinfoO;?>

9.Now,inthebrowser,accessyourip/info.php,andwewillbepresent

edwithapagefullofPHPandserverinformation.Congratulations!

WeconfiguredNGINXandPHPtoworkperfectlytogether.

在Windows和MacOSX±,我們建議您使用安裝了Linux版本的所有工具的虛擬機(jī),

以獲得服務(wù)器的最佳性能。在Linux中管理一切都很容易。有一些流浪者的盒子,里面

有一切可以使用的東西。此外,還可以在上定制一個(gè)包含所有工具的虛擬機(jī)配置,包括N

GINX、Apache、PHP7、Ubuntu、Debian或CentOS以及其他優(yōu)秀工具h(yuǎn)ttps:〃puphpet.

com,這是一個(gè)易于使用的GUIo另一個(gè)很好的工具是LaravelHomestead,它是一個(gè)

流浪者盒子,里面有很多很棒的工具。

設(shè)置Debian或Ubuntu

Ubuntu源于Debian,所以Ubuntu和Debian的流程都是一樣的。我們將使用Debian8

Jessie和Ubuntul4.04服務(wù)器LTS。同樣的過程也適用于桌面版本。

首先,添加Debian和Ubuntu的存儲(chǔ)庫。

德比安

在我們撰寫本書時(shí),Debian還沒有提供PHP7的官方存儲(chǔ)庫。因此,對(duì)于Debian,我們

將使用dotdeb存儲(chǔ)庫安裝NGINX和PHP7。執(zhí)行以下步驟:

1.打開/etc/apt/sources.list文件,在文件末尾添加以下兩行:

debhttp://packages,dotdeb.orgJessiealldeb-srchttp://packages,dotdeb.orgj

essieall

2.現(xiàn)在,在終端中執(zhí)行以下命令:

wgethttps:〃www.dotdeb.org/dotdeb.gpgsudoapt-keyadddotdeb.gpgsudoapt-ge

tupdate

前兩個(gè)命令將向Debian添加dotdebrepo,最后一個(gè)命令將刷新源緩存。

Ubuntu

在寫這本書的時(shí)候,Ubuntu也沒有在官方的repo中提供PHP7,所以我們將使用第三方

repo來安裝PHP7。執(zhí)行以下步驟:

1.在終端中運(yùn)行以下命令:

sudoadd-apt-repositoryppa:ondrej/phpsudoapt-getupdate

2.Now,therepositoriesareadded.Let,sinstallNGINXandPHP7.

其余的過程對(duì)于Debian和Ubuntu基本相同,所以我們不會(huì)像添加存儲(chǔ)庫部分那樣單獨(dú)

列出它們。

3.要安裝NGINX,請(qǐng)?jiān)诮K端(Debian和Ubuntu)中運(yùn)行以下命令:

sudoapt-getinstallnginx

4.Aftertheinstallationissuccessful,itcanbeverifiedbyentering

thehostnameandIPoftheDebianorUbuntuserver.Ifweseesometh

ingsimilartothefollowingscreenshot,thenourinstallationissu

ccessful:

WelcometonginxonDebian!

Ifyouseethispage,thenginxwebserverissuccessfullyinstalledandworking

onDebian.Furtherconfigurationisrequired.

Foronlinedocumentationandsupportpleaserefertonginx.orq

PleaseusethereportbugtooltoreportbugsinthenginxpackagewithDebian.

However,checkexistinTbugreDOrtsbeforereportinganewbug.

Thankyouforusingdebianandnginx.

以下是三個(gè)有用的NGINX命令的列表:

oservicenginxstart:后動(dòng)NGINX服務(wù)器

oservicenginxrestart:這將重新啟動(dòng)NGINX服務(wù)器

oservicenginxstop:這將停止NGINX服務(wù)器

5.Now,it,stimetoinstallPHP7byissuingthefollowingcommand:

sudoapt-getinstallphp7.0php7.0-fpmphp7.0-mysqlphp7.0-mcryptphp7.0-cli

這將安裝PHP7以及前面提到的其他模塊。此外,我們還安裝了用于命令行目的的PHPC

lio要驗(yàn)證是否正確安裝了PHP7,請(qǐng)?jiān)诮K端中發(fā)出以下命令:

php-v

6.IfitdisplaysthePHPversionalongwithsomeotherdetails,assho

wninthefollowingscreenshot,thenPHPisproperlyinstalled:

~#php-v

PHP7.0.3-l~dotdeb+8.1(cli)(NTS)

Copyright(c)1997-2016ThePHPGroup

ZendEnginev3.0.0,Copyright(c)1998-2016ZendTechnologies

withZendOPcachev7.0.6-dev,Copyright(c)1999-2016,byZendTechnologies

~]

7.Now,weneedtoconfigureNGINXtoworkwithPHP7.First,copythe

NGINXdefaultconfigfile/etc/nginx/sites-available/defaultto/etc/nginx/sites

-available/^-,packt.com.confusingthefollowingcommandintheterminal:

cd/etc/nginx/sites-avaiTablesudocpdefaultwww.packt.com.confsudoIn-s/

etc/nginx/sites-available/www.packt.com.conf/etc/nginx/sites-enabled/www.pa

ckt.com.conf

首先,我們復(fù)制了默認(rèn)配置文件,創(chuàng)建了另一個(gè)虛擬主機(jī)配置文件^.packt.com.conf,然后

在sitesenabled文件夾中創(chuàng)建了指向該虛擬主機(jī)文件的符號(hào)鏈接文件。

最好使用與域名稱相同的名稱為每個(gè)虛擬主機(jī)創(chuàng)建一個(gè)配置文件,以便任何其他人都可以

輕松識(shí)別它。

8.Now,openthe/etc/nginx/sites-available/ww.packt.com.conffileandaddoredi

tthehighlightedcode,asshownhere:

server{server_nameyour_ip:80;root/var/www/html;indexindex,phpind

ex.htmlindex,htm;location、\.php${fastcgi_passunix:/var/run/php/php7.

0-fpm.sock;fastcgiindexindex,php;includefastcgi_params;}}

前面的配置不是完整的配置文件。我們只復(fù)制了那些重要且可能需要更改的配置選項(xiàng)。

在前面的代碼中,我們的webroot路徑是/var/www/html,我們的PHP文件和其他應(yīng)用文件

將放置在這里。在索引配置選項(xiàng)中,添加index.php,這樣如果URL中沒有提供文件,NGIN

X可以查找并解析index.php。

我們?yōu)镻HP添加了一個(gè)位置塊,其中包含一個(gè)fastcgi3ass選項(xiàng),該選項(xiàng)有一個(gè)到PHP7F

PM套接字的路徑。這里,我們的PHP在Unix套接字上運(yùn)行,比TCP/IP更快。

9.進(jìn)行這些更改后,重新啟動(dòng)NGINX0現(xiàn)在,為了測(cè)試PHP和NGINX是否正確

配置,在webroot文件夾的根目錄下創(chuàng)建一個(gè)info.php文件,并在其中放置以下代

碼:

<?phpphpinfoO;?>

10.Now,inthebrowser,typeserver_ip/info.php,andifyouseeaPHPconfi

gurationpage,thencongratulations!PHPandNGINXarebothproperly

configured.

###注如果PHP和NGINX在同一個(gè)系統(tǒng)上運(yùn)行,那么PHP將偵聽端口'9000'處的環(huán)

回IP。該端口可以更改為任何其他端口。如果我們想在TCP/IP端口上運(yùn)行PHP,那么

在'fastcgi_pass中輸入'127.0.0.1:90001>

現(xiàn)在,讓我們安裝Percona服務(wù)器。Percona服務(wù)器是MySQL的一個(gè)分支,并針對(duì)高性

能進(jìn)行了優(yōu)化。我們將在第3章中了解更多關(guān)于Percona服務(wù)器的信息,提高PHP7應(yīng)

用性能?,F(xiàn)在,讓我們通過以下步驟在Debian/Ubuntu上安裝Percona服務(wù)器:

1.First,let'saddthePerconaServerrepositorytooursystembyrunn

ingthefollowingcommandintheterminal:

sudowgethttps://repo,percona.com/apt/percona-release0.1-3.$(Isbrelease-s

c)_all.debsudodpkg-ipercona-release_0.1-3.$(lsb_release-sc)_all.deb

第一個(gè)命令將從Perconarepo下載repo包。第二個(gè)命令將安裝下載的軟件包,并在/e

tc/apt/sources,list,d/percona-release.list處倉建percona-release,list文件。

2.現(xiàn)在,在終端執(zhí)行以下命令安裝Percona服務(wù)器:

sudoapt-getupdate

3.Now,issuethefollowingcommandtoinstallPerconaServer:

sudoapt-getinstallpercona-server-5.5

安裝過程將開始。下載它需要一段時(shí)間。

在本書中,我們將安裝PerconaServer5.5。PerconaServer5.6也可以使用,安裝時(shí)

不會(huì)出現(xiàn)任何問題。

安裝過程中會(huì)詢問root用戶的密碼,如下圖所示:

這是可選的,但建議輸入密碼。輸入密碼后,在下一屏幕上重新輸入密碼。安裝過程將繼

續(xù)。

4.Aftertheinstallationiscomplete,thePerconaServerinstallation

canbeverifiedbyusingthefollowingcommand:

mysql--version

它將顯示Percona服務(wù)器的版本。如前所述,Percona服務(wù)器是MySQL的分支,因此可

以使用所有相同的MySQL命令、查詢和設(shè)置。

成立CentOS

CentOS是紅帽企業(yè)Linux(RHEL的分支,代表社區(qū)企業(yè)操作系統(tǒng)。它是服務(wù)器上廣泛使

用的操作系統(tǒng),專門用于托管公司提供共享托管。

讓我們首先為我們的開發(fā)環(huán)境配置CentOS?執(zhí)行以下步驟:

安裝NGINX

1.First,weneedtoaddNGINXRPMtoourCentOSinstallationbecauseC

entOSdoesnotprovideanydefaultrepositoryforNGINX.Issuethef

ollowingcommandinyourterminal:

sudorpm-Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-cen

tos-7-0.el7.ngx.noarch,rpm

這將向CentOS添加NGINX回購。

2.Now,issuethefollowingcommandtoseewhichversionsofNGINXare

availabletoinstall:

sudoyum一一showduplicateslistNginx

這將向您顯示最新的穩(wěn)定版本。在我們的例子中,它顯示nginxl.8.0和nginxl.8.L

3.Now,let'sinstal1NGINXusingthefollowingcommand:

sudoyuminstallNginx

這將安裝NGINX,

4.在CentOS上,NGINX在安裝或重新啟動(dòng)后不會(huì)自動(dòng)啟動(dòng)。因此,首先,我們

將使用以下命令在系統(tǒng)重新啟動(dòng)后啟用NGINX自動(dòng)啟動(dòng):

systemctlenableNginx.service

5.現(xiàn)在,讓我們通過發(fā)出以下命令來啟動(dòng)NGINX:

systemctlstartNginx.service

6.Then,openyourbrowserandentertheIPoftheCentOSserverorhos

tname.Ifyouseethesamewelcomescreenaswesawinthefiguree

arlierinthechapterforDebian,thenNGINXisinstalledsuccessful

ly.

要檢查安裝了哪個(gè)版本的NGINX,請(qǐng)?jiān)诮K端中發(fā)出以下命令:

Nginx-v

在我們的服務(wù)器上,安裝的NGINX版本是1.8.U

現(xiàn)在,我們的web服務(wù)器已經(jīng)準(zhǔn)備好了。

安裝PHP7

1.ThenextstepistoinstallPHP7FPMandconfigurebothNGINXandP

HP7toworktogether.Asofthetimeofwritingthisbook,PHP7is

notpackagedinofficialCentOSrepositories.So,wehavetwochoice

stoinstallPHP7:eitherwebuilditfromsource,orweusethird-

partyrepositories.Buildingfromsourceisalittlebitdifficult,

solet,sgotheeasywayandusethird-partyrepositories.

對(duì)于本書,我們將使用WebStaticrepos進(jìn)行PHP7安裝,因?yàn)樗鼈兲峁┝诵掳姹镜目?/p>

速更新。還有更多的存儲(chǔ)庫,只要可用,讀者可以選擇使用任何存儲(chǔ)庫。

2.現(xiàn)在,讓我們通過發(fā)出以下命令向CentOSrepo添加一個(gè)WebStatic存儲(chǔ)庫:

rpm-Uvhhttps://dl.fedoraproject,org/pub/epel/epel-release-latest-7.noarch,rp

mrpm-Uvhhttps://mirror.webtatic.com/yum/el7/webtatic-release.rpm

3.Afterthereposareaddedsuccessfully,issuethefollowingcommand

toseewhichversionisavailableforinstallation:

sudoyum-showduplicateslistphp70w

在我們的例子中,可以安裝PHP7.0.3o

4.現(xiàn)在,發(fā)出以下命令來安裝PIIP7以及一些可能需要的模塊:

sudoyuminstallphp70wphp70w-commonphp70w-cliphp70w-fpmphp70w-mysqlphp70

w-opcachephp70w-mcrypt

5.ThiswillinstallcorePHP7andsomemodulesavailableforPHP7.I

fanyothermoduleisrequired,itcanbeinstalledeasily;however,

first,searchtocheckwhetheritisavailableornot.Issuethefol

lowingcommandintheterminaltoseealltheavailablemodulesfor

PHP7:

sudoyumsearchphp70w-

我們將看到PHP7的所有可用模塊的長(zhǎng)列表。

6.Now,let'ssaythatwewanttoinstallthePHP7gdmodule;issueth

efollowingcommand:

sudoyuminstallphp70w-gd

這將安裝gd模塊。可以使用相同的命令安裝多個(gè)模塊,并用空格分隔每個(gè)模塊,就像我

們?cè)赑HP的初始安裝中所做的那樣。

現(xiàn)在,要檢查安裝了哪個(gè)版本的PHP,請(qǐng)發(fā)出以下命令:

php-v

在我們的例子中,安裝了PHP7.0.3o

7.要啟動(dòng)、停止和重新啟動(dòng)PHP,請(qǐng)?jiān)诮K端中發(fā)出以下命令:

sudosystemctlstartphp-fpmsudosystemctlrestartphp-fpmsudosystemctlsto

pphp-fpm

8.Now,let,sconfigureNGINXtousePHPFPM.OpenthedefaultNGINXvi

rtualhostfilelocatedat/etc/Nginx/conf.d/default.confusingeithervi,n

ano,oranyothereditorofyourchoice.Now,makesurethattwoopt

ionsaresetintheserverblock,asfollows:

server{listen80;server_namelocalhost;root/usr/share/nginx/

html;indexindex.phpindex,htmlindex,htm;

root選項(xiàng)表示我們的網(wǎng)站源代碼文件將放置的web文檔根目錄。索引表示將隨擴(kuò)展名加

載的默認(rèn)文件。如果找到這些文件中的任何一個(gè),默認(rèn)情況下將執(zhí)行它們,而不管URL

中提到的任何文件。

9.ThenextconfigurationinNGINXisalocationblockforPUP.Thefol

lowingistheconfigurationforPlIP:

location~\.php${tryfiles$uri=404;fastcgi_splitpath_info-(?+

\.php)(/.+)$;fastcgi_pass127.0.0.1:9000;fastcgi_indexindex,php;

fastcgiparamSCRIPTFILENAME$documentroot$fastcgiscriptname;include

fastcgi_params;}

前面的塊是最重要的配置,因?yàn)樗筃GINX能夠與PHP通信。行fastcgi_pass127.0.0.1:900

o告訴NGINX可以通過端口9000上的環(huán)回IP訪問PHPFPM。其余的細(xì)節(jié)與我們

為Debian和Ubuntu討論的內(nèi)容相同。

10.Now,totestourinstallation,wewillcreateafilenamedinfo.phpwi

ththefollowingcontents:

php<?phpphpinfoO;?>''保存文件后,鍵入'http:〃server_ip/info.php'

或'http:〃hostname/info.php',我們將得到一個(gè)包含PHP完整信息的頁面。如果你看

到這一頁,恭喜你!PHP與NGINX一起運(yùn)行。

安裝Percona服務(wù)器

1.Now,wewillinstallPerconaServeronCentOS.Theinstallationproc

essisthesame,exceptthatithasaseparaterepository.Toaddth

ePerconaServerrepotoCentOS,executethefollowingcommandinth

eterminal:

sudoyuminstallhttp://w\^v.percona.com/downloads/percona-release/redhat/O.1-3

/percona-release-0.1-3.noarch,rpm

repo安裝完成后,將顯示一條消息,說明安裝完成。

2.現(xiàn)在,要測(cè)試repo,發(fā)出以下命令,它將列出所有可用的Percona包:

sudoyumsearchpercona

3.ToinstallPerconaServer5.5,issuethefollowingcommandinthete

rminal:

sudoyuminstallPercona-Server-server-55

安裝過程將開始。該過程的其余部分與Debian/Ubuntu相同。

4.安裝完成后,我們將看到一條完成消息。

設(shè)置流浪漢

Vagrant是開發(fā)人員用于開發(fā)環(huán)境的工具。Vagrant提供了一個(gè)簡(jiǎn)單的命令行界面,可以

使用所需的所有工具設(shè)置虛擬機(jī)。Vagrant使用稱為Vagrantbox的盒子,根據(jù)這個(gè)盒

子,它可以擁有Linux操作系統(tǒng)和其他工具。Vagrant同時(shí)支持OracleVMVirtualBox

和VMwareo在本書中,我們將使用VirtualBox,我們假設(shè)它也安裝在您的機(jī)器上。

Vagrant有幾個(gè)PHP7框,包括LaravelHomestead和RasmusPHP7devo因此,讓我們

開始在Windows和MacOSX上配置RasmusPHP7dev框。

我們假設(shè)VirutalBox和Vagrant都安裝在我們的機(jī)器上。VirtualBox可從下載https:

//www.virtualbox.org/wiki/Downloads,流浪漢可從下載

/downloads.html針對(duì)不同的平臺(tái)。有關(guān)RasmusPHP7dev流浪者箱的詳細(xì)信息,請(qǐng)?jiān)L問

https:〃github.com/rlerdorf7Php7dev。

執(zhí)行以下步驟:

1.在其中一個(gè)驅(qū)動(dòng)器中創(chuàng)建一個(gè)目錄。例如,我們?cè)贒驅(qū)動(dòng)器中創(chuàng)建了一個(gè)php7目

錄。然后,按住s加,立鍵,右鍵單擊,然后選擇在此處打開命令窗口,直接打

開該特定文件夾中的命令行。

2.Now,issuethefollowingcommandinthecommandwindow:

vagrantboxaddrasmus/php7dcv

■vagrantboxaddrasmu$/php7dev

):\php7>vagrantboxaddrasmus/php7dev

==>box:Loadingmetadataforbox,rasmus/php7dev,

box:URL:https:///rasmus/php7dev

==>box:Addingbox'rasfnus/phpydev1(V0.1.0)forprovider:virtualbox

box:Downloading:https://atlas.hashicorp.com/rasmus/boxes/php7dev/versions/0.1.0/providers/virtualbox.box

box:Progress:1%(Rate:511k/s,Estimatedtimeremaining:1:50:28)))

它將開始下載“流浪者”框,如以下屏幕截圖所示:

3.Now,whenthedownloadiscompleted,weneedtoinitializeitsotha

ttheboxisconfiguredandaddedtoVirtualBoxforus.Issuethefo

11owingcommandinthecommandwindow:

vagrantinitrasmus/php7dev

這將開始將該框添加到VirtualBox并對(duì)其進(jìn)行配置。流程完成后,將顯示一條消息,如

以下屏幕截圖所示:

D:\php7>vagrantinitrasmus/php7dev

A'Vagrantfile'hasbeenplacedinthisdirectory.Youarenow

readyto'vagrantup'yourfirstvirtualenvironment!Pleaseread

thecommentsintheVagrantfileaswellasdocumentationon

''formoreinformationonusingVagrant.

D:\php7>

4.Now,issuethefollowingcommand,whichwillcompletelysetuptheV

agrantboxandstartitupandrunning:

vagrantup

這個(gè)過程需要一點(diǎn)時(shí)間。完成后,您的箱子已準(zhǔn)備就緒并正在運(yùn)行,可以使用。

5.Now,thefirstthingtodoafteritisupistoupdateeverything.T

hisboxusesUbuntu,soopenthecommandwindowinthesamephp7devd

irectoryandissuethefollowingcommand:

vagrantssh

它將通過SSH將我們與虛擬機(jī)連接起來。

在Windows中,如果在PATH變量中未安裝SSII或未配置SSI1,則可以使用PuTTYo可從

下載http://www?chiark.greenend.org.uk/?sgtatham/putty/download.html。對(duì)于PuT

TY,主機(jī)為127.0.0.1,端口為2222。Vagrant是SSH的用戶名和密碼。

6.WhenweareloggedintotheboxOS,issuethefollowingcommandsto

updatethesystem:

sudoapt-getupdatesudoapt-getupgrade

如果有新版本,這將更新核心系統(tǒng)、NGINX、MySQL、php7和其他已安裝的工具。

7.Theboxisnowreadytousefordevelopmentpurposes.Theboxcanbe

accessedinthebrowserbytypingitsIPaddressinthebrowserwind

ow.TofindtheIPaddressofthebox,issuethefollowingcommandi

ntheSSH-connectedcommandwindow:

sudoifconfig

這將顯示一些詳細(xì)信息。在那里找到IPv4詳細(xì)信息,并獲取該框的IPo

總結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論