nginx php-fpm安裝配置

nginx php-fpm安裝配置

nginx本身不能處理PHP,它只是個web服務器,當接收到請求后,如果是php請求,則發給php解釋器處理,并把結果返回給客戶端。

nginx一般是把請求發fastcgi管理進程處理,fascgi管理進程選擇cgi子進程處理結果并返回被nginx

本文以php-fpm為例介紹如何使nginx支持PHP

一、編譯安裝php-fpm

什么是PHP-FPM

PHP-FPM是一個PHP FastCGI管理器 ,是只用于PHP的,可以在 http://php-fpm.org/download下載得到.

PHP-FPM其實是PHP源代碼的一個補丁,旨在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP源代碼中,在編譯安裝PHP后才可以使用。

新版PHP已經集成php-fpm了,不再是第三方的包了 ,推薦使用。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置,比spawn-fcgi具有更多優點,所以被PHP官方收錄了。在./configure的時候帶 –enable-fpm參數即可開啟PHP-FPM,其它參數都是配置php的,具體選項含義可以查看這里。

安裝前準備

centos下執行

yum -y install gcc automake autoconf libtool makeyum -y install gcc gcc-c++ glibcyum -y install libmcrypt-devel mhash-devel libxslt-devel 
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel 
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel 
ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel 
krb5 krb5-devel libidn libidn-devel openssl openssl-devel

新版php-fpm安裝(推薦安裝方式)

wget http://cn2.php.net/distributions/php-5.4.7.tar.gz
tar zvxf php-5.4.7.tar.gz
cd php-5.4.7
./configure --prefix=/usr/local/php  --enable-fpm --with-mcrypt 
--enable-mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath 
--enable-inline-optimization --with-bz2  --with-zlib --enable-sockets 
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex 
--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli 
--with-gd --with-jpeg-dirmake all install

舊版手動打補丁php-fpm安裝(舊版程序已經沒有了,大家新版的吧,這里做個展示)

wget http://cn2.php.net/get/php-5.2.17.tar.gz
wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
tar zvxf php-5.2.17.tar.gz
gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
cd php-5.2.17
./configure --prefix=/usr/local/php -with-config-file-path=/usr/local/php/etc
-with-mysql=/usr/local/mysql
-with-mysqli=/usr/local/mysql/bin/mysql_config -with-openssl -enable-fpm -enable-mbstring
-with-freetype-dir -with-jpeg-dir -with-png-dir -with-zlib-dir -with-libxml-dir=/usr -enable-xml
-with-mhash -with-mcrypt -enable-pcntl -enable-sockets  -with-bz2 -with-curl -with-curlwrappers
-enable-mbregex -with-gd -enable-gd-native-ttf -enable-zip -enable-soap -with-iconv -enable-bcmath
-enable-shmop -enable-sysvsem -enable-inline-optimization -with-ldap -with-ldap-sasl -enable-pdo
-with-pdo-mysql
make all install

以上兩種方式都可以安裝php-fpm,安裝后內容放在 /usr/local/php 目錄下

llgch0zh.png

以上就完成了php-fpm的安裝。

對php-fpm運行用戶進行設置

下面是對php-fpm運行用戶進行設置

cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf
vi etc/php-fpm.conf

修改

user = www-data
group = www-data

如果www-data用戶不存在,那么先添加www-data用戶

groupadd www-data
useradd -g www-data www-data

二、編譯安裝nginx

然后按照http://blog.redis.com.cn/install 安裝nginx

三、修改nginx配置文件以支持php-fpm

nginx安裝完成后,修改nginx配置文件為,nginx.conf

其中server段增加如下配置

root html;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

否則會出現No input file specified.錯誤

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
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;
}

四、創建測試php文件

創建php文件

在/usr/local/nginx/html下創建index.php文件,輸入如下內容

<?phpecho phpinfo();
?>

五、啟動服務

啟動php-fpm和nginx

/usr/local/php/sbin/php-fpm 
#手動打補丁的啟動方式/usr/local/php/sbin/php-fpm startsudo /usr/local/nginx/nginx

php-fpm關閉重啟見文章結尾

六、瀏覽器訪問

訪問http://你的服務器ip/index.php ,皆可以見到php信息了。

llgchb1x.png

七、安裝php-fpm時可能遇到的錯誤

1. php configure時出錯

configure: error: XML configuration could not be foundapt-get install libxml2 libxml2-dev  (ubuntu下)
yum -y install libxml2 libxml2-devel(centos下)

2. Please reinstall the BZip2 distribution

wget http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz
tar -zxvf bzip2-1.0.5.tar.gz
cd bzip2-1.0.5
make
make install

3. php的配置文件中有一行–with-mysql=/usr。

安裝的時候提示:

configure: error: Cannot find MySQL header files under yes.
Note that the MySQL client library is not bundled anymore.

這是由于安裝mysql時沒有安裝mysql頭文件,或者是路徑指定不正確,php找不到mysql的頭文件引起的錯誤提示。

解決方法。
(1.) 查看你的系統有沒有安裝mysql header
find / -name mysql.h

如果有。請指定–with-mysql=/跟你的正常路徑。
如果沒有。請看下一步。

(2.)redhat安裝
rpm -ivh MySQL-devel-4.1.12-1.i386.rpm
(3.)ubuntu安裝
apt-get install libmysqlclient15-dev
(4.)最后一步php的配置選項添加–with-mysql=/usr即可!

4.No input file specified.

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;
}

5. 如果php configure時缺庫,可以先安裝庫(ubuntu下)

sudo apt-get install make bison flex gcc patch autoconf subversion locate
sudo apt-get install libxml2-dev libbz2-dev libpcre3-dev libssl-dev zlib1g-dev libmcrypt-dev libmhash-dev libmhash2 libcurl4-openssl-dev libpq-dev libpq5 libsyck0-dev

6. mcrypt.h not found. Please reinstall libmcrypt

apt-get install libmcrypt-dev

或者

cd /usr/local/src
wget http://softlayer.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
tar -zxvf libmcrypt-2.5.8.tar.gz
cd /usr/local/src/libmcrypt-2.5.8
./configure --prefix=/usr/local
make
make install

7. php-fpm 5.4.7 如何關閉 重啟?

php 5.4.7 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令, 需要使用信號控制:

master進程可以理解以下信號

INT, TERM 立刻終止
QUIT 平滑終止
USR1 重新打開日志文件
USR2 平滑重載所有worker進程并重新載入配置和二進制模塊

示例:
php-fpm 關閉:
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進程數:
ps aux | grep -c php-fpm

8.命令行下執行php,提示找不到命令

-bash: /usr/bin/php: No such file or directory

vi /etc/profile

在文件底部增加一行配置

export PATH=/usr/local/php/bin:$PATH

保存退出

source /etc/profile

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

架構演進及常用架構

1架構演進及常用架構 1.1單體分層架構 1.2 多應用微服務架構 1.3 分布式集群部署 部署 CDN 節點&#xff1a; 用戶訪問量的增加意味著用戶地域的分散請求&#xff0c;如果所有請求都直接發送中心服務器的話&#xff0c;距離越遠&#xff0c;響應速度越差&#xff0c;這時就需…

【編織時空四:探究順序表與鏈表的數據之旅】

本章重點 鏈表的分類 帶頭雙向循環鏈表接口實現 順序表和鏈表的區別 緩存利用率參考存儲體系結構 以及 局部原理性。 一、鏈表的分類 實際中鏈表的結構非常多樣&#xff0c;以下情況組合起來就有8種鏈表結構&#xff1a; 1. 單向或者雙向 2. 帶頭或者不帶頭 3. 循環或者非…

yolov5封裝進ros系統

一&#xff0c;要具備ROS環境 ROS環境搭建可以參考我之前的文章 ROS參考文章1 ROS參考文章2 ? 建立ROS工作空間 ROS系統由自己的編譯空間規則。 cd 你自己想要的文件夾&#xff08;我一般是home目錄&#xff09; mkdir -p (你自己的文件夾名字&#xff0c;比如我是yolov5…

C++的stack和queue+優先隊列

文章目錄 什么是容器適配器底層邏輯為什么選擇deque作為stack和queue的底層默認容器優先隊列優先隊列的模擬實現stack和queue的模擬實現 什么是容器適配器 適配器是一種設計模式(設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總 結)&#xff0c;…

Greenplum多級分區表添加分區報錯ERROR: no partitions specified at depth 2

一般來說&#xff0c;我們二級分區表都會使用模版&#xff0c;如果沒有使用模版特性&#xff0c;那么就會報ERROR: no partitions specified at depth 2類似的錯誤。因為沒有模版&#xff0c;必須要顯式指定分區。 當然我們在建表的時候&#xff0c;如果沒有指定&#xff0c;那…

PyTorch訓練深度卷積生成對抗網絡DCGAN

文章目錄 DCGAN介紹代碼結果參考 DCGAN介紹 將CNN和GAN結合起來&#xff0c;把監督學習和無監督學習結合起來。具體解釋可以參見 深度卷積對抗生成網絡(DCGAN) DCGAN的生成器結構&#xff1a; 圖片來源&#xff1a;https://arxiv.org/abs/1511.06434 代碼 model.py impor…

VSCode 使用總結

快捷鍵 在 Visual Studio Code (VSCode) 中&#xff0c;有許多常用的快捷鍵可以提高編程效率。以下是一些常見的 VSCode 編程項目快捷鍵&#xff1a; 編輯器操作&#xff1a; 撤銷&#xff1a;Ctrl Z重做&#xff1a;Ctrl Shift Z復制&#xff1a;Ctrl C剪切&#xff1a;C…

Electron入門,項目啟動。

electron 簡單介紹&#xff1a; 實現&#xff1a;HTML/CSS/JS桌面程序&#xff0c;搭建跨平臺桌面應用。 electron 官方文檔&#xff1a; [https://electronjs.org/docs] 本文是基于以下2篇文章且自行實踐過的&#xff0c;可行性真實有效。 文章1&#xff1a; https://www.cnbl…

題解 | #1005.List Reshape# 2023杭電暑期多校9

1005.List Reshape 簽到題 題目大意 按一定格式給定一個純數字一維數組&#xff0c;按給定格式輸出成二維數組。 解題思路 讀入初始數組字符串&#xff0c;將每個數字分離&#xff0c;按要求輸出即可 參考代碼 參考代碼為已AC代碼主干&#xff0c;其中部分功能需讀者自行…

學習Vue:組件通信

組件化開發在現代前端開發中是一種關鍵的方法&#xff0c;它能夠將復雜的應用程序拆分為更小、更可管理的獨立組件。在Vue.js中&#xff0c;父子組件通信是組件化開發中的重要概念&#xff0c;同時我們還會討論其他組件間通信的方式。 父子組件通信&#xff1a;Props 和 Events…

TDSQL赤兔管理臺無管理員用戶密碼解決方案

解決方案 問題描述&#xff1a; tdsql使用過程中&#xff0c;可能會遇到控制臺用戶密碼忘記的情況&#xff0c;用戶登錄次數過多被鎖的情況&#xff0c;沒有管理員的用戶密碼又急需某些權限的情況。 解決過程&#xff1a; 獲取配置庫信息&#xff1a; 在瀏覽器上打開如下命…

基于Javaweb的攝影作品網站/攝影網站

摘 要 隨著信息化時代的到來&#xff0c;系統管理都趨向于智能化、系統化&#xff0c;攝影作品網站也不例外&#xff0c;但目前國內的有些網站仍然都使用人工管理&#xff0c;瀏覽網站人數越來越多&#xff0c;同時信息量也越來越龐大&#xff0c;人工管理顯然已無法應對時代的…

AMD fTPM RNG的BUG使得Linus Torvalds不滿

導讀因為在 Ryzen 系統上對內核造成了困擾&#xff0c;Linus Torvalds 最近在郵件列表中表達了對 AMD fTPM 硬件隨機數生成器的不滿&#xff0c;并提出了禁用該功能的建議。 因為在 Ryzen 系統上對內核造成了困擾&#xff0c;Linus Torvalds 最近在郵件列表中表達了對 AMD fTPM…

【【Verilog典型電路設計之FIFO設計】】

典型電路設計之FIFO設計 FIFO (First In First Out&#xff09;是一種先進先出的數據緩存器&#xff0c;通常用于接口電路的數據緩存。與普通存儲器的區別是沒有外部讀寫地址線&#xff0c;可以使用兩個時鐘分別進行寫和讀操作。FIFO只能順序寫入數據和順序讀出數據&#xff0…

ThinkPHP中實現IP地址定位

在網站開發中&#xff0c;我們經常需要獲取用戶的地理位置信息以提供個性化的服務。一種常見的方法是通過IP地址定位。在本文中&#xff0c;我們將介紹如何在ThinkPHP框架中實現IP地址定位。 一、IP地址定位的基本原理 IP地址是Internet上的設備在網絡中的標識符。每個設備都有…

【從0開始學架構筆記】01 基礎架構

文章目錄 一、架構的定義1. 系統與子系統2. 模塊與組件3. 框架與架構4. 重新定義架構 二、架構設計的目的三、復雜度來源&#xff1a;高性能1. 單機復雜度2. 集群復雜度2.1 任務分配2.2 任務分解&#xff08;微服務&#xff09; 四、復雜度來源&#xff1a;高可用1. 計算高可用…

GitKraken保姆級圖文使用指南

前言 寫這篇文章的原因是組內的產品和美術同學&#xff0c;開始參與到git工作流中&#xff0c;但是網上又沒有找到一個比較詳細的使用教程&#xff0c;所以干脆就自己寫了一個[doge]。文章的內容比較基礎&#xff0c;介紹了Git內的一些基礎概念和基本操作&#xff0c;適合零基…

合并多個文本文件

使用 wxPython 模塊合并多個文本文件的博客。以下是一篇示例博客&#xff1a; C:\pythoncode\blog\txtmerge.py 在 Python 編程中&#xff0c;我們經常需要處理文本文件。有時候&#xff0c;我們可能需要將多個文本文件合并成一個文件&#xff0c;以便進行進一步的處理或分析。…

QT報表Limereport v1.5.35編譯及使用

1、編譯說明 下載后QT CREATER中打開limereport.pro然后直接編譯就可以了。編譯后結果如下圖&#xff1a; 一次編譯可以得到庫文件和DEMO執行程序。 2、使用說明 拷貝如下圖編譯后的lib目錄到自己的工程目錄中。 release版本的重新命名為librelease. PRO文件中配置 QT …

openpose姿態估計【學習筆記】

文章目錄 1、人體需要檢測的關鍵點2、Top-down方法3、Openpose3.1 姿態估計的步驟3.2 PAF&#xff08;Part Affinity Fields&#xff09;部分親和場3.3 制作PAF標簽3.4 PAF權值計算3.5 匹配方法 4、CPM&#xff08;Convolutional Pose Machines&#xff09;模型5、Openpose5.1 …