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
先創建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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.