前言
第一次動筆寫博,雖然前輩們都寫了不少,但我還是希望寫一遍加深印象,有錯誤請指正(交流即進步)。
作為一個畢業兩年多的java程序員,下決定記錄一些做過的事情,免得幾年后回顧過去,整個人渾渾噩噩,都不知自己做了什么,此次部署是因為前幾天公司給了我一個PHP項目讓我部署在線上,我一聽很懵,我一個做java的,PHP我沒搞過啊,但是,上頭命令下來了,還是要擼起袖子,擼一擼。
言歸正傳。
服務器上已經有nginx和mysql,所以就決定采用 PHP+Nginx+mysql這個組合,在網上翻了很多資料,由於對linux和PHP不不了解,不知道PHP和nginx和mysql是怎么關聯的,遇到各種原因(不是php裝錯了,就是包沒裝,),花了很多時間,后來部署完后發現,這三個都是單獨安裝(額~~難道還能一起安裝),只需要php安裝后配置下,nginx的配置下(和php的關聯)就直接可以跑了。至於mysql,只要開啟,php項目里面的連接數據庫配置好了,可以直接連上去。所以本文主要針對php的安裝。
本文主要參考了此鏈接博主(mingzhiyu):http://www.cnblogs.com/kyuang/p/6801942.html
關於nginx和mysql的安裝,開始安裝前需要在linux的一些開發庫安裝在此也不復述,參考鏈接里面都有。
php版本:5.6.30
nginx版本:1.7.3
mysql版本:5.7.3-m13
PHP安裝配置
nginx本身不能處理PHP,它只是個WEB服務器,當接收到請求后,如果是php請求,則發送給php解釋器處理,並把結果返回給客戶端。
nginx一般把請求發送給fastcgi管理進程處理,fastcgi管理進程選擇cgi子進程處理結果並返回nginx。
什么是PHP-FPM?PHP-FPM是一個屬於PHP的FASTCGI管理器,只用於PHP,新版本已集成php-fpm了,php-fpm提供更好的php進程管理,可以有效控制內存和進程,可以平滑重載php配置。在configure時,帶-enable-fpm參數即可開啟php-fpm,其他參數可見這里,至於什么是fastcgi,和php-fpm什么關系,可參考鏈接https://segmentfault.com/q/1010000000256516
安裝前准備
添加 epel 源
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安裝依賴
yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel yum -y install gcc gcc-c++ glibc yum -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
cd /usr/local/src wget http://php.net/get/php-5.6.30.tar.gz/from/this/mirror tar -zvxf php-5.6.30.tar.gz cd php-5.6.30 ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \ --enable-mbstring --enable-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-dir --with-freetype-dir --enable-calendar make && make install
如果php-5.6.30.tar.gz沒下載下來,可直接復制鏈接:http://php.net/get/php-5.6.30.tar.gz/from/this/mirror到瀏覽器,手動下載。
以上就完成了php-fpm的安裝,安裝過程會花一些時間。
關於php配置
1、為php提供配置文件
cp php.ini-production /usr/local/php/etc/php.ini
注意:php.ini-production 還是在剛才/usr/local/src/php-5.6.30 目錄下
2、為php-fpm提供配置文件
cd /usr/local/php cp etc/php-fpm.conf.default etc/php-fpm.conf vim etc/php-fpm.conf
修改php-fpm.conf
user = www
group = www
如果www用戶不存在,那么先添加www用戶(默認運行用戶nobody)
groupadd www
useradd -g www www
3、啟動php-fpm
執行
/usr/local/php/sbin/php-fpm
使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啟動成功了):
ps aux | grep php-fpm
結果如下圖:
3、nginx和php-fpm整合
編輯nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
修改如下:
重新載入nginx的配置文件:
/usr/local/nginx/sbin/nginx -s reload
4、測試php文件
在/usr/local/nginx/html下創建index.php文件,輸入如下內容:
<?php
phpinfo();
?>
5、瀏覽器訪問
訪問http://你的服務器ip/index.php,皆可以見到php信息了。
也可直接訪問你項目的地址,如:http://我的服務器地址/admin.php
成功。
6、安裝過程出錯原因
我按流程安裝時,出現了幾個錯誤,一個是:make: *** 沒有規則可以創建“default”需要的目標“build”,這是因為是pcre沒安裝的問題,安裝一下就OK。另一個是:mcrypt.h not found. Please reinstall libmcrypt
是因為php-mcrypt libmcrypt libmcrypt-devel這些包沒安裝,出現的錯誤一般都是缺少庫或者包,安裝即可。