在Centos7服務器上部署PHP項目


前言

第一次動筆寫博,雖然前輩們都寫了不少,但我還是希望寫一遍加深印象,有錯誤請指正(交流即進步)。

作為一個畢業兩年多的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
修改
pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pid = /usr/local/php/var/run/php-fpm.pid

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這些包沒安裝,出現的錯誤一般都是缺少庫或者包,安裝即可。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM