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ù)載均衡來處理動(dòng)態(tài)請(qǐng)求。

前言

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

無論是靜態(tài)還是動(dòng)態(tài)內(nèi)容,Apache都可以處理,Apache具有內(nèi)置的解析和執(zhí)行各種動(dòng)態(tài)腳本語言(包括PHP,Python和Perl)的功能,無需借助外部處理器。動(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文件,只能通過調(diào)用外部CGI處理器運(yùn)行php文件,例如php-fpm。而php-fpm提供了對(duì)fastcgi進(jìn)程管理的工具,安裝php時(shí)要編譯安裝php-fpm.

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

本來是想配置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í)就無法處理靜態(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密集操作分離出來,減少阻塞對(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 通過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í)行命令使該配置文件生效(千萬不能忘記): 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

接下來配置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ù)官方文檔的說明,這里為了當(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)過上訴配置,目前訪問80端口的php后綴的文件將會(huì)去/var/www/(nginx默認(rèn)web目錄)下尋找匹配php文件, 并通過9000訪問fcgi處理并管理php程序。

訪問phpinfo.php


圖片.png

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

NOSQL技術(shù):

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評(píng)論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,324評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,417評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,783評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,960評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,522評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,267評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,471評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,698評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評(píng)論 1 294
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,204評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,436評(píng)論 2 378

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