Linux上編譯安裝PHP

這篇文章主要介紹了關於Linux上編譯安裝PHP,有着必定的參考價值,如今分享給你們,有須要的朋友能夠參考一下php

 

以前在服務器上編譯安裝了PHP運行環境,可是安裝完過了一段時間就差很少忘記了,只是零零星星記得一些簡單步驟,如今又從新在新的服務器上安裝了一遍,將安裝過程記錄下來,方便之後查看,同時也提供給新手作個參考。mysql

1. 首先要下載PHP的源碼安裝包,能夠到PHP官網下載 http://php.net/,進入官網後點擊導航欄的「Downloads」選項,便可計入下載頁面,這時候你能夠根據地區選擇下載的服務器,這裏我選用 cn2.php.net 下載算法

2. 下載完成後使用經常使用的ftp工具將源碼包上載到要安裝PHP的服務器上,這裏咱們暫放在 /tmp 目錄下sql

(注:也能夠在Linux下直接使用Linux 文件下載工具wget 進行下載,形式爲wget -O php-5.6.15.tar.gz http://cn2.php.net/get/php-5.6.15.tar.gz/from/this/mirror,此處應該使用-O 對下載的文件進行命名,不然下載的文件名稱將爲「mirror」,另外,還可使用搜狐的鏡像地址下載 http://mirrors.sohu.com/php/***)安全

3. 解壓該壓縮文件bash

1服務器

# tar -zxf php-5.6.15.tar.gz多線程

4. 上一步產生 php-5.6.15 目錄,進入該目錄,執行該目錄下的 configure 可執行文件(其中\在Linux命令中表明換行),安裝前必須先安裝MySQL及其餘一些擴展庫才行,具體能夠根據安裝過程的報錯信息補充沒有安裝的拓展curl

1socket

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

# ./configure \

--prefix=/usr/local/php-5.6.15 \

--with-config-file-path=/usr/local/php-5.6.15/etc \

--with-mysqli \

--with-xmlrpc \

--with-openssl \

--with-zlib \

--with-freetype-dir \

--with-png-dir \

--with-jpeg-dir \

--with-gd \

--with-iconv=/usr/local/libiconv \

--enable-sockets \

--enable-zend-multibyte \

--enable-soap \

--enable-mbstring \

--enable-static \

--enable-gd-native-ttf \

--with-mcrypt \

--with-mhash \

--with-curl \

--with-xsl \

--enable-ftp \

--with-libxml-dir \

--enable-pcntl \

--enable-bcmath \

--enable-fpm

相對應的解釋以下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

--prefix=/usr/local/php-5.6.15 \ (指定PHP的安裝目錄)

--with-apxs2=/usr/sbin/apxs \ (使PHP支持Apache服務器,使用yum安裝Apache時,apxs默認在usr/sbin/目錄下)

--with-config-file-path=/usr/local/php-5.6.12/etc \ (指定PHP的配置文件php.ini目錄)

--with-mysqli[=DIR] \ (指定mysqli的安裝路徑,使PHP支持mysqli,PHP最新版本已經再也不支持mysql擴展了)

--with-xmlrpc \ (使PHP支持XML-RPC,即XML遠程方法調用)

--with-openssl \ (使PHP編譯安裝openssl模塊,加密傳輸https時用到的)

--with-zlib[=DIR] \ (配置gd庫的支持包zlib,zlib是提供數據壓縮用的函式庫)

--with-freetype-dir[=DIR] \ (配置gd庫的支持包freetype,FreeType庫是一個徹底免費(開源)的、高質量的且可移植的字體引擎)

--with-png-dir[=DIR] \ (配置gd庫的支持包libpng)

--with-jpeg-dir[=DIR] \ (配置gd庫的支持包libjpeg)

--with-gd \ (靜態編譯gd庫)

--with-iconv=/usr/local/libiconv \ (iconv命令能夠將一種已知的字符集文件轉換成另外一種已知的字符集文件)

--enable-sockets \ (打開對socket的支持)

--enable-zend-multibyte \ (支持zend的多字節)

--enable-soap \ (打開對soap的支持,簡單對象訪問協議是交換數據的一種協議規範,是一種輕量的、簡單的、基於XML的協議,它被設計成在WEB上交換結構化的和固化的信息)

--enable-mbstring \ (打開對多字節多字符串的支持)

--enable-static \ (生成靜態連接庫,在編譯過程當中,就將靜態庫中的代碼載入程序,由今生成出的可執行程序在運行中再也不須要靜態庫,但由於庫中的程序代碼被複制進目標程序中,所以生成的程序體積會比較大)

--enable-gd-native-ttf \  (支持TrueType字符串函數庫)

--with-mcrypt \ (mcrypt算法擴展)

--with-mhash \  (mhash算法擴展)

--with-curl \ (打開curl瀏覽工具的支持)

--with-xsl \ (打開XSLT 文件支持,擴展了libXML2庫 ,須要libxslt軟件)

--enable-ftp \ (打開對ftp的支持)

--with-libxml-dir \ (打開libxml2庫的支持)

--enable-pcntl \ (擴展能夠支持php的多線程操做)

--enable-bcmath \ (打開圖片大小調整,用到zabbix監控的時候用到了這個模塊)

--enable-fpm (打開對php-fpm的支持)

(注:上述爲編譯安裝的配置選項相對比較完整,能夠選擇性配置,但也有一些配置選項沒有給出,另外,因爲php已經集成GD庫,但前提是支持包應事先安裝,如zlib, png, jpeg, freetype等)

5. 針對上述安裝過程當中出現的報錯,找出未安裝的擴展,使用yum或下載源碼包進行手動編譯安裝進行安裝後再從新編譯安裝PHP

6. PHP安裝完成,進行配置,進入/usr/local/php-5.6.15/etc 中,發現沒有php.ini文件,這時應該將安裝包目錄 /tmp/php-5.6.15 下的php.ini-production 複製到 /usr/local/php-5.6.15/etc 下

1

# cp /tmp/php-5.6.15/php.ini-production php.ini

(注:php.ini-development 適合開發程式使用,即測試用,php.ini-production 擁有較高的安全性設定,則適合上線當產品使用,通常將php.ini-production修改成php.ini,確保測試環境(本地)與正式環境(線上)一致。這裏關於PHP的相關配置這裏不作闡述)

7. 將 /usr/local/php-5.6.15/bin 添加到系統環境變量中,方便使用php和phpize等命令

1

# vi /etc/profile

在打開的文件末尾加上 export PATH="$PATH:/usr/local/php-5.6.15/bin" ,保存文件後重啓系統便可

8. 運行php,PHP的運行至關於運行php-fpm

1

# /usr/local/php-5.6.15/bin/php-fpm -c /usr/local/php-5.6.15/etc/php.ini -y /usr/local/php-5.6.15/etc/php-fpm.conf

最後,簡單說下PHP的開機啓動設置,由於通常的開機啓動軟件都應該被做爲一項系統服務保存在 /etc/rc.d/init.d 中,因此php-fpm也應該做爲一個可運行文件存在於該目錄下(與MySQL的mysqld以及Apache的httpd類似),然而進入該目錄下並未發現php-fpm,不要緊,那咱們就本身寫一個腳本吧。具體腳本以下,能夠直接在 /etc/rc.d/init.d 下新建一個php-fpm文件,複製下面代碼,修改響應配置與本身所安裝的PHP環境相同便可。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

#!/bin/bash

#

# Startup script for the PHP-FPM server.

#

# chkconfig: 345 85 15

# description: PHP is an HTML-embedded scripting language

# processname: php-fpm

# config: /usr/local/php-5.6.15/etc/php.ini

  

# Source function library.

. /etc/rc.d/init.d/functions

  

PHP_PATH=/usr/local/php-5.6.15

DESC="php-fpm daemon"

NAME=php-fpm

# php-fpm路徑

DAEMON=$PHP_PATH/sbin/$NAME

# 配置文件路徑

CONFIGFILE=$PHP_PATH/etc/php-fpm.conf

# PID文件路徑(在php-fpm.conf設置)

PIDFILE=$PHP_PATH/var/run/$NAME.pid

SCRIPTNAME=/etc/init.d/$NAME

  

# Gracefully exit if the package has been removed.

test -x $DAEMON || exit 0

  

rh_start() {

  $DAEMON -y $CONFIGFILE || echo -n " already running"

}

  

rh_stop() {

  kill -QUIT `cat $PIDFILE` || echo -n " not running"

}

  

rh_reload() {

  kill -HUP `cat $PIDFILE` || echo -n " can't reload"

}

  

case "$1" in

  start)

        echo -n "Starting $DESC: $NAME"

        rh_start

        echo "."

        ;;

  stop)

        echo -n "Stopping $DESC: $NAME"

        rh_stop

        echo "."

        ;;

  reload)

        echo -n "Reloading $DESC configuration..."

        rh_reload

        echo "reloaded."

  ;;

  restart)

        echo -n "Restarting $DESC: $NAME"

        rh_stop

        sleep 1

        rh_start

        echo "."

        ;;

  *)

         echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2

         exit 3

        ;;

esac

exit 0

以後能夠經過使用service 命令進行操做

1

2

3

# service php-fpm start 啓動php-fpm,

# service php-fpm stop 關閉php-fpm,

# service php-fpm restart重啓php-fpm

使用chkconfig 命令添加、刪除和查看系統開機自啓動服務

1

2

3

# chkconfig --list 顯示開機能夠自動啓動的服務

# chkconfig --add php-fpm 添加開機自動啓動php-fpm服務

# chkconfig --del php-fpm 刪除開機自動啓動php-fpm服務

好了,關於PHP的安裝基本上就完成啦~

相關文章
相關標籤/搜索