liunx( centos 7.0) 環(huán)境配置(配置Nginx支持php-fpm模塊,可以執(zhí)行PHP文件)

本人租用了阿里云主機(jī),打算配置LA(T)MP環(huán)境(運(yùn)行java接口),配置LNMP(運(yùn)行PHP接口),Nginx作為代理服務(wù)器悔叽,對(duì)靜態(tài)資源請(qǐng)求,代理轉(zhuǎn)發(fā),并配置nginx+php-fpm負(fù)載均衡來(lái)處理動(dòng)態(tài)請(qǐng)求。

前言

php+apache 和 php+nginx的區(qū)別
Nginx+PHP與Apache+PHP性能對(duì)比

無(wú)論是靜態(tài)還是動(dòng)態(tài)內(nèi)容分飞,Apache都可以處理,Apache具有內(nèi)置的解析和執(zhí)行各種動(dòng)態(tài)腳本語(yǔ)言(包括PHP,Python和Perl)的功能遵堵,無(wú)需借助外部處理器。動(dòng)態(tài)內(nèi)容處理恐怕是Nginx的痛點(diǎn)。Nginx處理動(dòng)態(tài)內(nèi)容的效率并不高,且需借助外部的處理器陌宿。

FPM 是一個(gè) PHP 進(jìn)程管理, 安裝PHP前要明白nginx和PHP之間的通信方式是fastcgi锡足,nginx中不能直接運(yùn)行php文件,只能通過(guò)調(diào)用外部CGI處理器運(yùn)行php文件,例如php-fpm壳坪。而php-fpm提供了對(duì)fastcgi進(jìn)程管理的工具舶得,安裝php時(shí)要編譯安裝php-fpm.

選擇web服務(wù)器nginx理由

本來(lái)是想配置apche+tomcat+nginx的,但是最終還是選擇了nginx+fpm, 放棄apche, 主要考慮以下幾點(diǎn):(如果以后有需求再用nginx反代apche.)

Nginx+PHP-FPM實(shí)現(xiàn)了動(dòng)靜分離,負(fù)載均衡,故障轉(zhuǎn)移,在高并發(fā)場(chǎng)景確實(shí)要比Apache有優(yōu)勢(shì).
內(nèi)置PHP模塊的Apache進(jìn)程在處理PHP時(shí)就無(wú)法處理靜態(tài)資源,而Nginx則不需要擔(dān)心這個(gè)問題,因?yàn)樘幚鞵HP是PHP-FPM的事,這就是動(dòng)靜分離.而且Nginx支持upstream配置PHP-FPM集群實(shí)現(xiàn)負(fù)載均衡,這點(diǎn)也是Apache不擅長(zhǎng)的.

PHP-FPM配合Nginx還可以把I/O密集操作分離出來(lái),減少阻塞對(duì)整個(gè)PHP應(yīng)用的影響.

服務(wù)器 參考:

NGINX:基礎(chǔ)訪問控制設(shè)置

1、服務(wù)地址:/etc/init.d/nginx
2爽蝴、配置地址:/etc/nginx/如:/etc/nginx/nginx.conf
3沐批、Web默認(rèn)目錄:/usr/share/nginx/html/如:/usr/share/nginx/html/index.html
4、日志目錄:/var/log/nginx/如:/var/log/nginx/access.log
5霜瘪、主程序文件:/usr/sbin/nginx

使用root安裝完軟件后珠插,默認(rèn)的網(wǎng)站根目錄是/usr/share/nginx/html
(一般修改配置至/var/www)

本人環(huán)境是centos7 通過(guò)yum的方式安裝的nginx(yum導(dǎo)致沒有與其他程序一起裝在user/local/下)。
用systemctl status nginx.service 查看狀態(tài)
systemctl start nginx.service 運(yùn)行

否則自己編寫腳步實(shí)現(xiàn)
:service nginx restart 啟動(dòng)
ps -ef|grep nginx 查看運(yùn)行狀態(tài)

注意,conf文件錯(cuò)誤會(huì)導(dǎo)致啟動(dòng)失敗

TOMCAT:

1颖对、Web默認(rèn)目錄:/usr/local/apache-tomcat-9.0.6/webapps
2捻撑、日志目錄:/usr/local/apache-tomcat-9.0.6/logs如:/catalina.out
3、主程序文件:/usr/local/apache-tomcat-9.0.6
—————————————————————————————————————

數(shù)據(jù)庫(kù):

使用了MYSQL, PHP sql 處理上缤底,沒有類似于 java mybatis,所以打算配置 java mybatis作為DAO層的數(shù)據(jù)庫(kù)連接框架

—————————————————————————————————————

JDK與PHP+FPM:

配置JDK1.8+ Maven, Controller層采用SpringMVC顾患,Spring對(duì)Mybatis和SpringMVC進(jìn)行整合和事務(wù)管理
PHP 7+composer .TP框架

JDK配置參考

sudo vim /etc.profile 追加下面的內(nèi)容: export JAVA_HOME=/usr/lib/jvm/java-8-oracle export CLASSPATH=.:JAVA_HOME/lib:JAVA_HOME/jre/lib:CLASSPATH export PATH=JAVA_HOME/bin:JAVA_HOME/jre/bin:PATH
然后執(zhí)行命令使該配置文件生效(千萬(wàn)不能忘記): source /etc/profile

安裝PHP 7及相關(guān)依賴 linux安裝php7教程

按照建議, 本人服務(wù)器上php位置:/usr/local/php-7.0.27
所有php有關(guān)擴(kuò)展配置文件位置:/usr/local/bin
切記./configure編譯階段開啟所有需要的擴(kuò)展,特別是fpm
記得引入用戶組www,從而管理PHP的權(quán)限

注意一個(gè)地方就是php.ini配置文件的位置可以在編譯前配置參數(shù)中設(shè)置,編譯參數(shù)可以寫成:--with-config-file-path=/usr/local/php 這樣的話php就回去指定的目錄下讀取php.ini配置文件个唧,如果不加這個(gè)參數(shù)默認(rèn)位置就是php安裝目錄下的lib目錄江解,具體也可以在phpinfo()輸出界面查看,如果php.ini放到其他位置徙歼,php讀取不到犁河,那么所有的配置修改后都是不生效的,這點(diǎn)要注意

FPM Linux下安裝php環(huán)境并且配置Nginx支持php-fpm模塊

PHP在 5.3.3 之后已經(jīng)講php-fpm寫入php源碼核心了魄梯。所以已經(jīng)不需要另外下載了桨螺。我這里是7所以就可以直接用。要想使php支持php-fpm酿秸,只需要在編譯的時(shí)候帶上 --enable-fpm 就可以了灭翔。由于我php已經(jīng)安裝好了,而且之前編譯的時(shí)候沒有帶上fpm模式辣苏,所以我必須找到源碼重新編譯一下:

make clean 清理一下
然后./configure -
最后必須執(zhí)行:
makemake install

接下來(lái)配置fpm環(huán)境:

//一般服務(wù)器默認(rèn)加載lib下的ini
cp php.ini-production /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/lib/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/lib/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

啟動(dòng): /etc/init.d/php-fpm
在新安裝擴(kuò)展后肝箱,是需要重新php-fpm的,已使擴(kuò)展生效稀蟋。

php-fpm 關(guān)閉:

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重啟:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm和nginx實(shí)現(xiàn)通信煌张,完成整個(gè)系統(tǒng)的搭建配置Nginx的PHP FastCGI

配置Nginx的PHP FastCGI
fastcgi_params文件保存于/usr/local/nginx/conf下(Ubuntu可保存于/etc/nginx下)他為我們的FastCGI模塊設(shè)置了基本的環(huán)境變量:

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

打開php配置文件找到cgi.fix_pathinfo配置項(xiàng),這一項(xiàng)默認(rèn)被注釋并且值為1退客,根據(jù)官方文檔的說(shuō)明骏融,這里為了當(dāng)文件不存在時(shí),阻止Nginx將請(qǐng)求發(fā)送到后端的PHP-FPM模塊,從而避免惡意腳本注入的攻擊绎谦,所以此項(xiàng)應(yīng)該去掉注釋并設(shè)置為0;這樣php-cgi方能正常使用SCRIPT_FILENAME這個(gè)變量。

編輯nginx配置文件粥脚,具體路徑根據(jù)實(shí)際的nginx.conf配置文件位置編輯窃肠,下面主要修改nginx的server {}配置塊中的內(nèi)容,修改location塊刷允,追加index.php讓nginx服務(wù)器默認(rèn)支持index.php為首頁(yè):

location  /   {
                root html;
                index index.html index.htm index.php;
}

然后配置.php請(qǐng)求被傳送到后端的php-fpm模塊冤留,默認(rèn)情況下php配置塊是被注釋的,此時(shí)去掉注釋并修改為以下內(nèi)容:

location ~* \.php${
                root          html;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include             fastcgi_params;
            }

這里面很多都是默認(rèn)的树灶,root是配置php程序放置的根目錄纤怒,主要修改的就是fastcgi_param中的/scripts為$document_root

修改完上面的,回到nginx.conf第一行天通,默認(rèn)是#user nobody; 這里要去掉注釋改為user www;表示nginx服務(wù)器的權(quán)限為www用戶的權(quán)限

修改完這些保存并退出泊窘,然后重啟nginx:

運(yùn)行,并查看得目前nginx加載的是位于php/lib/下的php.ini:

經(jīng)過(guò)上訴配置,目前訪問80端口的php后綴的文件將會(huì)去/var/www/(nginx默認(rèn)web目錄)下尋找匹配php文件, 并通過(guò)9000訪問fcgi處理并管理php程序。

訪問phpinfo.php


圖片.png

—————————————————————————————————————

NOSQL技術(shù):

redis的使用
MQ
cronbin
—————————————————————————————————————

應(yīng)用場(chǎng)景

前后端分離開發(fā),后端傾注于接口化開發(fā)像寒。
JSP烘豹、EL、JSTL所帶來(lái)的便捷性遠(yuǎn)遠(yuǎn)趕不上現(xiàn)在前端的復(fù)雜性需求
故打算html+js+jq+ajax+json

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诺祸,一起剝皮案震驚了整個(gè)濱河市携悯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筷笨,老刑警劉巖憔鬼,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異胃夏,居然都是意外死亡轴或,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門构订,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)侮叮,“玉大人,你說(shuō)我怎么就攤上這事悼瘾∧野瘢” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵亥宿,是天一觀的道長(zhǎng)卸勺。 經(jīng)常有香客問我,道長(zhǎng)烫扼,這世上最難降的妖魔是什么曙求? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上悟狱,老公的妹妹穿的比我還像新娘静浴。我一直安慰自己,他們只是感情好挤渐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布苹享。 她就那樣靜靜地躺著,像睡著了一般浴麻。 火紅的嫁衣襯著肌膚如雪得问。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天软免,我揣著相機(jī)與錄音宫纬,去河邊找鬼。 笑死膏萧,一個(gè)胖子當(dāng)著我的面吹牛漓骚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播向抢,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼认境,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挟鸠?” 一聲冷哼從身側(cè)響起叉信,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艘希,沒想到半個(gè)月后硼身,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡覆享,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年佳遂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撒顿。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丑罪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凤壁,到底是詐尸還是另有隱情吩屹,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布拧抖,位于F島的核電站煤搜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏唧席。R本人自食惡果不足惜擦盾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一嘲驾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迹卢,春花似錦辽故、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至喻杈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狰晚,已是汗流浹背筒饰。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壁晒,地道東北人瓷们。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像秒咐,于是被迫代替她去往敵國(guó)和親谬晕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容