小白安裝php(centos+nginx+php5)

工作好幾年,一直做java,一直沒玩過php,現在公司要搞個商城,小公司沒精力重新開發,準備買個別人的,做二次開發。人家的是php,沒辦法,就叫我先把他們的項目跑起來。

先吐槽一下,國內這些做產品的真的太他媽水了,php也水。php沒有向後兼容,基本算是完全固定版本。這個做產品的也不說要什麼樣的版本,版本太高報錯,版本太低也報錯

,本人外行,以爲像java,弄個比較新的版本總沒問題。遇到的種種問題就不詳細說了,大概說下經過。

1、確定php版本

先安裝的是5.5,各種報錯,同事的5.4沒問題,確定用5.4。

2、安裝http服務

因爲服務器已安裝nginx,所以直接用ngxin,不用apache httpd。這裏要說下,apache和nginx運行php的原理是不一樣的。apache是直接加載php模塊自己解析php腳本,nginx是轉發,接收到php請求就把請求轉發到php-fpm,所以nginx下一定要有php-fpm。還有就是比較老的php是沒有這個程序的,需要自己去下載

3、安裝php

主要是要注意一些選項

./configure --enable-fpm --with-mysql --prefix=/usr/local/php-5.4.45
--enable-fpm:啓用php-fpm
--with-mysql:應該是安裝mysql模塊
--prefix:安裝目錄,最好指定,不然要卸載只能一個一個去刪了
其他一些參數
--with-libdir=lib64:設置系統lib目錄,之前安裝5.1的版本,默認的lib目錄是lib而不是lib64,導致不能安裝,5.4沒發現此問題

3、修改php-fpm配置文件

cp ~/php-5.4.45/php.ini-production /usr/local/php-5.4.45/lib/php.ini

/usr/local/php-5.4.45/lib/php.ini這個就是php程序的配置文件,默認請求下php的配置文件放在安裝目錄的lib下

cd /usr/local/php-5.4.45/

cp etc/php-fpm.conf.default etc/php-fpm.conf

vi etc/php-fpm.conf

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

將user和group改爲要運行php-fpm的用戶和組,這個必須是已存在的用戶,如果不存在會報錯,創建用戶useradd -M -r -s /sbin/nologin www-data

啓動

sbin/php-fpm 

4、配置nginx,取消默認的 PHP 配置塊的註釋,並修改爲下面的內容

location / {
#proxy_pass http://localhost;
root /var/www;
index index.html index.htm index.php;
    }

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

/var/www/這個目錄其實是apache httpd網頁的默認目錄,nginx的默認網頁目錄不是這個,這個可以是其他的

重啓nginx

5、測試

創建一個測試文件放到/var/www/目錄下

echo "<?php phpinfo(); ?>" >> /var/www//index.php

新手最好創建這個文件,這個頁面可以提供php的很多信息,打開瀏覽器訪問localhost/index.php就可以看到php的系統信息了。

因爲我的nginx之前拿來做負載均衡,用了upstream模塊功能,localhost的所有請求都被轉發到其他地方了,所以這個頁面不能打開,刪除nginx的相關配置就可以了

6、安裝其他的php項目

把其他的php項目複製到/var/www/目錄,php項目一般都帶有應用的初始化功能,這個過程遇到兩個問題,記錄下

1)系統時區問題,修改php.ini的date.timezone =Asia/Shanghai,但是php.ini文件在哪呢?默認是在安裝目錄的lib下,我的是在/usr/local/php-5.4.45/lib下,這個目錄下可能沒有php.ini文件,如果前面沒有執行拷貝php.ini操作的話。如果沒有就要從源碼拷貝一個預先設置的php.ini文件到此目錄。也有可能php程序讀的配置文件不在這個目錄下,這樣我們在這裏修改php.ini就沒有作用了,如何確定配置文件的目錄呢?我們建立的測試文件就有大用處了,訪問index.php頁面,找到

Configuration File (php.ini) Path /usr/local/php-5.4.45/lib
後面的值就是配置文件的目錄了,修改後殺掉php-fpm的主進程,然後再啓動

[root@VM_211_154_centos ~]# ps -ef|grep fpm
root      7404  2563  0 13:10 pts/1    00:00:00 vi /usr/local/php-5.4.45/etc/php-fpm.conf
root     10607     1  0 14:10 ?        00:00:00 php-fpm: master process (/usr/local/php-5.4.45/etc/php-fpm.conf)
www-data 10609 10607  0 14:10 ?        00:00:14 php-fpm: pool www
www-data 10924 10607  0 14:23 ?        00:00:12 php-fpm: pool www
www-data 11462 10607  0 14:31 ?        00:00:09 php-fpm: pool www
root     13390  7421  0 15:25 pts/0    00:00:00 grep fpm
[root@VM_211_154_centos ~]# 

這個php-fpm: master process就是主進程

kill -9 10607

/usr/local/php-5.4.45/sbin/php-fpm

2)擴展庫問題

我的這個項目要求curl擴展庫,但我沒安裝,所以要新增curl擴展庫。

確保系統已安裝curl,從源碼編譯curl擴展庫

cd ~/php-5.4.45/ext/curl/

/usr/local/php-5.4.45/bin/phpize

./configure --with-curl --with-php-config=/usr/local/php-5.4.45/bin/php-config

make

phpize是用來擴展php擴展模塊的,具體的不太瞭解。編譯好後會在curl下產生modules/curl.so,我們要把這個共享庫放到php的擴展文件夾裏,問題又來了,擴展文件夾在哪呢?在php.ini中extension_dir所指的目錄就是。但是php.ini中可能沒有配置這個(我的就沒有),訪問index.php頁面看看

extension_dir /usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525 /usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525

我的是在這個目錄下,而且還沒有這個目錄,需要自己新建。

mkdir -p /usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525

把剛纔編譯好的擴展模塊放到這裏

mv ~/php-5.4.45/ext/curl/modules/curl.so /usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525/

重啓php-fpm


搞了兩天終於搞好了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章