Nginx+PHP-FPM環境搭建

1) 編譯nginx


先創建www用戶:


groupadd www
useradd -M -g www www


先下載nginx源代碼,本文以nginx-0.8.46爲例,下載地址在http://www.nginx.org/download/nginx-0.8.46.tar.gz,具體下載過程略。以下執行過程都是在root用戶下執行的,這點請注意。


下載後先解壓到當前目錄:


tar xzvf nginx-0.8.46.tar.gz


進入解壓後的目錄:


cd nginx-0.8.46


安裝pcre及openssl支持:


centos:yum install pcre-devel openssl-devel
ubuntu:apt-get install libpcre3-dev, libssl-dev


編譯nginx:
    
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_perl_module
make && make install


最後編輯/usr/local/nginx/conf/nginx.conf文件後,直接啓動:


/usr/local/nginx/sbin/nginx


2) 編譯PHP


先至php.net下載php源碼包,本文用的是php-5.3.6,下載後解壓並進入解壓後的目錄


wget http://us2.php.net/get/php-5.3.27.tar.gz/from/cn2.php.net/mirror


安裝libxml2-dev等信賴


ubuntu:apt-get install libxml2-dev, autoconf
centos:yum install libxml2-devel autoconf


配置並編譯php:


./configure --prefix=/usr/local/php --enable-fpm --enable-mysqlnd
make && make install


編譯成功後,執行:


cp php.ini-product /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf


然後就是編譯需要的擴展,在源碼包的ext目錄下,可自行編譯其他擴展,這裏着重講下如下編譯oci8.so及pdo_oci.so


先去網站http://www.oracle.com/technetwork/topics/linuxsoft-082809.html上下載10.2.0.4的client包和sdk包,分別是:
oracle-instantclient-basic-10.2.0.4-1.i386.zip
oracle-instantclient-devel-10.2.0.4-1.i386.zip
這兩個,下載好後,解壓oracle-instantclient-basic-10.2.0.4-1.i386.zip文件到/opt/oracle下,並改名爲instantclient,最終目錄爲:/opt/oracle/instantclient/
然後,再將oracle-instantclient-devel-10.2.0.4-1.i386.zip文件解壓,解壓後將解壓出來的SDK文件夾複製到/opt/oracle/instantclient/下,最終路徑爲:/opt/oracle/instantclient/sdk/
接下來需要建立兩個軟鏈接:
cd /opt/oracle/instantclient
ln –s libclntsh.so.11.1 libclntsh.so
ln –s libocci.so.11.1 libocci.so


然後再添加lib庫位置:
cd /etc/ld.so.conf.d
vim liboci.conf  //添加一行:/opt/oracle/instantclient
ldconfig


最後需要設置環境變量
export ORACLE_HOME=/opt/oracle/instantclient
export TNS_ADMIN=/opt/oracle/instantclient
export NLS_LANG=American_America.ZHS16GBK
export LD_LIBRARY_PATH=/opt/oracle/instantclient


都設置好後,就可以開始編譯OCI8及PDO_OCI擴展了,具體編譯比較簡單,跟編譯普通的擴展差不多,唯一需要注意的就是在./configure這一步的參數設置,編譯oci8.so時,參數爲:
./configure --with-php-config=/usr/local/php53/bin/php-config --with-oci8=share,instantclient,$ORACLE_HOME
編譯PDO_OCI時的編譯參數爲:
./configure --with-php-config=/usr/local/php53/bin/php-config --with-pdo-oci=instantclient,$ORACLE_HOME,10.2.0.4


其他則按照正常的步驟編譯便可。


在編譯好後,測試PDO和OCI連接時,發現無法訪問數據庫,老是報錯說字符集設置錯誤,百思不得其解,後來纔在網友的文章中瞭解原來要把環境變量設置到php-fpm.conf中,真是無語。


http://blog.sina.com.cn/s/blog_57c70e190101cdq1.html


3) 編譯mysql


先創建mysql用戶:


        groupadd mysql
        useradd -g mysql mysql
    
下載MYSQL源碼包,我這裏用的是mysql-5.5.20.tar.gz,下載之後解壓到當前目錄,並進入。並安裝cmake:


        apt-get install cmake


然後執行:


        cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DEXTRA_CHARSETS=all


如果在編譯過程中遇到以下錯誤:
    
        Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)  
        CMake Error at cmake/readline.cmake:83 (MESSAGE):
        Curses library not found.  Please install appropriate package, remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.


則需要先安裝libncurses5-dev:


        apt-get install libncurses5-dev


安裝完成後,先執行:


        rm -f CMakeCache.txt


再重新執行上面的cmake命令,如果又發現了以下錯誤:


        Warning: Bison executable not found in PATH


則嘗試安裝:
        
        apt-get install libbison-dev


之後繼續重新執行上面的cmake命令,發現繼續錯誤:


        CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found


這個是g++沒有正常安裝,安裝之:


        apt-get install g++


這次重新再執行cmake命令後就順序完成了,接着再:


        make && make install


一般情況下基本不會發生問題,順利編譯成功。接下來拷貝配置文件:


        cp support-files/my-huge.cnf /usr/local/mysql/my.cnf
        cp support-files/mysql.server /etc/init.d/mysql


設置用戶權限:


        chmod +x /etc/init.d/mysql 
        chown mysql:mysql -R /usr/local/mysql


創建數據庫:


        /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql


啓動mysql:


        /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &


如果要更改密碼:


        /usr/local/mysql/bin/mysqladmin -u root password 'password' 


4). 編譯FastDFS


fastdfs版本:v3.11
下載地址:http://fastdfs.googlecode.com/files/FastDFS_v3.11.tar.gz


本來想安裝最新版v4.05,結果發現v4.05版本下的php擴展無法正常編譯,總是報錯,網方多方搜索未果,只好改爲v3.11版,不過v3.11版不支持nginx模塊,只能使用內置的http服務器。


在安裝FastDFS之前,需要先安裝libevent-dev,如果是ubuntu,可以直接


apt-get install gcc libevent-dev


然後是FastDFS的編譯過程:


wget http://fastdfs.googlecode.com/files/FastDFS_v3.11.tar.gz
tar xzvf FastDFS_v3.11.tar.gz
cd FastDFS


到這一步後先修改一些東西,首先用vim打開make.sh文件


vim make.sh


找到這一行


#WITH_HTTPD=1


修改爲


WITH_HTTPD=1


再設置fastdfs安裝目錄,找到


TARGET_PREFIX=/usr/local


修改成


TARGET_PREFIX=/usr/local/fdfs


接下來就可以開始安裝了,執行


./make.sh
./make.sh install


如果安裝過程中出現這個錯誤(在我的ubuntu12.10上出現,10.10server上未發現)


make: *** [fdfs_monitor] 錯誤 1


則很可能是libpthread.so或libpthread.a文件位置不正確,可以執行


find / -name 'libpthread.a'
find / -name 'libpthread.so'


然後將搜索結果替換make.sh文件中的這一行,也就是將


if [ -f /usr/lib/libpthread.so ] || [ -f /usr/local/lib/libpthread.so ] || [ -f /usr/lib64/libpthread.so ] || [ -f /usr/lib/libpthread.a ] || [ -f /usr/local/lib/libpthread.a ] 
|| [ -f /usr/lib64/libpthread.a ]; then


修改爲


if [ -f /usr/lib/libpthread.so ] || [ -f /usr/local/lib/libpthread.so ]; then


然後再重新安裝即可。安裝好後,先新建幾個文件夾,當然這只是我的習慣,你可以自定義新建到其他地方


mkdir /usr/local/fdfs/trackerd /usr/local/fdfs/storaged /usr/local/fdfs/client /usr/local/fdfs/storaged/store


然後修改配置文件,配置文件位置:/etc/fdfs/,需要注意的是有些文件的最後一行是


##include http.conf


需修改成


#include http.conf

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