废话不多说,有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();