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