淘先锋技术网

首页 1 2 3 4 5 6 7
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