1、準備工做php
一、安裝編譯工具gcc*html
注意解決依賴關係,推薦使用yum安裝,若不能聯網可以使用安裝光盤做爲yum源python
yum install -y gcc*mysql
MySQL編譯須要gcc-c++nginx
二、關閉系統RPM包安裝的apache、MySQL等服務c++
service httpd stop正則表達式
service mysqld stop算法
…sql
肯定rpm包安裝的apache和MySQL不能開機自啓動。數據庫
chkconfig –level 2345 httpd(mysqld) off
…
三、關閉SELinux,防火牆容許80端口訪問。
2、編譯安裝
*每一個源碼包配置編譯安裝完成以後,確認安裝目錄下時候生成安裝文件。
make clean 清除錯誤的編譯文件,而後從新編譯
安裝libxml2
libxml2是一個xmlc語言版的解析器,原本是爲Gnome項目開發的工具,是一個基於MITlicense的免費開源軟件。它除了支持c語言之外,還支持C++、PHP、Pascal、ruby、tcl等語言的綁定,能在Windows、Linux、Solaris、macOS等平臺運行。功能仍是至關強大的。
libxml是一個用來解析XML文檔的函數庫。它用C語言寫成,而且能爲多種語言所調用,例如C語言,C++,XSH,C#、python,kylix/Delphi,和PHP等。Perl中也可使用XML::libxml模塊。它最初是爲GNOME開發的項目。可是如今能夠用在各類各樣的方面。LibXML代碼可移植性很是好。基於標準的ANSIC庫,並採用MIT許可證。
安裝:
yum install -y python-devel #開發環境包,必須裝
tar -zxf libxml2-2.9.1.tar.gz #解壓源碼包
cd libxml2-2.9.1 #進入解壓後的目錄
./configure --prefix=/usr/local/libxml2 #指定安裝目錄,預編譯
make && make install #編譯安裝
安裝libmcrypt
libmcrypt是加密算法擴展庫。支持DES、3DES、RIJNDAEL、Towfish、GOST、GAST-25六、ARCFOUR、SERPENT、SAFER+等算法。
tar -zxf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
make && make install
安裝libltdl(libmcrypt的子源碼包),源碼包在libmcrypt目錄的libltdl目錄。安裝方式能夠經過./configure –help查看。
cd libmcrypt-2.5.8/libltdl/
./configure --enable-ltdl-install
make && make install
安裝mhash(哈希算法)
mhash是基於離散數學原理的不可逆的PHP加密方式擴展庫,其在默認狀況下不開啓。mhash的可用於建立校驗數值,消息摘要,消息確認碼,以及無需原文的關鍵信息保存(如密碼)等。
tar -zxf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure && make && make install
安裝mcrypt
mcrypt是PHP裏面重要的加密支持擴展庫。mcrypt庫支持20多種加密算法和8種加密模式。
tar -zxf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/libmcrypt/lib/:/usr/local/lib ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt/
以上爲一條命令。LD_LIBRARY_PATH用於指定libmcrypt和mhash的庫的位置。--with-libmcrypt-prefix用於指定libmcrypt軟件位置。
make && make install
#libmcrypt沒有安裝完成,這是PHP的模塊,須要等PHP安裝完成以後,再繼續安裝。
安裝zlib
zlib是提供數據壓縮用的函數庫,zlib使用DEFLATE算法,最初是爲libpng函數庫所寫,後來廣泛爲許多軟件所使用。此函式庫爲自由軟件,使用zlib受權。
tar -zxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
vim Makefile #解決小bug在CFLAGS=-O3 -DUSE_MMAP加上-fPIC
make
make install
安裝libpng
libpng軟件包包含libpng庫,這些庫被其餘程式用於解碼png圖片。
tar -zxf libpng-1.2.31.gz
cd libpng-1.2.31
./configure --prefix=/usr/local/libpng
make && make install
安裝jpeg6(用於解碼.jpg和.jpeg圖片)
建立目錄
mkdir /usr/local/jpeg6 存放主程序的目錄
mkdir /usr/local/jpeg6/bin 存放命令的目錄
mkdir /usr/local/jpeg6/lib 存放數據庫的目錄
mkdir /usr/local/jpeg6/include 存放子配置文件的目錄
mkdir -p /usr/local/jpeg6/man/man1 存放幫助手冊的目錄
unzip jpeg-6b.zip
cd jpeg-6b
--enable-shared #創建共享庫
--enable-static #創建靜態庫
yum install -y libtool* 安裝依賴庫(須要拷貝libtool裏的文件,要否則安裝會報錯)
cp /usr/share/libtool/config/config.sub ./
cp /usr/share/libtool/config/config.guess ./ 須要拷貝兩個文件到當前目錄下。
chmod -R 777 * #紅字必作
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable—static
make && make install
安裝freetype
freetype庫是一個開源、高質量的可移植字體引擎,它提供統一的接口來訪問多種字體格式文件,包括TrueType、open type、typel、CID、CFF、WindowsFON/FNT,X11 PCF等。支持單色位圖,反走樣位圖的渲染。Free type庫是高度模塊化的程序庫,雖然它是使用ANSI C 開發,可是採用面向對象的思想,所以,free type的用戶能夠靈活地對它進行裁剪。
tar -zxf freetype-2.3.5.tar
cd freetype-2.3.5
./configure --prefix=/usr/local/freetype
make && make install
安裝GD庫
GD庫是php處理圖形的擴展庫,GD庫提供了一系列用來處理圖片的API,使用GD庫能夠處理圖片,或生成圖片。在網站上GD庫一般用來生成縮略圖,或者用來對圖片加水印,或者用來生成漢字驗證碼。或者對網站數據生成報表等。
mkdir /usr/local/gd2
tar -zxf gd-2.0.35.tar
cd gd-2.0.35
vim gd_png.c
有個png錯誤須要將#include "/png.h" 更改成 #include "/usr/local/libpng/include/png.h"
./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype/ --with-png=/usr/local/libpng/
#若前面配置zlib時沒有指定安裝目錄,gd配置時不要添加--with-zlib=/usr/local/zlib參數。
make && make install
安裝APACHE
APR(apache的可移植運行庫)
主要爲上層的應用程序提供一個能夠跨越多操做系統平臺使用的底層支持接口庫
安裝準備:
tar -zxf httpd-2.4.7.tar.gz #解壓源碼包
#將組件源碼包解壓到apache的安裝目錄下
tar -zxf apr-1.4.6.tar.gz -C httpd-2.4.7/srclib/
tar -zxf apr-util-1.4.1.tar.gz -C httpd-2.4.7/srclib/
對解壓後的包重命名去掉版本號。
mv apr-1.4.6/ apr
mv apr-util-1.4.1/ apr-util
準備好後先安裝pcre
pcre基於prel的兼容正則表達式支持
tar -zxf pcre-8.34.tar.gz
cd pcre-8.34
./configure && make && make install
正式安裝apache
安裝選項:
--sysconfigdir=[主配置文件存放目錄]
--with-included-apr #加載組件一塊安裝
--enable-so #啓用動態庫支持
--enable-deflate=shared #對動態資源可以壓縮
--enable-expires=shared #支持動態超時時間
cd httpd-2.4.7
./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/ --enable-so --with-included-apr --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared
make && make install
/usr/local/apache2/bin/apachectl start #啓動apache
若啓動時提示/usr/local/apache2/modules/mod_deflate.so無權限,可關閉SELinux或者執行命令chcon -t texrel_shlib_t /usr/local/apache2/modules/mod_deflate.so ,相似此類.so文件不能載入或者沒有權限的問題,都是SELinux問題,使用命令「chcon -t texrel_shlib_t [文件名] 」便可解決。MySQL也有相似問題。
安裝數據庫
安裝MySQL依賴包
cmake #oracle收購後添加的一個編譯器,用來代替configure
bison #語法分析程序,兼容不一樣的操做系統。
這三個包能夠直接用yum安裝
yum install -y cmake bison
安裝ncurses
ncurses提供字符終端處理庫,包括面板和菜單。它提供了一套控制光標,創建窗口,改變前景背景顏色以及處理鼠標操做的函數。使用戶在字符終端下編寫應用程序時繞過底層機制,他是一個可使用應用程序直接控制終端屏幕顯示的函數庫。
tar -zxf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --with-shared --without-debug --without-ada --enable-overwrite
make && make install
也可使用yum安裝
若是沒有安裝ncurses執行安裝MySQL的時候會報錯。
-without-ada參數爲設定不編譯爲ada綁定,因進入chroot環境不能用ada
--enable-overwrite參數爲定義把頭文件安裝到/tools/include下而不是/tools/include/ncurses目錄。
useradd mysql #建立數據庫用戶和組
安裝MySQL
tar -zxf mysql-5.5.23.tar.gz
cd mysql-5.5.23
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
make && make install
若是報錯,須要清除緩存,請使用一下命令
make clean
rm CMakeCache.txt
安裝參數:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 安裝位置
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 指定socket(套接字)文件位置
-DEXTRA_CHARSETS=all 擴展字符支持
-DDEFAULT_CHARSET=utf8 默認字符集
-DDEFAULT_COLLATION=utf8_general_ci 默認字符校對
-DWITH_MYISAM_STORAGE_ENGINE=1 安裝myisam存儲引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 安裝innodb存儲引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 安裝memory存儲引擎
-DWITH_READLINE=1 支持readline庫
提供交互式輸出和歷史記錄編輯的文本行工具
-DENABLED_LOCAL_INFILE=1 啓用加載本地數據
-DMYSQL_USER=mysql 指定MySQL的運行用戶
-DMYSQL_TCP_PORT=3306 指定監聽端口
配置MySQL
cd /usr/local/mysql/ #進入安裝完成的目錄
chown -R root ./ #遞歸設置全部文件的屬主爲root
chown -R mysql ./data/ #將數據相關的目錄屬主設置爲mysql
cp support-files/my-medium.cnf /etc/my.cnf #拷貝配置模板文件到/etc目錄下做爲配置文件。
/usr/local/mysql/scripts/mysql_install_db --user=mysql #初始化數據庫
出現兩個OK表示數據庫正常。
/usr/local/mysql/bin/mysqld_safe --user=mysql & #啓動數據庫並放到後臺執行,若是不放在後臺執行,將會佔用當前輸出界面。
/usr/local/mysql/bin/mysqladmin -uroot password 123456 #設置用戶名密碼
/usr/local/mysql/bin/mysql -uroot -p123456 #登錄MySQL
簡單的SQL語句:
show dadabases; #顯示數據庫
use test; #選擇數據庫
show tables; #顯示數據表
\s #顯示字符集
history -c #爲避免被人知道用戶名密碼,建議清空歷史命令。
數據庫開機自啓:
把/usr/local/mysql/bin/mysqld_safe --user=mysql &寫入到/etc/rc.local中。
安裝PHP
編譯前確保系統已經安裝了libtool和libtool-ltdl軟件包。
yum -y install libtool*
yum -y install libtool-ltdl*
php5.4的bug,檢測gd庫有問題,須要手動修改
解決辦法:
vim /usr/local/gd2/include/gd_io.h
typedef struct gdIOCtx
{
…
void (*data); #在typedef struct gdIOCtx模塊中加入此句,注意結尾標點符號
}
tar -zxf php-5.4.25.tar.gz
cd php-5.4.25
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql/ --without-pear
make && make install
注
若前面配置zlib時沒有指定安裝目錄,PHP配置時不要添加--with-zlib-dir=/usr/local/zlib
參考老男孩參數:
(./configure --prefix=/application/php-5.3.27 --with-mysql=/application/mysql/ --with-iconv-dir=/application/libiconv/ --with-freetype-dir --with-jpeg-dir --with-zlib --with-libxml-dir=/usr/ --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-short-tags --enable-zend-multibyte --enable-static --with-xsl --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp)
編譯參數:
--prefix=/usr/local/php/ #軟件安裝路徑
--with-config-file-path=/usr/local/php/etc/ #指定主配置文件目錄
--with-apxs2=/usr/local/apache2/bin/apxs #指定apache動態模塊位置
--with-mysql=/usr/local/mysql/ #指定MySQL位置
--with-libxml-dir=/usr/local/libxml2/ #指定libmxl位置
--with-jpeg-dir=/usr/local/jpeg6/ #指定jpeg位置
--with-png-dir=/usr/local/libpng/ #指定libpng位置
--with-freetype-dir=/usr/local/freetype/ #指定freetype位置
--with-gd=/usr/local/gd2/ #指定gd庫位置
--with-mcrypt=/usr/local/libmcrypt/ #指定libmcrypt位置
--with-mysqli=/usr/local/mysql/bin/mysql_config #指定mysqli的位置
mysqli擴展容許用戶訪問由MySQL4.1或更高版本所提供的功能。經MySQL AB受權mysql(指PHP中的模塊)發展到如今顯得比較凌亂,有必要從新作下整理。同時有必要跟上MySQL(DBMS)的發展步伐,加入新的特性的支持,以及適應MySQL(DBMS)之後的版本。因此誕生了mysqli.dll
--enable-soap #支持soap服務
SOAP是基於XML的簡易協議,可以使應用程序在HTTP之上進行信息交換。或者更簡單地說:SOAP是用於訪問網絡服務的協議。
--enable-mbstring=all #支持多字節,字符串
--enable-sockets #支持套接字
--with-pdo-mysql=/usr/local/mysql/ #啓用mysql的pdo模塊支持
--without-pear #步安裝pear(安裝pear須要鏈接互聯網)
注:查看編譯時使用的參數 ./sbin/php-fpm -i | grep configure
mkdir /usr/local/php/etc
cp php.ini-production /usr/local/php/etc/php.ini
vim /usr/local/apache2/etc/httpd.conf
編輯apache配置文件,找到AddType字段在後面加:AddType application/x-httpd-php .php .phps .phtml將php相關的資源交由php執行。
找到DirectoryIndex index.html在後面加上index.php默認加載php主頁。
vim /usr/local/apache2/htdocs/index.php #編寫php模塊測試文件
vim /usr/local/apache2/htdocs/mysql.php #編寫MySQL數據庫鏈接測試文件
編輯/etc/rc.local加入一下兩句,服務開機自啓。
/usr/local/apache2/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe --user=mysql &
Nginx配合PHP配置以下:
配置PHP引擎配置文件php.ini
cp php.ini-production /application/php/lib/php.ini
php.ini-development模板適用於開發環境、php.ini-production模板適用於生產環境。開發環境更可能是開啓日誌調試信息。而生產環境都是關閉狀態(off)
配置PHP服務的配置文件php-fpm.conf
這裏使用的默認配置,沒有作任何改動。
啓動PHP服務php-fpm
/application/php/sbin/php-fpm
檢查端口狀況:netstat -natp | grep 9000 (默認使用9000端口)
配置nginx支持PHP
vim nginx.conf
server區域增長一個location區域
lication ~ .*\.(php|php5)?${
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
增長默認首頁文件index.php
location / {
root html;
index index.html index.htm index.php;
}
從新加載文件nginx
/application/nginx/sbin/nginx -s reload
編輯測試頁面:
vim test_info.php
<?php
phpinfo();
?>
vim test_mysql.php
<?php
$link=mysql_connect('localhost','','') or mysql_error();
if ($link)
{
echo "mysql successful";
}else
{
echo mysql_error();
}
?>
最後訪問測試。