废话不多说,有lamp的编译安装就要有lnmp的编译安装。

原创博文来自:www.51niux.com  博主:忙碌的柴少

关于下面的yum,可能看着yum有点多,但这都是我不同版本搭建安装汇总出来需要yum的库文件,基本按照我这个yum安装完毕,编译的时候是不会报错的。

操作系统版本:Centos 6.4 64位

nginx版本:1.5.7

mysql版本:5.5.53

php版本:5.3.27

一、mysql的编译安装

mkdir /tools
cd /tools/
yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* mysql-devel
wget http://www.cmake.org/files/v2.8/cmake-2.8.8tar.gz
tar zxf cmake-2.8.8.tar.gz
cd  cmake-2.8.8
make && make install
./configure && make && make install
cd /tools/
wget downloads.mysql.com/archives/get/file/mysql-5.5.35.tar.gz
tar zxf mysql-5.5.35.tar.gz
cd mysql-5.5.35
/usr/local/bin/cmake \
-DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.35 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/mysqldata \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
make && make install
useradd mysql -s /sbin/nologin -M
chown -R mysql:mysql /application/mysql-5.5.35
ln -s /application/mysql-5.5.35  /application/mysql
cp support-files/mysql.server  /etc/init.d/mysqld
cp support-files/my-small.cnf /etc/my.cnf
chmod 755 /etc/init.d/mysqld
chown mysql:mysql /etc/my.cnf
mkdir /mysqldata
chown mysql:mysql /mysqldata
/application/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/application/mysql --datadir=/mysqldata

vi /etc/profile

PATH=$PATH:/application/mysql/bin
export PATH

soure /etc/profile

#/usr/local/bin/cmake  知道前面为什么要安装cmake了吧,mysql5.5以后是通过cmake编译安装的

#-DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.35  指定mysql安装位置

#-DMYSQL_UNIX_ADDR=/tmp/mysql.sock  sock套接字位置

#-DDEFAULT_CHARSET=utf8  默认字符集是utf8,其实还有个utf8mb4,这个是应对古字四字节的,先提一下,这个四字节的古字在utf8上面显示是乱码的,自5.5.3系列之后才有了utf8mb4字符集。

#-DDEFAULT_COLLATION=utf8_general_ci 默认字符校对

#-DEXTRA_CHARSETS=all  扩展字符集我这里选择所有,不吃字符集缺失的亏

#-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_DATADIR=/mysqldata   指定数据库的位置

#-DMYSQL_USER=mysql   指定mysql用户

#-DMYSQL_TCP_PORT=3306  指定TCP端口为3306

二、 nginx 的编译安装

cd /tools/
yum install openssl* libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel ncurses ncurses-devel curl curl-devel gd gd2 gd-devel gd2-devel -y
wget http://sourceforge.net/projects/pcre/files/pcre/8.32/pcre-8.32.tar.gz/download
tar zxf pcre-8.32.tar.gz
cd pcre-8.32
./configure
make && make install
cd /tools
useradd cspweb -s /sbin/nologin  -M
wget http://nginx.org/download/nginx-1.5.7.tar.gz
tar zxf nginx-1.5.7.tar.gz
cd nginx-1.5.7
./configure  --user=cspweb --group=cspweb --prefix=/application/nginx-1.5.7 --with-http_stub_status_module --with-http_ssl_module
make && make install
echo "/usr/local/lib" >>/etc/ld.so.conf
ln -s /application/nginx-1.5.7 /application/nginx

#--with-http_stub_status_module  这个模块可以取得nginx的一些运行状态,是监控模块

#--with-http_ssl_module   支持ssl,443端口嘛,这个肯定是要加载的,nginx经常跟ssl结合用

三、PHP的编译安装

cd /tools

yum install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel libxslt-devel -y

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz  #装这个是为支持编码转化,具体作用可百度
cd libiconv-1.14
./configure  --prefix=/usr/local/libiconv
make && make install
cd /tools
wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0
tar zxf libmcrypt-2.5.8.tar.gz  #作用:libmcrypt是加密算法扩展库
cd libmcrypt-2.5.8
./configure
make && make install
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make&&make install
cd /tools
wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
tar zxf mhash-0.9.9.9.tar.gz  #hash算法扩展库
cd mhash-0.9.9.9
./configure
make &&make install
cd /tools
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
tar zxf mcrypt-2.6.8.tar.gz #加密扩展库,加载了它可以用他里面自带的22种加密解密算法
cd mcrypt-2.6.8
/sbin/ldconfig
./configure
make && make install
cd /tools
wget http://www.php.net/get/php-5.3.27.tar.gz/from/this/mirror
tar zxf php-5.3.27.tar.gz
cd php-5.3.27
./configure \
--prefix=/application/php5.3.27 \
--with-mysql=/application/mysql \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--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=cspweb \
--with-fpm-group=cspweb\
--enable-ftp
make&&make install

cp php.ini-production  /application/php/lib/php.ini

cp /application/php5.3.27/etc/php-fpm.conf.default  /application/php5.3.27/etc/php-fpm.conf

#--prefix=/application/php5.3.27  指定php的安装位置
#--with-mysql=/application/mysql  指定mysql安装目录,对mysql的支持
#--with-iconv-dir=/usr/local/libiconv  支持libiconv加密算法
#--with-freetype-dir                打开对freetype字体库的支持
#--with-jpeg-dir                     打开对jpeg图片的支持
#--with-png-dir                       打开对png图片的支持
#--with-zlib-dir                        打开zlib库的支持
#--with-libxml-dir=/usr               打开libxml2库的支持
#--enable-xml                         打开xml文件的支持
#--disable-rpath                      关闭额外的运行库文件
#--enable-safe-mode               打开安全模式(php5.4默认开启,编译就不用加此参数了)
#--enable-bcmath                  打开图片大小调整,用到zabbix监控的时候用到了这个模块
#--enable-shmop                   共享内存操作函数,可以与c/c++通讯
#--enable-sysvsem                 支持信号量,通过信号量,可以实现进程通信,竞争等
#--enable-inline-optimization     支持栈堆指针和优化线程
#--with-curl                       打开curl浏览工具的支持
#--with-curlwrappers              运用curl工具打开url流
#--enable-mbregex                  支持多字符集,支持中文正则截取中文字符串长度
#--enable-fpm                     cgi方式安装的启动程序,CGI的形式以php-fpm启动
#--enable-mbstring                多字节,字符串的支持
#--with-mcrypt                    支持加密算法的扩展
#--with-gd                        打开gb库的支持
#--enable-gd-native-ttf           打开freetype1.*的支持
#--with-openssl                   openssl的支持,加密传输时用到的
#--with-mhash                     支持hash算法的扩展
#--enable-pcntl                   多线程优化
#--enable-sockets                 打开 sockets 支持
#--with-xmlrpc                    打开xml-rpc的c语言
#--enable-zip                     打开对zip的支持
#--enable-soap                    soap扩展主要用来处理RPC形式的Web services
#--enable-short-tags              激活短格式标记
#--enable-zend-multibyte         支持zend的多字节(5.4以后也不用加这个参数了)
#--enable-static                  生成静态链接库
#--with-xsl                      打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
#--with-fpm-user=cspweb          启动的用户
#--with-fpm-group=cspweb         启动的用户组
#--enable-ftp                     打开ftp的支持

注意:可能报两个错误

(1).错误:

ext/xmlrpc/libxmlrpc/.libs/encodings.o: In function `convert':

/root/php-5.2.12/ext/xmlrpc/libxmlrpc/encodings.c:73: undefined reference to `libiconv_open'

/root/php-5.2.12/ext/xmlrpc/libxmlrpc/encodings.c:81: undefined reference to `libiconv'

/root/php-5.2.12/ext/xmlrpc/libxmlrpc/encodings.c:101: undefined reference to `libiconv_close'

collect2: ld returned 1 exit status

make: *** [sapi/cli/php] ?.. 1

解决办法:

vi Makefile

找到下面这行:

EXTRA_LIBS = -lcrypt ...

在最后添加-liconv保存后make通过

(2). 第二个错误:

error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory。

解决办法:

vi /etc/ld.so.conf

/application/mysql/lib #将mysql的lib库填上

[root@test6 ~]# ldconfig    是其生效

 

四、配置

vi /application/nginx/conf/nginx.conf

    location ~ .*\.(php|php5)?$ {
root           html;   #默认的html是nginx软件安装位置下的html目录
fastcgi_pass   127.0.0.1:9000; #这就是php的启动ip加端口
fastcgi_index  index.php;   #首页为index.php
fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
include        fastcgi.conf;
}

 

 /application/nginx/sbin/nginx   #启动nginx

/application/php/sbin/php-fpm   #启动php

vi /application/nginx/html/index.php #编写测试php文件
<?php
phpinfo();