歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> linux安裝php與memcache過程記錄

linux安裝php與memcache過程記錄

日期:2017/3/3 16:58:57   编辑:關於Linux

安裝環境是Ubuntu13.10版本i386,已經安裝好nginx服務器和mysql服務器,現在的任務是需要安裝php和memcache。直接干貨,多余的不說。

1、php安裝及錯誤排查

由於php安裝前需要安裝很多庫文件,因此需要耐心得按照一定的順序來安裝。我按照如下順序安裝:

zlib -> freetype -> libxml2 -> libpng -> libgd2 -> libmcrypt

其中的也有依賴關系的是,安裝gd2需要用到zlib、freetype、libpng(libjpeg)等,因此需要先安裝這些之後再安裝gd2。這裡的安裝按照通用目錄配置到/usr/local/xxx目錄下,一般不會出現問題,可能在安裝freetype時會出現問題:

注意,安裝freetype時有可能提示如下錯誤:
 either set the LIBPNG_CFLAGS and LIBPNG_LDFLAGS environment variables
 
這是提示找不到libpng的安裝位置,所以需要將libpng的bin目錄配置到環境變量中:
解決方法:
編輯:vi /etc/profile
LIB_PNG=/usr/local/libpng/bin
PATH=$LIB_PNG:$PATH  
export PATH 
生效:.  /etc/profile
這裡我想記錄一下的是我安裝GD2的時候沒有報錯,安裝成功了。但是後來安裝php的時候,在配置中配置好GD2的安裝目錄後,出現錯誤,而且configure是沒問題,是在安裝的時候出錯的,要知道安裝php的時候configure本來就要很久,然後沒錯,make的時候也要很久,這樣等了很久很久之後突然說編譯出錯,真的是有點崩潰。錯誤如下:
/usr/local/src/php-5.5.6/ext/gd/gd.c:57:22: error: X11/xpm.h: No such file or directory
make: *** [ext/gd/gd.lo] Error 1
說明:這是提示沒有安裝libXpm庫,是在安裝gd2庫的時候沒有配置開啟。

這樣我去查之前配置安裝gd2的時候提示,確實發現對libXpm庫不支持,如下:

** Configuration summary for libgd 2.1.0:
   Support for Zlib:                 yes
   Support for PNG library:          yes
   Support for JPEG library:         no
   Support for VPX library:          no
   Support for TIFF library:         no
   Support for Freetype 2.x library: yes
   Support for Fontconfig library:   no
   Support for Xpm library:          no
   Support for pthreads:             yes

因此,解決辦法就是去下載libXpm庫安裝:

sudo apt-get install libXpm-dev
這樣安裝後本以為可以了,就去重新安裝gd2庫,在配置gd2的時候多加一條 --with-xpm=/usr/lib。

但是配置時會提示找不到xpm庫,這裡我上網找到了解決辦法,在/usr/lib下面建立軟連接文件到真實的xpm庫文件,如下:

ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.a  /usr/lib/libXpm.a
 ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so  /usr/lib/libXpm.so
 ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so.4  /usr/lib/libXpm.so.4
 ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so.4.11  /usr/lib/libXpm.so.4.11

操作完成之後,就可以重新安裝gd2庫了,配置完成成功:

\

會發現 "Support for Xpm library : yes"這一項,說明配置成功,然後make && make install即可完成安裝gd2庫。

接著安裝所有庫文件完成後,可以配置php安裝了,由於之前,配置成功,編譯出錯,因此這次配置的時候需要加入 --with-xpm-dir=/usr/lib/這一項才能編譯成功。完整配置如下:

 ./configure \  
  --prefix=/usr/local/php5.5 \    
  --with-libxml-dir=/usr/local/libxml2/ \  
  --with-png-dir=/usr/local/libpng/ \  
  --with-freetype-dir=/usr/local/freetype/ \  
  --with-gd=/usr/local/gd2/ \  
  --with-zlib-dir=/usr/local/zlib/ \  
  --with-mcrypt=/usr/local/libmcrypt/ \  
  --with-xpm-dir=/usr/lib/ \  
  --with-mysql \  
  --with-mysqli \  
  --enable-pdo \  
  --with-pdo-mysql \   
  --with-iconv \ 
  --enable-soap \  
  --enable-mbstring=all \  
  --enable-sockets \
  --enable-fpm
這樣configure和make、make install之後,就可以完成php的安裝。然後使用
sudo /usr/loca/php5.5/sbin/php-fpm
開啟php-fpm服務,可以將這條命令加入到/etc/rc.local文件中作為自啟動服務。

在nginx的配置文件中添加對php的支持即可使用php開發了。

2、安裝memcache及錯誤處理

memcache分為服務器端和php擴展,服務器端使用memcached表示,完成所有數據的存儲刪除等各種管理,php擴展是php使用memcache的一個擴展庫,用memcache表示,用於調用和訪問系統的memcache服務,直接在php中使用new Memcache即可。

(1)首先需要安裝服務器,這個直接使用ubuntu的默認安裝即可:

sudo apt-get install memcached

安裝完Memcache服務端以後,使用如下命令啟動服務:

memcached -d -m 128 -p 11111 -u root
memcached服務的啟動參數說明:
-p <num> TCP監聽的端口,默認是11211
-l <addr> 連接的IP地址, 默認是本機
-d 啟動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在運行的memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務
-u <username>  運行身份 (僅在以root運行的時候有效)
-m <num> 最大內存使用,單位MB。默認64MB
-M  內存耗盡時返回錯誤,而不是刪除項
-c <num> 最大同時連接數,默認是1024
-C 禁止使用CAS
-P <file> 設置PID保存的文件名,僅僅和 -d 選項一起調用
-f  <factor> 塊大小增長因子,默認是1.25-n 最小分配空間,key+value+flags默認是48
-t <num> 使用的線程數目,默認是4
-b  設置備份日志隊列的大小,默認是1024
-R  設置每個事件的最大請求數目,默認是20
-h 顯示幫助

可以從下圖查看memcached服務器是否開啟:

\

可以看到11211端口以處於LISTEN狀態,說明memcached服務器已經開啟。

(2)安裝memcache客戶端

這個安裝其實就是在php已經安裝完成的基礎上,給php安裝新的擴展,就類似為一個沒有配置安裝socket的php在不卸載php的前提下重新安裝一個socket的擴展的原理類似。

首先可以使用php自帶的pecl安裝程序:

/usr/local/php5.5/bin/pecl install memcache
其次也可以用如下命令下載源碼包後解壓安裝:
wget http://pecl.php.net/get/memcache-2.2.6.tgz
但是我遇到的問題是,不論使用上述哪個方法,最終的結果都是要使用phpize工具為memcache生成配置文件,而這個需要autoconf這個庫,從之前安裝php的配置中可以看出,我並有安裝autoconf庫,因此我使用上述兩種方法安裝都會報同樣的錯:

\
同樣,當我使用源碼包安裝的時候,進入到memcache源碼包後,需要使用/usr/local/php5.5/bin/phpize工具來生成configure文件,會與上圖報同樣的錯誤。從此處也可以說明,上述兩種安裝方式都是殊途同歸,原理都一樣。

Copyright © Linux教程網 All Rights Reserved