安裝環境是Ubuntu13.10版本i386,已經安裝好nginx服務器和mysql服務器,現在的任務是需要安裝php和memcache。直接干貨,多余的不說。
由於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開發了。
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 rootmemcached服務的啟動參數說明:
-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文件,會與上圖報同樣的錯誤。從此處也可以說明,上述兩種安裝方式都是殊途同歸,原理都一樣。